2014-10-10 1 views
0

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

я пытался делать in_array(), но он не работает из-за значений (см Database)

Я не знаю, как я должен вывести их хорошо

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 CO DE:

<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>'; 
    } 
} 
+1

Спасибо за идею о том, как это сделать. наконец понял – Jonathan

0

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

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

и взрываются для отображения:

explode(",",$_POST[general]); //it will return array 
Смежные вопросы