Question about if condition

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

Without seeing the rest of the code my guess would be to remove the last part, thus only leaving:


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

If that doesn’t work it’s not really possible to answer your question without the rest of the code. In that case could you post the body of the if statement as well please?

PS. Although if ($_POST["from1_date"]) works, it’s not really a nice method (because it emits an E_NOTICE, even if you don’t see it). A better way is if ([B]isset([/B]$_POST["from1_date"][B])[/B])

What is the used of isset()?

Thank you

The use of isset is that it actually checks if the variable is set, not if it’s value (if it’s actually set) is logically equivalent to true.

If you just use if ($_POST['from1_date']) and someone fills in 0 for $_POST[‘from1_date’] the if won’t fire because 0 is logically false.

If you use if (isset($_POST['from1_date'])) on the other hand the if while fire.

Does that make sense?

From the manual: [fphp]isset[/fphp]

This doesn’t help in any way with your problem by the way, it’s just a tip :slight_smile:

To test if the field exists.

Without it you are testing if the value in the field can be evaluated as true rather than if it exists.

What syntax should i use if i want to happen is even the shift was not field up the data from date to date will appear

Could you post the complete code and not just the if statement? That statement on it’s own is rather useless.

Here is my codes:



if($_POST["from_date"] && $_POST["to_date"] && $_POST["shift"])
        {
            $from_date = mysql_real_escape_string($_POST['from_date']); 
            $to_date = mysql_real_escape_string($_POST['to_date']); 
            $shift = mysql_real_escape_string($_POST['shift']); 
            
   
          
             $query = "SELECT d.operation_name, SUM(d.input_qty) AS inputqty, d.input_unit, SUM(d.output_qty) AS outputqty, d.output_unit 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') GROUP BY d.operation_name, d.output_unit, d.input_unit 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: &nbsp;  " . $_POST['from_date'] . "</b></tr>";
                echo "<tr><b> To &nbsp;&nbsp;&nbsp; Date: &nbsp;  " . $_POST['to_date'] . "</b></tr>";
                echo "<tr><b> Shift &nbsp;&nbsp;&nbsp; Date: &nbsp;  " . $_POST['shift'] . "</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='2' class='tdclass'>" . $opname . "<br /></th>";
                    }
                echo "<th class='tdclass'>PLT 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'>";
                echo "</td>";
                    
                echo "</tr>";
                        
                }

    
    $query = "SELECT DISTINCT p.plt_no FROM plt_transact p , traceability t WHERE p.plt_date BETWEEN '" . $_POST["from_date"] . "' AND '" . $_POST["to_date"] . "' AND t.shift = '". $_POST["shift"] ."' AND t.operation_name IN('01 Oper' , '02 Oper' , '03 Oper' , '04 Oper') 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)
                    {
                    $chemicalweighing_input = 0;
                    $extrusion_output = 0;
                    
                   $query  = "SELECT SUM(t.input_qty) AS chemicalweighing_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) $chemicalweighing_input = mysql_result($resultyield,0,"chemicalweighing_input");
                        }
                    
                    $query  = "SELECT SUM(t.output_qty) AS extrusion_output FROM traceability t, plt_transact p WHERE t.plt_transact_id = p.plt_transact_id AND t.operation_name='04 Oper' AND p.plt_no = '$plt_no'";
                    

                    $resultyield = mysql_query($query);
                    if($resultyield)
                        {
                        if(mysql_num_rows($resultyield) > 0) $extrusion_output = mysql_result($resultyield,0,"extrusion_output");
                        }
                        
                    $PLT_yield = @($extrusion_output / $chemicalweighing_input) * 100;
                

         
         $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 AND d.operation_name IN ('01 Oper', '02 Oper', '03 Oper' , '04 Oper') GROUP BY d.operation_name ORDER BY d.operation_name";
                 
                    $result = mysql_query($query);
                    $total_row = mysql_num_rows($result);  

                   if($result)

                        {
                        echo "<tr>";
                        echo "<td><strong>$plt_no</strong></td>";
                        
                        if($total_row == 0)

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

                         for($ctr=0; $ctr < $total_row; $ctr++)
                         {
                            echo "<td class='tdclass'>";

                            echo number_format((mysql_result($result,$ctr,"inputqty")),2);  
                            
                            echo "</td>";
                            echo "<td class='tdclass'>";
 
                            echo number_format((mysql_result($result,$ctr,"outputqty")),2); 
                            
                            echo "</td>";
                         }
                          
                          if($total_row < $total_columns) 

                            {
                            for($ctr = 0; $ctr < ($total_columns - $total_row); $ctr++)
                                {
                                echo "<td class='tdclass'>";
                                echo "</td>";
                                echo "<td class='tdclass'>";
                                echo "</td>";
                                }
                            }
                            
                        echo "<td class='tdclass'><strong>";
                        printf ("%01.2f", $PLT_yield);
                         echo "%</strong></td>";
                     
                        echo "</tr>";
                        
                    
                        }
                    }
                }
           }
            echo "</table>";               
            
       }

