Цикл While и разовый вывод сообщения PHP

89
24 апреля 2021, 08:50

Есть такой цикл.

        while($resultat = $q->fetch_array(MYSQLI_BOTH)){
    if ($checkit != $resultat['name'])
    {   
        $i++;
        continue; //Если убрать, то выводит несколько-подряд.
        //Где то тут должно вывести сообщение, что такого кода не существует;
    }
    if ($checkit == $resultat['name']){
      if ($counter2 > 0 && $active != false){
        mysqli_query($bds,"UPDATE bonus SET counter=counter-1 WHERE name='$checkit'");
        mysqli_query($bds,"UPDATE users SET last_code=CONCAT(last_code, '".$data['bonuscode'].",') WHERE id='$u->id'");
        mysqli_query($bds,"UPDATE users SET money=money+'$action2' WHERE id='$u->id'");
         echo "Код успешно активирован. На ваш счет начислено ".$action2." игровой валюты. Обновите страницу, или нажмите на кнопку ниже.";
        }else{
            echo "Код недействителен";
        }
    }

    }

Задача вот в чем..нужно в первом условии, где НЕ РАВНО выводить 1 единственный раз сообщение о том, что такого кода не существует. Если убрать CONTINUE, то сообщение выведется ровно столько раз, сколько будет сравниваться записей..Как можно исправить ? P.S Break не подходит.

Answer 1

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

$message = false;
while($resultat = $q->fetch_array(MYSQLI_BOTH)){
    if ($checkit != $resultat['name'] && $message === false)
    {   
        $i++;
        $message = "Ошибка";
        echo($message);
        continue; //Если убрать, то выводит несколько-подряд.
        //Тут не выведиться потому что стоит continue
    }
    if ($checkit == $resultat['name']){
      if ($counter2 > 0 && $active != false){
        mysqli_query($bds,"UPDATE bonus SET counter=counter-1 WHERE name='$checkit'");
        mysqli_query($bds,"UPDATE users SET last_code=CONCAT(last_code, '".$data['bonuscode'].",') WHERE id='$u->id'");
        mysqli_query($bds,"UPDATE users SET money=money+'$action2' WHERE id='$u->id'");
         echo "Код успешно активирован. На ваш счет начислено ".$action2." игровой валюты. Обновите страницу, или нажмите на кнопку ниже.";
        }else{
            echo "Код недействителен";
        }
    }
}
READ ALSO
Отправка post запроса ajax в php

Отправка post запроса ajax в php

Нужно посмотреть какие данные приходят в phpВыполняется запрос при нажатии кнопки:

109
Кнопка «читать далее»

Кнопка «читать далее»

Сейчас на сайте статью обрывает […]Как можно увеличить количество слов до обрыва и поменять многоточие на надпись «читать далее»

72
Автоматическая замена url на правильный

Автоматическая замена url на правильный

У меня например сейчас URL имеет такой вид 1-perwaja_nowosthtml и отображается новость с id 1, а если URL сделать 2-perwaja_nowost

81