|
|
|
| Есть цикл с проверкой. Эта проверка проверяет, существует ли чекбокс. Если он существует, то дать ему значение CHECKED.
Вопросы:
1. Разумен ли такой цикл с такой проверкой. Нет - посоветуйте другой.
2. Почему-то у меня не проходит первую проверку (проверка существования чекбоксов) и всем чекбоксам дается значение CHECHED.
$data1 = mysql_query("SELECT * FROM ings LIMIT 0,8",$db);
$data = mysql_fetch_array($data1);
echo <<<I
<form method="post" name="gen_search_form" action="http://offcook.com/generator.php?p=generator&gen_search=ok">
I;
do
{
if ( $i.$data['id'] )
{
echo <<<I
<p class="gen_section"><label><input type="checkbox" checked='checked' name="i$data[id]" value=",$data[id]" /> $data[name]</label></p>
I;
}
else
{
echo <<<I
<p class="gen_section"><label><input type="checkbox" name="i$data[id]" value=",$data[id]" /> $data[name]</label></p>
I;
}
}
while ( $data = mysql_fetch_array($data1) );
echo <<<I
<p><input type="submit" name="gen_search_submit" value=",Подобрать рецепт" /></p>
</form>
I;
|
$i[1-8] имя чекбокса, которое передается дальше. | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 18:00)
| | 1. Перед кодом надо ставить <?php, чтобы включалась подсветка
2. Выкиньте нахер этот код, я даже не знаю, как вам рассказать все то, что тут надо рассказать, это же ппц... Имена файлов с каким то i, значения - с запятыми.. как такой код в принципе можно поддерживать?
$i.$data['id']
Вот что за $i? | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 18:22)
| | Я ж писал, под кодом, что $i1, $i2, $i3 ... - это имена чекбоксов. Значение с запятыми нужны для выборки через IN (2,4,8,9,19) - вот поэтому и нужны запятые.
А вы знаете, как сделать то, что я задумал? | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 18:32)
| | value=",Подобрать рецепт"
Это вы тоже подставляете в запрос?
Пишу примерно, со своими именами переменных.
1. Избавляемся от do..while, т.к. этот цикл не подходит для обычного вывода из бд
2. Вместо mysql_fetch_array используем mysql_fetch_assoc, т.к. первое возвращает лишний массив
3. Я так и не понял, что за if ( $i.$data['id'] ) и потому переписал то, что это фактически значит (то есть то, что делали вы, только сокращенно), однако под вопросом правильность в данном конкретном случаи. И вот это
name="i{$data['id']}" value="{$data['id']}"
Тоже странный участок.
Боюсь, исправление этого маленького кусочка не спасет весь скрипт.
<form method="post" name="gen_search_form" action="http://offcook.com/generator.php?p=generator&gen_search=ok">
<?php
$query = mysql_query("SELECT * FROM ings LIMIT 0, 8");
while($date = mysql_fetch_assoc($query))
{
$checked = !empty($i.$data['id']) ? ' checked="checked"' : null;
echo "<p class=\"gen_section\">
<label>
<input type=\"checkbox\" name=\"i{$data['id']}\" value=\"{$data['id']}\"$checked />
{$data['name']}
</label>
</p>";
}
?>
<p><input type="submit" name="gen_search_submit" value="Подобрать рецепт" /></p>
|
| |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 18:41)
| | На этом $checked = !empty($i.$data['id']) ? ' checked="checked"' : null; участке выдает синтаксическую ошибку.
И можно пояснить, что означает "?" и ":" в этой проверке? "Если, то, иначе"? | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 18:52)
| | > "Если, то, иначе"?
Да
Так $i существует? | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 18:58)
| | Поначалу нет, т.к. чекбокс не выбран. Когда его выберут, то, по идее, он будет выбран.
Но на деле, они почему-то сразу становится выбранным. Как можно избежать этого преждевременного выбирания чекбоксов? | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 18:41)
| | > !empty($i.$data['id'])
Так нельзя, empty - не функция, передать можно только переменную, но не выражение. | |
|
|
|
|
|
|
|
для: sms-send
(29.07.2010 в 19:05)
| | Tnx ;) | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 19:08)
| | $i.$data['id'] - есть ряд переменных ,которые соответствуют чекбоксам. Переменных этих много ($i1, $i2, $i3...). В <input name=""> должна быть имя этого чекбокса (т.е. переменная ($i1, $i2, $i3...)). В базе храниться часть этого имени (циферки).
Т.е. я для каждого чекбокса должен брать из базы свою циферку (по значению поля id). Из этого и вытекает $data['id']
Соответственно, что бы в базе хранить только циферки от этих имен чекбоксов, я должен вывести эту самую циферку и имя чекбокса, в его будущею переменную $i | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 19:14)
| | Ок, и откуда же беруться переменные, которых много ($i1, $i2,..) ?
Присылаются из формы пользователем? | |
|
|
|
|
|
|
|
для: sms-send
(29.07.2010 в 19:05)
| | А как можно это выражение
!empty($i.$data['id']) ? ' checked="checked"' : null;
|
занести в переменную? Или как выполнить эту проверку? | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 19:08)
| | Не отвлекайтесь. Надо изменить логику приложения и тогда информация о выбранном чекбоске окажется в другой перменной. Собственно, и проверка будет проходить иначе. | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 19:11)
| | А как собственно, сделать проверку по другому? Подскажите. Примером. | |
|
|
|