@Ayk72

Почему PHP игнорирует условие?

Добрый день!

Необходимо написать код, который подсчитает кол-во запятых в каждой записи mysql.
На сервере PHP 5.3.

Сделал циклический запрос и условие:

$count = substr_count($row[category], ',' );
if ($count <= 3) $cat = 40;


Если сделать вывод $count, то он правильно покажет количество запятых, но в условии он тупо игнорирует условие меньше или равно! И тупо всем назначает 40. Почему?
  • Вопрос задан
  • 2571 просмотр
Пригласить эксперта
Ответы на вопрос 4
Cyapa
@Cyapa
Попробуйте что-нибудь из этого:
- Назвать счетчик по другому
- Таки воспользоваться блочным оператором (поставить фигурные скобки)
Ответ написан
@iznaur
1.$row['category'] а не $row[category]
2.что значит тупо всем назначает 40?у вас $cat строка,если вы там записали 40,то и будет показывать.Я так понимаю у вас это в цикле происходит?если да,то после того как 1 раз $count оказался меньше или равно 3,$cat всегда будет 40
Ответ написан
Folour
@Folour
Если я правильно понял задачу, то вот
$posts = $db->query("
    SELECT id, title, category
    FROM _post
    ORDER BY id DESC
");
$postsToUpdate = array();

while($post = $db->get_row($posts)) { //как-то странно в дле получение записи реализовано
    if(substr_count($row['category'], ',') <=2) $postsToUpdate[] = $post['id'];
}
if(!empty($postsToUpdate)) $db->query("UPDATE _post SET cat = 40 WHERE id IN (".implode(',', $postsToUpdate).")");
Ответ написан
Комментировать
Да нет инициализации $cat и все. Тоже самое можно сделать и в ветке else условного оператора.
В Вашей ситуации срабатывает конкретный набор данных - на первой выбранной из БД строке 3 и более запятых. А дальше уже нет разницы сколько их потому, что в $cat уже записано 40 и это значение не сбрасывается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы