Jump to content

Question about if condition

- - - - -

  • Please log in to reply
4 replies to this topic

#1
newphpcoder

newphpcoder

    Programming Professional

  • Members
  • PipPipPipPipPipPip
  • 479 posts
Good day!

I have if condition in my code and it is for checking the input data from the user or client.

Here is my if statement:

if($_POST["from1_date"] && $_POST["to1_date"] && $_POST["shift1"])



this code is work when i insert in the text field the from date, to date and the shift. I have 3 types of shift. For example I input from 2011-01-01 to 2011-01-02 shift 1-6 all the data that the shift is 1-6 is appear. My problem now is when i did not input shift no data was appear. I want to happen is when I did not input shift all the data from date to date will appear.

Any help is highly appreciated.

Thank you

#2
ghost_x47

ghost_x47

    Learning Programmer

  • Members
  • PipPipPip
  • 45 posts
Try to nest conditions.
And variables better check with isset() and empty() function, or even better with preg_match to verify it.
You can split up this condition into 2 - first about dates, second about shift. And then you need to nest second in first, so you will have a 3 workflow paths.
Like this

if($_POST['from1_date'] && $_POST['to1_date'])

{

    if($_POST['shift1'])

    {

        //shift and dates set - use all of this

    }

    else

    {

        //shift not set - just use dates

    }

}

else

{

    //not doing anything - don't have any dates set

}



#3
newphpcoder

newphpcoder

    Programming Professional

  • Members
  • PipPipPipPipPipPip
  • 479 posts
How can i used isset and empty in my if statement. I really want is if the shift textarea is blank the from and to date will satisfied.


Thank you

#4
ghost_x47

ghost_x47

    Learning Programmer

  • Members
  • PipPipPip
  • 45 posts

if(isset($_POST['from1_date']) && !empty($_POST['from1_date']) && preg_match ("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/",$_POST['from1_date']))//for to1_date it's the same -you can actually create a function checkDate and past all of this and additional checks in that and then just use in if statement, if(checkDate($_POST['from1_date'])&&checkDate($_POST['to1_date']))

For shifts you can also use this kind of checks. For better understanding what's going on here - try to search some tutorials or articles for data validating in this forum or in the web. I'm sure you will find it.

#5
newphpcoder

newphpcoder

    Programming Professional

  • Members
  • PipPipPipPipPipPip
  • 479 posts
Good day!

Thank you for the suggested logic and code. By the way here is my whole code:


