PHP - Как изменить результаты из цикла Loop, если результат соответствует какой-либо строке - PullRequest
0 голосов
/ 15 марта 2019

Я искал результат для этого и, похоже, не могу найти ничего, связанного с этой конкретной проблемой ...

Я использую цикл while для шаблонирования HTML из моей таблицы MySQL.

Все работает, но я не могу понять, как сказать, «если какой-либо ряд приводит к возвращению из цикла while, равному« true », изменить его на« флажок ».

Так что янапример:

$result = mysqli_query($conn, "SELECT * FROM hardware_requests");


    while($row = mysqli_fetch_array($result)) {       

     echo "<input  type='checkbox' " . $row["checkbox1"] . "/>
           <input  type='checkbox' " . $row["checkbox2"] . "/> ";

    }

Результат $ row [checkbox1] равен 'true', а результат $ row [checkbox2] равен нулю (в таблице нет записи для этой ячейки)

На самом деле, я не могу понять, как внутри цикла while сделать что-то вроде:

if ($row[] == 'true') {

   $row[] = 'checked';

}

С $ row [], проверяющим каждую запись в базе данных.

...

Я редактировал это (изначально цитаты вокруг "checkbox1" и "checkbox2" в HTML отсутствовали ...

Чтобы прояснить больше,Разработчик, который изначально настраивал код, имел галочки на переднем крае, введенные в базу данных как 'true' (и теперь есть довольно надежные данныеустранение заполненных флажков).

Некоторые части того, что я пытаюсь завершить, имеют более 30 флажков, и я хочу иметь возможность установить свойство «флажок» для входного HTML-кода (при настройке чего-то, что будетсистема отслеживания того, что было выполнено на основе ввода в базу данных).

Таким образом, вместо того, чтобы индивидуально устанавливать каждый флажок, т.е.

$row["checkbox1"] = 'checked',
$row["checkbox2"] = 'checked'

до 30+ флажков, я былнадеясь просто перебрать каждую строку и использовать оператор if, чтобы выяснить, какое из них в настоящее время равно «true», и, если это так, изменить на «флажок».

Еще раз спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Одна из возможностей - преобразовать логические значения в строки в вашем запросе.

$result = mysqli_query($conn,
 "SELECT
   IF(checkbox1,'checked','') AS checkbox1,
   IF(checkbox2,'checked','') AS checkbox2
 FROM hardware_requests");

Тогда ваш шаблон может остаться прежним. Вы должны заключить эти ключи в массив, однако.

while($row = mysqli_fetch_array($result)) {
     echo "<input  type='checkbox' " . $row['checkbox1'] . "/>
           <input  type='checkbox' " . $row['checkbox2'] . "/> ";
}
0 голосов
/ 15 марта 2019

Вы можете использовать условное выражение.

while($row = mysqli_fetch_array($result)) {       
     echo "<input  type='checkbox' " . ($row['checkbox1'] == "true" ? "checked" : "")  . "/>
           <input  type='checkbox' " . ($row['checkbox2'] == "true" ? "checked" : ""). "/> ";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...