2013-08-15 3 views
1

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

Примечание: Неопределенная переменная: tot in .............. \ view.php в строке 192

Но она по-прежнему вычисляет общую стоимость и эхо его, любые идеи о том, как избавиться от этой ошибки?

Я получаю подытог из базы данных с помощью этого:

while($row=mysql_fetch_array($result)) { 
echo ..... 
$tot += $row['subtotal']; 
} 

В нижней части страницы, я сделал это так, это показывает общее и его работу, но его все еще дает мне ошибку говоря, что переменная tot не определена, какие-либо идеи?

+2

Возможно, вы сэкономите свою проблему, и MySQL вернет вам общее количество: 'SELECT SUM (my_column) FROM my_table WHERE ...'? – eggyal

+0

Если вы не хотите видеть уведомления, вы можете проверить эту страницу: http://stackoverflow.com/questions/2867057/how-do-i-turn-off-php-notices –

ответ

6

Это не ошибка, это уведомление!

Initialise

$tot = 0; 

перед вашим while петли

+1

Это совершенно не связано, но «это уведомление "напоминает мне об этой шутке: Парень стоит на углу улицы, курит одну сигарету за другой.Леди гуляет, замечая его и говорит «Эй, разве ты не знаешь, что эти вещи могут убить тебя? Я имею в виду, разве ты не видел гигантское предупреждение на коробке ?!» «Все в порядке» говорит парень, небрежно пыхтя «Я программист» «Итак, что с этим связано?» «Мы не заботимся о предупреждениях, мы только заботимся об ошибках». – Langdi

1

Вы должны определить ваш $tot переменной

Надень это, прежде чем использовать его в цикле

$tot = 0;
0
  $tot = 0; 
      while($row=mysql_fetch_array($result)) { 
       echo ..... 
      $tot += $row['subtotal']; 
      } 
      echo $tot; 
0

Из документации PHP:

Не нужно инициализировать переменные в PHP, однако это очень хорошая практика.

Однако он также говорит:

Опираясь на значение по умолчанию неинициализированного переменной проблематично в случае включения одного файла в другой, который использует то же имя переменной. Это также серьезный риск для безопасности, включенный в аккаунт register_globals. ошибка уровня E_NOTICE выдается в случае работы с неинициализированными переменных ..

Вы можете отключить уведомления на изменяемом уровне, делая это:

while($row=mysql_fetch_array($result)) { 
    @$tot += $row['subtotal']; 
} 

Сказав, что лучшие практики:

$tot = 0; 
while($row=mysql_fetch_array($result)) { 
    $tot += $row['subtotal']; 
} 
Смежные вопросы