2013-02-22 4 views
0

Я хочу печатать информацию с помощью второго цикла while, но он работает только один раз.PHP двойной цикл while, второй цикл работает только один раз

while($nextDate<$currentDate) 
{ 
     $nextDate=date('Y-m-d',strtotime('+ 6 days',strtotime($weekDate))); 

     $qM="select count(*) as count ,Deposit.DepositNo, Deposit.DepositDate, 
        sum(DepositItem.Amount) as Amount,DAmount 
        from DepositItem 
        inner join Deposit on Deposit.DepositNo=DepositItem.DepositNo 
        where Deposit.DepositDate>='".$weekDate."' and Deposit.DepositDate<='".$nextDate."' group by Deposit.DepositNo 
        order by Deposit.DepositNo desc"; 

     $connM=new dbconfig(); 
     $connM->connectdb(); 
     $connM->execute($qM); 
     $amt=0; 
     $damt=0; 
     while($rowsM =$connM->fetch_row()) 
     { 
      $amt=$amt+$rowsM['Amount']; 
      $damt=$damt+$rowsM['DAmount']; 
     } 
} 
+0

вы не закрыли первое время цикла ''} отсутствует или его просто опечатка. –

+0

Я не вижу заявлений печати во втором цикле. –

+0

что вы/сейчас получаете? И что вы ожидаете от o/p? –

ответ

0

$ nextDate всегда больше, чем $ CurrentDate, потому что вы добавляете 6 дней

$nextDate=date('Y-m-d',strtotime('+ 6 days',strtotime($weekDate))); 
+0

Не уверен, что это правда. это '$ weekDate' так же, как' $ currentDate'? –

+1

Не обязательно, мы не знаем значение '$ weekDate'. Если бы мне показалось, что первое время будет либо работать один раз, либо бесконечный цикл, так как '$ weekDate' не изменяется :) –

+0

@ VladPreda эй, это то, что я сказал - за исключением почти как хорошего. –

0

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

Но я написал некоторые комментарии в коде, чтобы указать на потенциальные проблемы/предложения отладки:

// what are the (expected) values of $nextDate and $currentDate ? 
while ($nextDate < $currentDate) { 
    $nextDate = date('Y-m-d', strtotime('+ 6 days', strtotime($weekDate))); 
    // this makes the big loop either run once (if $weekDate is within the 6 days interval) 
    // or an infinite loop if it isn't 

    $qM = "select count(*) as count ,Deposit.DepositNo, Deposit.DepositDate, 
      sum(DepositItem.Amount) as Amount,DAmount 
      from DepositItem 
      inner join Deposit on Deposit.DepositNo=DepositItem.DepositNo 
      where Deposit.DepositDate>='" . $weekDate . "' and Deposit.DepositDate<='" . $nextDate . "' group by Deposit.DepositNo 
      order by Deposit.DepositNo desc"; 
    // do an echo $qM and copy it in Phpmyadmin, see if it returns expected results 

    $connM = new dbconfig(); // not quite good to have these inside a loop 
    $connM->connectdb(); // you should put these 2 lines outside 
    $connM->execute($qM); 
    $amt = 0; 
    $damt = 0; 
    while ($rowsM = $connM->fetch_row()) { // do a var_dump($rowsM) inside the loop 
     $amt = $amt + $rowsM['Amount']; 
     $damt = $damt + $rowsM['DAmount']; 
    } 
} 
Смежные вопросы