2013-09-26 2 views
1

У меня есть этот кусок кода:PHP - подсчитать общее количество строк внутри пит время цикла

$i=0; 
     $start_date = date("Y/m/d"); 
     $end_date = date('Y/m/d', strtotime($start_date . " -7 days")); 



     while($days7=mysql_fetch_assoc($q)): 
      $next_date = strtotime($i--." days", strtotime($start_date)); 
      $date = date("Y/m/d",$next_date); 
     #Let's get the latest click combined from the latest 7 days 
      $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8") or die(mysql_error());    


     print mysql_num_rows($combined7); 

     endwhile; 

мне нужно, чтобы увидеть, как много строк, которые $combined7 получает. В настоящее время я использую print mysql_num_rows($combined7);, но это только печатает: 1 1 1 1 1 (Число «1» для каждой строки)

Как я могу подсчитать общее количество?

(приписка $ я должен быть установлен в 0)

+1

'$ i = 0; while ($ days7 = mysql_fetch_assoc ($ q)): $ i ++; '? – Phorce

+3

УВЕДОМЛЕНИЕ: DO * NOT * использовать 'mysql _ \ *', поскольку он устарел. Вместо этого используйте 'mysqli _ \ *' или PDO. ТАКЖЕ, зайдите в [Bobby Tables] (http://bobby-tables.com/) – UnholyRanger

+0

, не будет ли вы получать только одну строку, так как вы получаете 'SUM' назад? Итак, не хотите ли вы добавить 'COUNT' в инструкцию, а затем проверить второй столбец, возвращаемый для подсчета? – UnholyRanger

ответ

11

Простой:

$counter = 0; 
while(..) { 
     $counter++; // or $counter = $counter + 1; 
} 

echo $counter; 

определить переменную вне цикла.

0

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

$sum=0; 
while(){ 
$sum += mysql_num_rows($combined7); //here it will add total upadted row in $sum... 
print $sum; // if you want to print every time total 
} 
print $sum; // if you want to print only one time total 
+1

'print $ sum ; 'должен находиться вне цикла while while – bansi

0

вы должны определить переменную со значением 0, прежде чем время. то вы увеличиваете значение этой переменной внутри while. то вы печатаете эту переменную после конца while.

 $start_date = date("Y/m/d"); 
     $end_date = date('Y/m/d', strtotime($start_date . " -7 days")); 
     $sn = 0; 
     while($days7=mysql_fetch_assoc($q)): 
      $next_date = strtotime($i--." days", strtotime($start_date)); 
      $date = date("Y/m/d",$next_date); 
     #Let's get the latest click combined from the latest 7 days 
      $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8") or die(mysql_error());    


     $sn += mysql_num_rows($combined7); 

     endwhile; 
     print $sn; 
+0

'Try This' НИКОГДА не« ответ ».Почему бы вам не объяснить, что вы изменили и почему. – UnholyRanger

+0

@UnholyRanger Я обновляю свой ответ. Извините за мой плохой английский. Спасибо за ваше упоминание. –

+0

@SalaUddin Удалить '$ i' не нужно. – Phorce

0

Вот исходный запрос:

  $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8") 

Добавив команду COUNT, он будет подсчитывать количество строк, которые были рассмотрены в SUM:

SELECT SUM(value), COUNT(value) FROM... 

Тогда, когда вы получите MYSQL_RESULT назад, вам необходимо получить данные:

$data = mysql_fetch_array($combined7); 

Это будет иметь следующий массив:

Array(
    [0] = SUM 
    [1] = COUNT 
) 

ВНИМАНИЕ: mysql_* устарела. Вместо этого используйте mysqli_* или PDO

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