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

Я хочу вывести checked атрибут на мои флажки, если данные появляются в моей базе данных.

я пытался сделать in_array() но это не сработало из-за значений (см. База данных)

Я не знаю, как мне правильно их выводить

PHP-код:

    $general_list = "";
if($row['f_general'] == 'Bar, '){
$general_list .= "<label class=\"bg-danger\"><input type=\"radio\" name=\"general[]\" value=\"Bar, \" checked=\"checked\"/>Bar</label>";
}else{
$general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Bar, \"/>Bar,</label>";
}
if($row['f_general'] == 'Restaurant,'){
$general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Restaurant, \" checked=\"checked\"/>Restaurant,</label>";
}else{
$general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Restaurant, \"/>Restaurant,</label>";
}
if($row['f_general'] == 'Coffee Shop,'){
$general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Coffee Shop, \" checked=\"checked\"/>Coffee Shop,</label>";
}else{
$general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Coffee Shop, \"/>Coffee Shop,</label>";
}

Мои значения в базе данных хранятся так:

Bar, Restaurant, Coffee Shop, Concierge,

HTML-код:

<label><input type="checkbox" name="general[]" value="Bar, "/>Bar,</label>
<label><input type="checkbox" name="general[]" value="Restaurant, "/>Restaurant,</label>
<label><input type="checkbox" name="general[]" value="Coffee Shop, "/>Coffee Shop,</label>
<label><input type="checkbox" name="general[]" value="Concierge, "/>Concierge,</label>
<label><input type="checkbox" name="general[]" value="Business Center, "/>Business Center,</label>
<label><input type="checkbox" name="general[]" value="Salon, "/>Salon,</label>

0

Решение

Не ясно, как ваши данные поступают из базы данных, но если вы храните их в виде строки, разделенной запятыми: не делайте. Есть лучшие способы сделать это — использовать отдельные строки базы данных для каждой из сущностей в $row['f_general']т.е.

f_general
Bar
Restaurant
Coffee Shop
(etc.)

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

Поскольку у вас есть строка, проанализируйте ее, чтобы создать массив:

$db_row = explode(", ", $row['f_general']);

Затем вы можете сделать свой код более компактным и простым в обслуживании, выполнив следующие действия:

# set up an array with all the checkboxes in it:
$items = array('Bar', 'Restaurant', 'Coffee Shop', 'Concierge', 'Business Center', 'Salon');

$general_list = '';

# go through each item in the array
foreach ($items as $i) {
# see if that item is in the data from the database
if ( in_array($i, $db_row) ) {
$general_list .= '<label class="bg-danger"><input type="radio" name="general[]" value="'
. $i . '" checked="checked" />' . $i . '</label>';
}
else {
$general_list .= '<label><input type="radio" name="general[]" value="'
. $i . '" />' . $i . '</label>';
}
}
0

Другие решения

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

implode(",",$_POST[general]);

и взорваться для показа:

explode(",",$_POST[general]); //it will return array
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector