1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Question about if condition

Discussion in 'PHP' started by newphpcoder, Jan 28, 2011.

  1. newphpcoder

    newphpcoder New Member

    Joined:
    Sep 24, 2010
    Messages:
    101
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    Web Programmer
    Location:
    Philippines
    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:
    PHP:
    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. pein87

    pein87 New Member

    Joined:
    Aug 6, 2010
    Messages:
    173
    Likes Received:
    47
    Trophy Points:
    0
    Occupation:
    Web Dev
    Location:
    Limbo
    Ok let me ask this do you want the user to be able to submit the data without the shift? If you do add an else if that excludes the shift. If you dont and you want them to have the shift you need to add an else statement so the code does something if not all the array indexs have values. When you use && everything you specify has to be as you say it should be or else it will not work. Can I suggest you check this site out so you can get the basics down? http://www.w3schools.com/php/php_operators.asp

    Take this logic

    If the person is younger than 18 and the section is not the adult section, then they may pass. Else if the person is not over 18 and the section then they cannot pass. Else if the person is 18 or older they have unlimited access.

    code example:
    PHP:
    $age 13;
    $section "adult";

    if(
    $age 18 && $section != "adult")
    {
    echo 
    "you may pass";
    }
    else if(
    $age 18 && $section == "adult")
    {
    echo 
    "you may not pass";
    }
    else if(
    $age >= 18)
    {
    echo 
    "you may enter any section";
    }
    if you want either or you need to use || (or) because && means all must be true.

    PHP:
    if($_POST["from1_date"] && $_POST["to1_date"] && $_POST["shift1"]) 
    {
    //shift included show all data is go
    }
    else if(
    $_POST["from1_date"] && $_POST["to1_date"])
    {
    // only dates show dates
    }
    else
    {
    //variables weren't given values show page error
    }

    PHP:
    if($_POST["from1_date"] && $_POST["to1_date"] && $_POST["shift1"]) 
    {
    //do something here
    }
    else if(
    $_POST["from1_date"] && $_POST["to1_date"]) 
    {
    //show error your forgot your shift
    }
    else
    {
    // show page error
    }
     
    newphpcoder and shabbir like this.
  3. newphpcoder

    newphpcoder New Member

    Joined:
    Sep 24, 2010
    Messages:
    101
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    Web Programmer
    Location:
    Philippines
    Good day!

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

    PHP:
    <?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
     
  4. pein87

    pein87 New Member

    Joined:
    Aug 6, 2010
    Messages:
    173
    Likes Received:
    47
    Trophy Points:
    0
    Occupation:
    Web Dev
    Location:
    Limbo
    You started with an else if which is a no no. Also each database field where your using a non int value is being done wrong. Also you need to code in exceptions to your if statements of nothing will happen if the condition is not met and the program will terminate without doing anything since the first condition was not met. You need to do it like so:

    PHP:
    $query "SELECT * FROM plt_transact WHERE plt_no = '".$plt_no."'";
    or
    PHP:
    ' " . $variable . " '
    Just a question why do you need the start date and end date for? Is it for a project control site were your showing a start and finish date per project? I think your making it more complex then it is. I think you need to first write out what needs to happen so you have a plan or a list of what needs to be done. Then figure out code wise how it can be done. Then implement the code and make sure it works. Try using codelobster as your IDE because it catches errors in code. I think you need to polish your sql skills so your queries are optimized. If I knew what it was you were doing I could show you how to get it done.
     

Share This Page