2010-06-27 4 views
0

У меня есть php-массив, содержащий значения mysql флажков, которые были выбраны ранее. Я пытаюсь сделать страницу редактирования сорта, которая покажет уже выбранные флажки, но, похоже, с ней возникают проблемы. Я пробовал разные способы, но не могу заставить его работать.флажки jquery check на основе php-массива

Вот мой PHP массив ранее выбранные флажки:

Array 
(
    [0] => 1 
    [1] => 3 
) 

А вот мои флажки:

<input type="checkbox" name="company[]" id="company[]" value="1"> 
<input type="checkbox" name="company[]" id="company[]" value="4"> 
<input type="checkbox" name="company[]" id="company[]" value="2"> 
<input type="checkbox" name="company[]" id="company[]" value="3"> 

Я не могу показаться, чтобы выяснить, как получить флажки (из массива PHP - значение 1 и 3) уже выбрано.

ответ

1

Вот решение на стороне сервера, чтобы сделать это при создании страницы.

<?php 
function check_checked($index,$check_array){ 
    if (in_array($index,$check_array)){ echo 'checked="checked"';} 
    } 
$checked=array(1,3); 
?> 
<input type="checkbox" name="company[]" id="company[]" value="1" <?php check_checked(1,$checked);?>> 
<input type="checkbox" name="company[]" id="company[]" value="4" <?php check_checked(4,$checked);?>> 
<input type="checkbox" name="company[]" id="company[]" value="2" <?php check_checked(2,$checked);?>> 
<input type="checkbox" name="company[]" id="company[]" value="3" <?php check_checked(3,$checked);?>> 

Если вы собираетесь сделать это с JavaScript, я бы предложил напечатать массив в вар JS с json_encode и идти оттуда. Однако серверная сторона имеет больше смысла, поскольку у вас уже есть данные для начала.

+1

примечание: добавьте autocomplete = "false", если вы не хотите, чтобы кеш-кеширование Firefox проверял значение на странице refresh/reload. –

+0

Определенно, этот атрибут автозаполнения является нестандартным и не будет проверяться, но FF действительно будет с вами связываться, если вы его не включите. @SoulieBaby Я хотел упомянуть, что это не самое чистое или лучшее решение, детализированное, но предлагается как нечто, на что можно опираться. Он может быть реорганизован многими способами. – JAL

1

Самый простой способ сделать это на стороне сервера:

foreach ($array as $value) { 
    $che = $value? "checked":""; 
    print '<input type="checkbox" name="company[]" id="company[]" value="1" '.$che.'>'; 
} 
Смежные вопросы