Доброго времени суток. Начал осваивать пхп , раньше писал на делфи. Решил что наилучшей практикой будет написать простенький сайт с минимальным функционалом(маленькая админка, создание, редактирование, удаление материалов). Все вроде слава богу, но вот на удалении я запнулся... Хотел сделать что бы при выборе галочки напротив нужного материала в таблице(етот список формируется при открытии страницы динамически и у каждого чекбокса имя уникальное) и выборе соответсвующего действия в выпадающем списке происходило удаление выбранных материалов... Механизм удаления мне понятен, но вот проблема в том, что форма с кнопкой и списком действий, не включает в себя эти чекбоксы, и соответсвенно я немогу прочитать из них айди(id=имя чекбокса)... Следовательно возник вопрос: можно ли каким то образом прочитать параметры элементов, которые н евходят в форму которая срабатывает в данный момент времени, или может есть более простой способ ешения данной проблемы... Зараннее благодарю откликнувшихся. Вот код: Код (Text): <html> <HEAD><TITLE>Administrator</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="../admin.css" rel="stylesheet" type="text/css"> </HEAD> <BODY> <div class="container"> <div class="header">Хедер</div> <div class="left"> <ul> <LI><form action="editor.php" method="post" name="form1000000"> <input type="hidden" name="indx" value="new"> <input type="hidden" name="ids" value="1"> <a href="editor.php" onclick="document.form1000000.submit(); return false;">Новый материал</a> </form></LI> <LI><form action="index.php" method="post" name="form2000000"> <input type="hidden" name="tp" value="edt"> <a href="index.php" onclick="document.form2000000.submit(); return false;">Редактировать материал</a> </form></LI> <li><A href="../index.php">На сайт</A></li> </ul> </div> <div class="content"> <div class="materials"> <?php include('../conf.php'); ?> <? if (!isset($tp)) { @$tp=$_POST['tp'];} if ($tp=='edt') { $result=mysql_query('SELECT * FROM `content`') or die(mysql_error());// делаем выборку из таблицы echo('<table border="1" width="100%">'); echo('<tr style="background:#665A34;"><td align="center">ID</td><td align="center">Название материала</td><td align="center">На главной</td><td align="center" width="50px">Действия</td>'); while($row=mysql_fetch_array($result)) { echo ('<tr><td align="center">'.$row['id'].' </td><td><form action="editor.php" method="post" name="form'.$row['id'].'">'); echo('<input type="hidden" name="indx" value="edtt">'); echo('<input type="hidden" name="ids" value="'.$row['id'].'">'); echo('<a href="editor.php" onclick="document.form'.$row['id'].'.submit(); return false;">'.$row['title'].'</a></form></td><td align="center">'); $main=$row['main']; if ($main==1) { echo ('Да'); } else { echo('Нет'); } echo('</td><td><input type="checkbox" name="'.$row['id'].'"></td>'); echo('</tr>'); } echo('</table>'); echo('<form name="edit" method="post" action="index.php"><div class="rigt_opt"> <select name="sel"> <option disabled>Выберите действие</option> <option>Удалить</option> </select> <input type="submit" name="s1" value="Выполнить"> </div></form>');
Проблема в том, что для каждого элемента таблицы(для каждой строчки) своя форма которая при нажатии на ссылку(выборе материала) отправляет все в редактор... Если сделать одну форму для всех элементов, то можно будит делать только одно какое то действие, или я не прав?
во-первых, не прав, т.к. на стороне сервера ты сам решаешь сколько действий и что именно делать когда прислали то-то или сё-то. во-вторых, тебе чекбоксы для формы отлично подходят. а на передачу в редактор достаточно ссылки с указанием номера материала. без формы. гетом.
Я еще не умею брать параметры из ссылки, только из формы... Если делать через формы все, то каким обрзом возможно получить параметр name чекбокса? приведи хоть какой то пример с моим кодом, а то я плохо еще понимаю все это...
дык разницы никакой. форма умеет тоже в ссылку параметры пихать. это задается в методе формы. он или POST ил GET соотв это массивы $_POST или $_GET а в ссылку ну просто как обычно lalala/pupupu?id=10 - вот это будет в гете
пример: Код (Text): echo "<form method='post' action='tvoyphp.php'> <input type='checkbox' name='delete[]' value='1'> название статьи №1 <a href='/edit.php?id=1'>изменить</a><br> <input type='checkbox' name='delete[]' value='2'> название статьи №2 <a href='/edit.php?id=2'>изменить</a><br> </form>"; соотв в файле tvoyphp.php ты делаешь var_dump($_POST) чтобы посмотреть для отладки что пришло и там форыч Код (Text): if (isset($_POST['delete']) ) { foreach ($_POST['delete'] as $nomer) { echo "удаляем статью №$nomer<br>\n"; } } в эдите Код (Text): if (isset($_GET['id'])) { echo "редактируем статью №{$_GET['id']}<br>\n"; } вот так просто. обрати внимание что в имени инпута скобочки квадратные. это позволит сделать массив. ну ты поймешь по вардампу
Это получается что нужно еще и ссылку возле каждого чекбокса делать? Я хотел просто сделать так: выделяем нужные нам поля таблицы чеками, выбираем в списке удалить и жмем кнопку...
может лучше поспать и завтра на все взглянуть еще разик? =) ты сейчас нахватаешься понимания и у тебя все уложится в голове. ты не торопись все в один день проглотить. обычно чекбоксы не просто так растыкивают, я тебе вот предложил вариант где рядом с каждой статьей есть возможность ее удалить вместе с другими через форму, и при этом тут же есть возможность ее отредактировать минуя форму.
Ладна спасиба, буду пробывать, все равно не усну пока не разберусь этом хоятбы) Если что завтра отпишусь как решил.
сделай мой пример: два файла плюс форма. и не забудь про var_dump а дальше ломай форму по чуть чуть и смотри на эффекты