Я хочу вывести 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>
Не ясно, как ваши данные поступают из базы данных, но если вы храните их в виде строки, разделенной запятыми: не делайте. Есть лучшие способы сделать это — использовать отдельные строки базы данных для каждой из сущностей в $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>';
}
}
Не добавляйте запятую со значением. Вы можете использовать Implode для хранения значения, как
implode(",",$_POST[general]);
и взорваться для показа:
explode(",",$_POST[general]); //it will return array