<?php

  elseif($_POST["from1_date"] && $_POST["to1_date"] && $_POST["shift1"])

        {

            $from_date = mysql_real_escape_string($_POST['from1_date']); 

            $to_date = mysql_real_escape_string($_POST['to1_date']); 

            $shift = mysql_real_escape_string($_POST['shift1']);

                           

        $Batch_yield = 0;

        $c_input = 0;

        $co_output = 0;

        $loopctr = 0;

        $totalloop = 0;

           

    

         $query = "SELECT d.operation_name, SUM(d.input_qty) AS inputqty, SUM(d.output_qty) AS outputqty FROM traceability d, plt_transact t WHERE t.plt_date BETWEEN '$from_date' AND '$to_date' AND d.shift = '$shift'  AND d.operation_name IN ('01 Oper', '02 Oper', '03 Oper', '04 Oper' , '05 Oper' , '06 Oper' , '07 Oper', '08 Oper' , '09 Oper' , '10 Oper') GROUP BY d.operation_name ORDER BY d.operation_name";

            $result = mysql_query($query);

            if($result)

                {

                echo "<table cellspacing='2' style='font-family: arial narrow; font-size: 12px; border-width: 2px 2px 2px 2px; border-style: solid;'>";

                

                echo "<tr>";

                echo "<tr><b> From Date:    " . $_POST['from1_date'] . "</b></tr>";

                echo "<tr><b> To     Date:    " . $_POST['to1_date'] . "</b></tr>";

                echo "<tr><b> Shift Date:    " . $_POST['shift1'] . "</b></tr>";

                echo "<th class='tdclass'>PLT #</th>";

                $total_row = mysql_num_rows($result);

                $total_columns = $total_row;

                for($ctr=0; $ctr < $total_row; $ctr++)

                    {

                    $opname = mysql_result($result,$ctr,"operation_name");

                    $i = strpos($opname," ",0);

                    $opname = substr($opname,$i);

                    echo "<th colspan='3' class='tdclass'>" . $opname . "<br /></th>";

                    }

                echo "<th class='tdclass'>Batch Yield</th>";

                echo "</tr>";

                

                echo "<tr>";

                echo "<td class='tdclass'></td>";

                

                for($ctr=0; $ctr < $total_row; $ctr++)

                    {

                    

                    echo "<td class='tdclass'>Input</td>";

                    echo "<td class='tdclass'>Output</td>";

                    echo "<td class='tdclass'>Yield</td>";

                    }

                

                echo "<td class='tdclass'>";

                echo "</td>";

                    

                echo "</tr>";

                        

                }

 

     

     $query = "SELECT DISTINCT p.plt_no FROM plt_transact p, traceability t WHERE plt_date BETWEEN '" . $_POST["from1_date"] . "' AND '" . $_POST["to1_date"] . "' AND t.shift = '" . $_POST["shift1"] . "' AND p.plt_transact_id = t.plt_transact_id";

        $result_loop = mysql_query($query);               

        while($row = mysql_fetch_array($result_loop))

            {

            $loopctr += 1;

            $plt_no = $row["plt_no"];

            $query = "SELECT * FROM plt_transact WHERE plt_no = '$plt_no'";

            $result_no = mysql_query($query);

            if($result_no)

                {

                if(mysql_num_rows($result_no) > 0)

                    {

                    $chemical_input = 0;

                    $core_output = 0;

                    

                    $query  = "SELECT SUM(t.output_qty) AS c_input FROM traceability t, plt_transact p WHERE t.plt_transact_id = p.plt_transact_id AND t.operation_name='01 Oper' AND p.plt_no = '$plt_no'";

                    $resultyield = mysql_query($query);

                    if($resultyield)

                        {

                        if(mysql_num_rows($resultyield) > 0) $c_input = $c_input + mysql_result($resultyield,0,"c_input");

                       

                        }

                    

                    $query  = "SELECT SUM(t.output_qty) AS co_output FROM traceability t, plt_transact p WHERE t.plt_transact_id = p.plt_transact_id AND t.operation_name='10 Oper' AND p.plt_no = '$plt_no'";

                    $resultyield = mysql_query($query);

                    if($resultyield)

                        {

                        if(mysql_num_rows($resultyield) > 0) $co_output = $co_output + mysql_result($resultyield,0,"co_output");

                  

                        }

                        

                    $PLT_yield = @($co_output / $c_input) * 100;

                    

                    $query  = "SELECT SUM(t.input_qty) AS c_input FROM traceability t, plt_transact p WHERE t.plt_transact_id = p.plt_transact_id AND t.operation_name='01 Oper' AND p.plt_no = '$plt_no'";

                    $resultyield = mysql_query($query);

                    if($resultyield)

                        {

                        if(mysql_num_rows($resultyield) > 0) $c_input = $chem_input + mysql_result($resultyield,0,"c_input");

                        }

                    

                    $query  = "SELECT SUM(t.output_qty) AS co_output FROM traceability t, plt_transact p WHERE t.plt_transact_id = p.plt_transact_id AND t.operation_name='10 Oper' AND p.plt_no = '$plt_no'";

                    $resultyield = mysql_query($query);

                    if($resultyield)

                        {

                         if(mysql_num_rows($resultyield) > 0) $co_output = $co_output + mysql_result($resultyield,0,"co_output");    

                      

                        }

                        

            

            $query = "SELECT d.operation_name, SUM(d.input_qty) AS inputqty, SUM(d.output_qty) AS outputqty FROM traceability d, plt_transact t WHERE t.plt_no = '$plt_no' AND t.plt_date BETWEEN '$from_date' AND '$to_date' AND d.shift = '$shift' AND d.plt_transact_id = t.plt_transact_id GROUP BY d.operation_name ORDER BY d.operation_name";

                    $result = mysql_query($query);

                    if($result)

                        {

                       

                        

                        echo "<tr>";

                        echo "<td><strong>$plt_no</strong></td>";

                      while($row2 = mysql_fetch_array($result))

                          {

                            echo "<td class='tdclass'>" . number_format($row2["inputqty"],2) . "</td>";


                             echo "<td class='tdclass'>" . number_format($row2["outputqty"],2) . "</td>";

                            $inputqty = $row2["inputqty"];

                            $outputqty = $row2["outputqty"];

                            $yield = @(($outputqty / $inputqty)*100);

                            echo "<td class='tdclass'>" . number_format($yield,2) . "</td>";

                            

                            echo "</td>";

                          } 

                         

                         

                        echo "<td style='text-align: right; font-weight: bold; font-family: Arial; font-size:10' class = 'tdclass'  colspan='";

                        $loopctr = ($total_row * 2) + 20;

                         echo "$loopctr'>"; 

                          printf ("%01.2f", $PLT_yield);

                           echo "<strong>%";

           

                         echo "</td>";    

           

                     

                        echo "</tr>";

                        

                    

                        }

                    }

                }

            }

            

            $Batch_yield = @($coresolutioning_output / $chem_input) * 100;

            echo "<tr>"; 

 

            echo "<td style='text-align: right; font-weight: bold; font-family: Arial; font-size:10' class = 'tdclass' colspan='";

            $loopctr = ($total_row * 2) + 20;

            echo "$loopctr'>Total Batch Yield:  "; 

            printf ("%01.2f", $Batch_yield);

            echo "<strong>%";

           

            echo "</td>";

            

            echo "</tr>";            

            echo "</table>";               

            

       }

?>


Where I don't know how can i used the codes that you suggested.

Thank you

In that code if i input from date, to date and shift the output display is correct the elseif condition was satisfied, but when i only input from date and to date no output display and I want to be output is all the data in the database where the date os from date and to date.

Thank you




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users