Why don’t you just remove the shift in the condition? Sorry if I don’t understand your question.

Shift is need in the condition statement. i want to know how does even the user did not put shift the from date and to date will execute.

Thank you

Then I think you should remove the shift in the main condition (your current if statement) and put it as a sub if.

For example, if user specify the shift, then:

$shift_extra_query = “AND d.shift = ‘$shift’”;

And in your code, replace the “AND d.shift=‘$shift’” with $shift_extra_query.

Hope it help.

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: &nbsp;  " . $_POST['from1_date'] . "</b></tr>";
                echo "<tr><b> To &nbsp;&nbsp;&nbsp; Date: &nbsp;  " . $_POST['to1_date'] . "</b></tr>";
                echo "<tr><b> Shift Date: &nbsp;  " . $_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:&nbsp;&nbsp;"; 
            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

I have modified your code as following, please check the comment that added and modified by thietkeweb:


<?php 
  elseif($_POST["from1_date"] && $_POST["to1_date"]) 
        { 
            $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']); 
            
			// Added by thietkeweb
			if($_POST["shift1"]) { 
				$shift_extra_query1 = "AND d.shift='$shift'";
				$shift_extra_query2 = "AND t.shift='$shift'";
			}
			
        $Batch_yield = 0; 
        $c_input = 0; 
        $co_output = 0; 
        $loopctr = 0; 
        $totalloop = 0; 
           
		// modified by thietkeweb
         $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' ".$shift_extra_query1." 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: &nbsp;  " . $_POST['from1_date'] . "</b></tr>"; 
                echo "<tr><b> To &nbsp;&nbsp;&nbsp; Date: &nbsp;  " . $_POST['to1_date'] . "</b></tr>"; 
                echo "<tr><b> Shift Date: &nbsp;  " . $_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>"; 
                         
                } 
  
      // modified by thietkeweb
     $query = "SELECT DISTINCT p.plt_no FROM plt_transact p, traceability t WHERE plt_date BETWEEN '" . $_POST["from1_date"] . "' AND '" . $_POST["to1_date"] . "' ".$shift_extra_query2." 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");     
                       
                        } 
                         
             // modified by thietkeweb
            $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' ".$shift_extra_query1." 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:&nbsp;&nbsp;";  
            printf ("%01.2f", $Batch_yield); 
            echo "<strong>%"; 
            
            echo "</td>"; 
             
            echo "</tr>";             
            echo "</table>";                
             
       } 
?>

Explain your code: In your query, when user don’t specify the shift value, then the logic in your MySQL query will be like the following:

Where date between from_date and to_date and shift=‘shift_value’

With that logic, the record in database must be satisfy date range and shift value.

Thank you for the codee. It works . I want to know is what is the used of this code:


if($_POST["shift1"]) {       
          $shift_extra_query1 = "AND d.shift='$shift'";                     $shift_extra_query2 = "AND t.shift='$shift'";  
          }

Why does 2 kinds of variable was used?

Thank you

Actually, you don’t need 2 variable, I used 2 variable because you have different identified shift (t.shift and d.shift). If you can modify your query, of course you will just need 1 variable.

my shift field is in the traceability table so you mean I can only have one query which is t.shift? p is for plt_transact table which shift field did not belong.

Thank you