2016-05-27 23 views
0

Ich speichere Daten von einem query zu einem Array mit while-Schleife und array_push.While-Schleife innerhalb foreach Schleife, die nicht foreach Schleife

Drucken dieses Array zurück, das ist in Ordnung, denke ich.

Array (
    [0] => 2016-05-23 
    [1] => 2016-05-24 
    [2] => 2016-05-25 
    [3] => 2016-05-26 
    [4] => 2016-05-27 
    [5] => 2016-05-28 
) 

Ich versuche so zu verwenden:

$a = mysql_query("select * from center") or die(mysql_error()); 
$arr = array(); 

foreach($j as $k) { 
    while ($b = mysql_fetch_array($a)) { 
     $l = "select sum(yid.center_inventory) as 'total' 
       from yl_inventory_details as yid 
       left join yl_inventory as yi 
        on yi.yl_inventory_no = yid.yl_inventory_no 
       where yid.center_no = '$b[center_no]' 
       and yi.date = '$k'"; 
     $c = mysql_query("$l") or die(mysql_error()); 
     $d = mysql_fetch_array($c); 
     echo "<tr><td>".$b['center']."</td><td>".$d['total']."</td></tr>";    
    } 
} 

Aber es braucht nur den ersten Wert, der 2016-05-23 ist. Die while-Schleife scheint nicht mit dem nächsten foreach-Wert fortzufahren. Wie kann ich das beheben?

+3

Bevor Sie etwas anderes tun, werden Sie diesen 'mysql_' Funktionsaufruf los. Diese Funktionen sind seit langer Zeit veraltet. Verwende mysqli_ oder PDO. – trincot

+0

Setzen Sie Ihre foreach-Schleife in Ihre while-Schleife und Sie sind golden – Ale

Antwort

0

Wenn Sie mysql_fetch_array verwenden, wird auf die nächste Zeile im Ergebnis umgeschaltet. Sobald Sie das letzte Ergebnis erreicht haben, beginnt es mit der Rückgabe FALSE.

Damit Ihr Code funktioniert, müssen Sie die Loops nur andersherum vertauschen.

z.

$a = mysql_query("select * from center") or die(mysql_error()); 
$arr = array(); 
while ($b = mysql_fetch_array($a)) 
{ 
    foreach($j as $k) 
    { 
      $l = "select 
        sum(yid.center_inventory) as total 
       from yl_inventory_details as yid 
       left join yl_inventory as yi on yi.yl_inventory_no = yid.yl_inventory_no 
       where yid.center_no = {$b['center_no']} and yi.date = {$k}"; 
      $c = mysql_query($l) or die(mysql_error()); 
      $d = mysql_fetch_array($c); 
      echo 
      "<tr> 
       <td>{$b['center']}</td> 
       <td>{$d['total']}</td> 
      </tr>";    
    } 
} 
+1

und fügen Sie Anführungszeichen zu "" $ b [center_no] '':) –