Go4Expert

Go4Expert (http://www.go4expert.com/)
-   PHP (http://www.go4expert.com/forums/php/)
-   -   Question about if condition (http://www.go4expert.com/forums/question-condition-t24766/)

newphpcoder 28Jan2011 05:52

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:
PHP Code:

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

pein87 1Feb2011 08:28

Re: Question about if condition
 
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 Code:

$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 Code:

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 Code:

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 2Feb2011 05:56

Re: Question about if condition
 
Good day!

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

PHP 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

pein87 9Feb2011 06:59

Re: Question about if condition
 
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 Code:

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

or
PHP Code:

' " . $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.


All times are GMT +5.5. The time now is 23:47.