Здрасте. Не знаю как объяснить русским языком задачу, которая попалась мне тут при создании гостевой книги. Поэтому попробую выкладывать кодом. Сначала я вывожу таблицей все записи из базы данных. И ставлю на против каждой строки чекбокс с именем соответствующего ID записи в базе. Код (PHP): echo "<form action=\"admin.php\" method=\"post\"> "; echo "<table align=\"center\" width=\"800\" border=\"1\">"; while($content = mysql_fetch_array($ath)) { $visible = "Скрыт"; if($content['visible'] == 1) $visible = "Опубликован"; echo "<tr><td width=\"40\" align=\"center\"> <input type=\"checkbox\" name=\"".$content['id']."\"></td>" ."<td width=\"80\" align=\"center\">".$content['data']."</td>" ."<td>".$content['user_name']."</td>" ."<td>".$content['user_comment']."</td>" ."<td align=\"center\">".$visible."</td>" ."</tr>"; } echo "</table>"; echo "<table align=\"center\" width=\"800\"><tr><td align=\"center\"> <input name=\"delete\" type=submit value=\"Удалить отмеченные\"> <input name=\"public\" type=submit value=\"Опубликовать отмеченные\"> </td></tr></table>"; echo " </form>"; Теперь можно отметить любые несколько записей галочкой и проделать с ними два действия, либо удалить, либо опубликовать. Как мне определить какие чекбоксы отмечены, если я не знаю какие вообще существуют т.к. они создаются динамически?
не так немного. в форме все чекбоксы обзываем одинаково - ids и добавляем квадратные скобки - признак того, что значений может быть несколько Код (Text): <input type="checkbox" name="ids[]" value="$content['id']"> а обработка - итерация $_POST['ids'] Код (PHP): foreach($_POT['ids'] as $id) { ... } и не работайте так с html. делайте более читаемые конструкции. например, вывод php-переменных в html-потоке. а ваш вывод html внутри php неуютно читается.
О, даже так можно, спасибо, буду знать. Понял смысл только первого предложения Все равно спасибо, буду стараться ставить больше комментариев. Добавлено спустя 10 минут 47 секунд: С кнопками тоже такой массив можно создать?
да комменты тут не особо нужны))) сравните ваша запись - html в php Код (PHP): echo "<tr><td width=\"40\" align=\"center\"> <input type=\"checkbox\" name=\"".$content['id']."\"></td>" ."<td width=\"80\" align=\"center\">".$content['data']."</td>" ."<td>".$content['user_name']."</td>" ."<td>".$content['user_comment']."</td>" ."<td align=\"center\">".$visible."</td>" ."</tr>"; мое предложение - php в html Код (PHP): <tr><td width="40" align="center"> <input type="checkbox" name="<?=$content['id']?>"></td> <td width="80" align="center"><?=$content['data']?></td> <td><?=$content['user_name']?></td> <td><?=$content['user_comment']?></td> <td align="center"><?=$visible?></td> </tr> удобнее же читается? нет нагромождения экранов двойных кавычек \" и конкатенаций. и сам код в редакторе подсвечивается разнообразно как html а не однообразно как строка внутри php
Так то да, читается удобнее и логичнее. Но мне это надо выводить в цикле же т.е. внутри пхп кода. Или как? Добавлено спустя 4 минуты 38 секунд: Можно конечно это в отдельный файл записать, а потом его "инклюдить" в цикле. Но я не уверен, что так будет лучше.
Код (PHP): <?php // готовим данные // ... // цикл foreach($rows as $content){ // это код внутри итерации массива. //... // переходим в "режим хтмл" ?><tr><td width="40" align="center"> <input type="checkbox" name="<?=$content['id']?>"></td> <td width="80" align="center"><?=$content['data']?></td> <td><?=$content['user_name']?></td> <td><?=$content['user_comment']?></td> <td align="center"><?=$visible?></td> </tr> <?php // вернулись в "режим пхп" // заканчиваем цикл } // код после цикла // ... // конец файла ?>
ОМГ! Я думал операторы "<?php"и "?>" работают также, как "begin" и "end" в паскале Вот оно что. Тогда это все меняет. Спасибо ОГРОМНОЕ!
вы можете в любой момент переходить от "режима хтмл" к "режиму пхп" и обратно. на самом деле не совсем корректное определение. грубо говоря есть поток, который должен быть интерпретирован машиной пхп ("режим пхп") и данные которые отправятся в поток в неизменном виде ("режим хтмл"). но ведь это может быть и текст и графика и все что угодно. но тут я для простоты обозвал их именно так и конструкция <?=$var?> грубо говоря заменяется за <?php echo $var; ?> то есть "войти в режим пхп, вывести в поток значение переменной var, выйти из режима пхп" удачи)
Чуть подправил код. Но появляются вот такие конструкции: Это неизбежно? Или есть еще секрет как этого избежать?
А зачем это избегать? Если вы эстет, можете попробовать альтернативный синтаксис Код (PHP): <?php while (...): ?> Some html <?php endwhile; ?> может быть это более читабельный код, хз
этого и не надо избегать))) видите, у вас даже редактор видит парность этой скобки и между <?= и переменной пробел не обязательно рисовать