Ошибка при сравнении - такого НЕ МОЖЕТ БЫТЬ

Ошибка при сравнении - такого НЕ МОЖЕТ БЫТЬ

Бьюсь два дня. Пролема в следующем.

Есть элементарное голосование.
Вопрос - в одной таблице. Ответы в другой, связанной.

Когда кто то голосует, выполняется запрос, объединяющий таблицы. Далее цикл, который проходит все записи, поскольку ответов может быть разное количество. И выводятся результаты.

В основной таблице с голосованиями есть поле мax_vot, где изначально сохранено значение, до которого можно голосовать. После этого таблица становится неактивной. Сбрасывается флаг.

В цикле переменная подсчитывает количество всех голосов так
$total=$total+$row['num_vot'];

После завершения цикла $total содержит общее количество говосов.

В конце скрипта после цикла производится проверка
if($total>=$row_vot['max_vot'])
{
<!-- Сброс флага - голосование не активно-->
}

Так вот, в 7 голосованиях из 10 все работает как надо.
Добавляю новые, оказывается, что верно выражение
$total>=$row_vot['max_vot'], хотя $total равно 1, а
$row_vot['max_vot'] равно 300.

Я бы и продолжал искать ошибку, если бы не работало нигде. Но ведь работает в первых семи голосованиях!!!:confused:

И еще. Вывожу на экран, получаю реальные цифры:
$total=1
$row_vot['max_vot']=300:eek:

А при сравнении первое больше или равно второму.
 

untied

Сдвинутый новичок
Зачем так странно считаешь число голосов? Почему бы не написать запрос типа:
SELECT COUNT(opinion_id) WHERE vote_id = ...

Проверь типы полей в таблице. Числовые они у тебя или текстовые?

Вообще больше подробностей...
 
Я тоже думал о типе полей. Только не полей, а данных в переменной $total и в значении поля $row_vot['max_vot'].

В поле тип int. Переменная тоже должна быть числовой.
Как проверить типы переменных, не знаю. Нигде не читал.

"Странно" считаю число голосов, потому что мне важно знать не общее количество говосов, а голоса по каждому, к примеру, Да или Нет (ответов может быть и больше), чтобы вывести график.

Да, обходной путь моно попытаться найти. Доп запрос или что-нибудь иное. Но не могу я оставить то, что неподвластно моему закону логики.

Весь скрипт писать, отнимать ваше время. Тем более, что при выводе на экран перед сравнением выдаются нормальные цифры. И 1 не может быть больше чем 300. Вот что убивает
 

Orlis

Guest
быстрее copy'n'paste скрипт, чем искать телепатов
 
Сверху