2016-05-27 25 views
0

Я храню даты от query до массива, используя while loop и array_push.Пока цикл внутри цикла foreach не переходит к циклу foreach

$h = array(); 
$j = array(); 

while ($g = mysql_fetch_array($f)) { 
    $date = new DateTime($g['selected_date']); 
    echo "<th>" . date_format($date, 'd') . "</th>"; 
    array_push($h, $date); 
    array_push($j, $g['selected_date']); 
} 

Распечатка этого массива возвращает к этому, что хорошо, я думаю.

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 
) 

Я пытаюсь использовать так:

$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>";    
    } 
} 

Но это занимает только первое значение, которое 2016-05-23. Цикл while, похоже, не переходит к следующему значению foreach. Как я могу это исправить?

+3

Прежде чем делать что-либо еще, избавитесь от вызова функции 'mysql_'. Эти функции устаревают в течение длительного времени. Используйте 'mysqli_' или PDO. – trincot

+0

поместите свою петлю foreach в цикл while, а вы золотой – Ale

ответ

0

Когда вы используете mysql_fetch_array, он переходит к следующей строке результата. Как только вы достигнете последнего результата, он начнет возвращаться FALSE.

Чтобы заставить ваш код работать, все, что вам нужно сделать, это обменивать петли в обратном направлении.

E.g.

$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

и добавьте цитаты в '' $ b [center_no] '':) –

Смежные вопросы