Никита К.
1594 сообщения
#15 лет назад
В общем на одной странице при загрузке по умолчанию должно быть выделено несколько позиций в <input type="checkbox" />
Проблема в том, что все они имеют одинаковое имя, и передаются как массив.
т.е получаем <input type="checkbox" name="type" />
Далее у меня в цикле определяется каким должен быть элемент(выделенным или же нет).
Если выделенным - то он получается такого вида
<input type="checkbox" name="type" checked="true" />

Проблема в том, что выделенным, в резальтате, остаётся только последний необходимый мне элемент. То есть у предыдущих checkbox'ов флажок сбрасывается при задании нового.

Подскажите, как это правильно реальзовать. Вот код, который делает проверку.

<?php
$f = fopen($filename,"r");
... Много кода ....
$strType = fgets($f);
fclose($f);

$type = explode("::",$strType);
.... много кода ....
$file = file("");
foreach($file as $value)
{
$check = "";
if(in_array($value, $type))
{
$check = "checked=\"checked\"";
}
echo "<input type=\"checkbox\" name=\"type\" value=\"".$value."\" ".$check."/>".$value."<br />";
}
?>
Игорь Ф.
15 сообщений
#15 лет назад
Вставьте перед циклом
print_r($type);
print_r($file);
и покажите результат
Никита К.
1594 сообщения
#15 лет назад
Array ( => type => Винный бар => Кофейня => Лаундж => Сендвич-бар )
Array ( => Арт-кафе => Бар => Винный бар => Гей-клуб => Детское кафе => Кальян-бар => Караоке-бар => Кафе => Коктейль-бар => Кофейня => Лаундж => Ночной-клуб => Паб => Пиццерия => Ресторан => Ресторан быстрого питания => Сендвич-бар => Сигарный клуб => Стейк-хаус => Стрип-бар => Фреш-бар => Чайная )

При этом выделенным оказывается только "сендвич-бар"
Николай Т.
205 сообщений
#15 лет назад
Чую дело в trim
Никита К.
1594 сообщения
#15 лет назад
Неа, могу файл показать. Он без пробелов)))
Алексей Б.
897 сообщений
#15 лет назад
if(in_array(trim($value), $type))

он не только пробелы удаляет
Никита К.
1594 сообщения
#15 лет назад
Ха, вообще весело получилось))
Теперь выбранны все нужные. Кроме последнего))
Юрий Песков
338 сообщений
#15 лет назад
Ну не знаю, вот такой код у меня выделяет те, которые надо
echo '<form>';
for($i = 0; $i<10;$i++){
$checked = ($i%2 == 0) ? 'checked' : '';
echo '<input type="checkbox" name="type" value="'.$i.'" '.$checked.'" />'.$i.'-'.$checked.'<br>';
}
echo '</form>';


Попробуй еще значение $check на сраницу рядом с самими боксами выводить, чтоб понять что там генерируется.
Алексей Б.
897 сообщений
#15 лет назад
И строки разбей на символы и в ord() их, потом уже ищи лишнее.
Никита К.
1594 сообщения
#15 лет назад
Всё, решил проблему.
Просто теперь при записи данных в файл в конце строки добавляю "::" и всё))