Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    Regular Coder
    Join Date
    Aug 2010
    Posts
    713
    Thanks
    165
    Thanked 0 Times in 0 Posts

    Problem in using foreach and while loop in displaying data on table format

    Hi...

    I tried to use foreach in displaying my table header, but I encountered problem when I tried to display data on the first row , my query only display the last Sum for the last Comp.

    here is my code:
    PHP Code:
    <html>
    <head>
    <title>Half Shell</title>
    <link rel="stylesheet" type="text/css" href="kanban.css" />
    <?php
      error_reporting
    (E_ALL E_NOTICE);
      
    date_default_timezone_set("Asia/Singapore"); //set the time zone  
    $con mysql_connect('localhost''root','');

    if (!
    $con) {
        echo 
    'failed';
        die();
    }

    mysql_select_db("mes"$con);


    ?>

    <body>
    <form name="param" action="" method="post" onSubmit="return false">

    <div id="fieldset_PS">
    <?php
       
    echo "<table>";
       
       
    $sql "SELECT DISTINCT s.Comp FROM sales_order s, param_settings p WHERE s.Comp = p.Compounds ORDER BY s.Comp";
       
    $res_comp mysql_query($sql$con); 
       while(
    $row_comp mysql_fetch_assoc($res_comp)){
            
    $Comp[] = $row_comp['Comp'];
       }
       echo 
    "<th>&nbsp;</th>";
       foreach(
    $Comp AS $Comp){
        echo 
    "<th>$Comp</th>";
      }   

       echo 
    "<tr>
       <td>Total Kg/Compound</td>"
    ;
          
    $sql_sec "SELECT SUM(TotalKg) AS TotalKg FROM sales_order  WHERE Comp = '$Comp' ORDER BY Comp";
       
    $res_sec mysql_query($sql_sec$con);
       
       while(
    $row_sec mysql_fetch_assoc($res_sec)){
           
    $TotalKg[] = $row_sec['TotalKg'];

       }
       foreach(
    $TotalKg AS $TotalKg){
        echo 
    "<td>$TotalKg</td>
        </tr>"
    ;
      }   

       
    ?>
    I also attach the correct output that should be and the result from my code.

    Thank you
    Attached Thumbnails Attached Thumbnails Problem in using foreach and while loop in displaying data on table format-table.jpg   Problem in using foreach and while loop in displaying data on table format-wrong-output.jpg  

  • #2
    New Coder
    Join Date
    Sep 2011
    Posts
    40
    Thanks
    0
    Thanked 7 Times in 7 Posts
    Code:
       foreach($Comp AS $Comp){ 
        echo "<th>$Comp</th>"; 
      }
    I don't believe you can do this; by saying "foreach $Comp as $Comp", you are overwriting the entire array with the first value.

    try renaming the variable, like this:

    Code:
       foreach($Comp AS $display_Comp){ 
        echo "<th>$display_Comp</th>"; 
      }



    then do something similar to the "$TotalKg" at the end of the script.

  • Users who have thanked themousemaster for this post:

    newphpcoder (04-28-2012)

  • #3
    Regular Coder
    Join Date
    Aug 2010
    Posts
    713
    Thanks
    165
    Thanked 0 Times in 0 Posts
    ok thank you..

    I resolve it now using this code:

    PHP Code:
    <html>
    <head>
    <title>Half Shell</title>

    <link rel="stylesheet" type="text/css" href="kanban.css" />
    <?php
      error_reporting
    (E_ALL E_NOTICE);
      
    date_default_timezone_set("Asia/Singapore"); //set the time zone  
    $con mysql_connect('localhost''root','');

    if (!
    $con) {
        echo 
    'failed';
        die();
    }

    mysql_select_db("mes"$con);


    ?>

    <body>
    <form name="param" action="" method="post" onSubmit="return false">

    <div id="fieldset_PS">
    <?php
       
    echo "<table>";
       
       
    $sql "SELECT DISTINCT s.Comp FROM sales_order s, param_settings p WHERE s.Comp = p.Compounds ORDER BY s.Comp";
       
    $res_comp mysql_query($sql$con); 
       while(
    $row_comp mysql_fetch_assoc($res_comp)){
            
    $Comp[] = $row_comp['Comp'];
       }
       echo 
    "<tr><th> </th>";

       foreach(
    $Comp AS $Comp){
        echo 
    "<th>$Comp</th>";
       }    
          echo 
    "<tr><td>Total Kg/Compound</td>";
     
    $Compound = array();
     
    $sql "SELECT DISTINCT s.Comp FROM sales_order s, param_settings p WHERE s.Comp = p.Compounds ORDER BY s.Comp";
       
    $res_comp mysql_query($sql$con); 
       while(
    $row_comp mysql_fetch_assoc($res_comp)){
            
    $Compound[] = $row_comp['Comp'];
       }
     foreach(
    $Compound AS $Compound

       
    $sql_sec "SELECT SUM(TotalKg) AS TotalKg FROM sales_order  WHERE Comp = '$Compound' GROUP BY Comp ORDER BY Comp"
      
       
    # add error code compliant with the rest of error code management you are already using 
       
    $result mysql_query($sql_sec$con) ; 
        
       while( 
    $row_sec mysql_fetch_assoc$result ) ) 
       { 
             
    $TotalKg $row_sec['TotalKg']; 
             echo 
    "<td>$TotalKg</td>"
       } 

    echo 
    "</tr>"

    echo 
    "<tr><td>Demand per day (Kg)</td></tr>";

    ?>
    Now I need to add rows for working days.

    Working days is SUM of workingdays of 3 months, I have code for getting the consecutive 3 months but now I got a problem in getting the SUM of working days.

    here is my code for that:


    PHP Code:
    echo "<tr><td>Working Days</td>";
    function 
    monthNames($from$to){
       
    $range=array();
       for(
    $i=$from$i<=$to$i++){
               
    $range[$i]=date('M'mktime(0,0,0,$i));
       }
        return 
    $range;
    }

    $sql "SELECT FromMonth, ToMonth FROM so_month";
    $res mysql_query($sql,$con);

    $row mysql_fetch_assoc($res);
    $FromMonth $row['FromMonth'];
    $ToMonth $row['ToMonth'];
     

    foreach( 
    monthNames($FromMonth$ToMonth) as $month){ echo $month,'<br>';  
    $sql "SELECT MonthName, SUM(WorkingDays) AS WorkingDays FROM working_days WHERE Month_Name = '$month' ORDER BY MonthName";
    $res mysql_query($sql$con);

    $row mysql_fetch_assoc($res);

    $WorkingDays $row['WorkingDays'];

    echo 
    "<td>$WorkingDays</td>";


    but I got this error:

    Apr

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Program Files\xampp\htdocs\MES PROJECT\HalfShellParam.php on line 147
    May

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Program Files\xampp\htdocs\MES PROJECT\HalfShellParam.php on line 147
    Jun

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Program Files\xampp\htdocs\MES PROJECT\HalfShellParam.php on line 147

    Thank you


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •