|
|
|
| День добрый! Хочу сделать две кнопки в одной форме, как разделить задачи выполнения операций над передаваемыми данными? | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 18:43)
| | каждой кнопке присвоить имя и проверять, какая из кнопок нажата. а передаваться будут ВСЕ данные формы. их можно только по-разному обрабатывать в зависимости от того, какая кнопка нажата. да, и кнопки должны быть типа button, не пытайтесь два сабмита прицепить. | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2008 в 18:47)
| | если просто button, то как передавать значения? почему нельзя 2 submita? Ведь будет выполняться какой-то один из них... | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 19:04)
| | onclick=document.getElementById("form").submit(); | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2008 в 19:07)
| | Всё здорово, только уже прописано onclick="return confirm ('Вы уверены?')"... как быть в такой ситуации? | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 19:28)
| | <input type="button" onclick='document.getElementById("form").submit(); return confirm ("вы уверены?");'> | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2008 в 19:32)
| | ну вот и дошёл до самого главного! как проверить-то теперь какая кнопка была нажата? | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 20:13)
| | Если передача методом POST, то:
if (isset($_POST['имя кнопки'])) .... | |
|
|
|
|
|
|
|
для: sim5
(15.04.2008 в 20:16)
| | <input type="button" name="del" value="Удалить" onclick=document.getElementById("add").submit(); return confirm ("Вы уверены?");>
if (isset($_POST['del']))
{
Echo "DELETE!";
}
не работает (
2 кнопки - 2 условия, а выполняется ни то, ни другое, а else... | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 20:26)
| | надо сравнивать не только по isset, но и по имени кнопки.
для проверки сначала выведите весь массив POST, посмотрите ЧТО там. | |
|
|
|
|
|
|
|
для: MIB
(15.04.2008 в 20:26)
| |
<?
switch (key($_POST)) {
case 'del' : //work
break;
case 'set' : //work
break;
// etc....
}
|
| |
|
|
|
|
|
|
|
для: sim5
(15.04.2008 в 23:03)
| | Правильнее все таки будет вариант Киналь, т.к. он работает без JS, да и код валиден вполне. | |
|
|
|
|
|
|
|
для: Artem S.
(15.04.2008 в 23:09)
| | С одной сторы да, с другой... Если форма ради двух кнопок, то еще может быть, но есть радиокнопки, если форма это не только две кнопки, то в чем смысл этих махинаций? Не проще ли якорь и принять GET запрос? | |
|
|
|
|
|
|
|
для: sim5
(15.04.2008 в 23:24)
| | А если в форме есть, например, загрузка файла? Тогда придется смешивать POST и GET, а если из эстетических соображений нужны непременно кнопки, то еще и JS чуток приплести придется. Некрасиво, имхо. | |
|
|
|
|
|
|
|
для: Киналь
(15.04.2008 в 23:52)
| | Вот именно - а если... Автор похоже мучится с двумя кнопками, стоит ли для этого заморачивать JS или два SUBMIT? Это что эстетика? | |
|
|
|
|
|
|
|
для: sim5
(15.04.2008 в 23:59)
| | Господа, кнопки действительно всего 2. На выбор пользователя представляется либо изменить запись в БД - "edit", либо совсем удалить её. В данном случае сложного ничего придумывать не стоит и всячески извращаться... Хотелось бы наоборот максимально упростить код и быть уверенным что он 100% выполниться, а чем больше всяких бирюлек и перламутровых пуговок, тем, мне кажется, только хуже. Всем принявшим огромное спасибо за проявленную инициативу! Данные передаю только методом POST, кнопки находятся рядом, поэтому подскажите наиболее простой и максимально надёжный(рабочий) вариант... | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 10:42)
| | просто и надежно - вообще без кнопок, а ссылками. ведь и редактирование и удаление
производится над ОПРЕДЕЛЕННОЙ записью, которая уже явно есть в базе. поэтому
достаточно передать ТОЛьКО ее id, а в принимающих файлах (edit.php или delete.php)
проверить на числовое заначение, найти запись по id и удалить или выдать форму для
редактирования (заполненную) соответственно. | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 10:42)
| | В форме пишешь:
<input type="submit" name="edit" value="редактировать" />
<input type="submit" name="delete" value="удалить" />
|
А в обработчике:
if(isset($_POST['delete']))
{
...
}
if(isset($_POST['edit']))
{
...
}
|
| |
|
|
|
|
|
|
|
для: Thrasher
(16.04.2008 в 11:11)
| | ок, всё работает без проблем, за исключением подтверждения нажатия второй кнопки... onclick=return confirm ("Вы уверены?") не работает... | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 12:15)
| |
<a href="as.php?delete=1" onclick="return confirm('Вы уверены?')">Удалить</a>
<a href="as.php?edit=1">Редактировать</a>
<?
if (isset($_GET['delete'])) .....
if (isset($_GET['edit'])) .....
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(16.04.2008 в 12:54)
| | с ковычками проблема, так как это организовано так:
echo '<input type="submit" name="del" value="Удалить" onclick="return confirm("Вы уверены?")">';
соответственно встаёт проблема с кавычками я так понимаю... или нет? | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 13:15)
| | можно и без echo обойтись, если так трудно слеши расставить перед кавычками. | |
|
|
|
|
|
|
|
для: elenaki
(16.04.2008 в 13:17)
| | не понимаю я эту тему со слешами!... вся форма рисуется внутри <?php ... ?> как без echo? | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 13:19)
| | <?php ... ?> как без echo?
=========================
закрыть вывод php ?>, начать вывод html, открыть вывод php <? и продолжать в том же
духе. рисовать html-код внутри echo или print - дурной тон. сами же потом в коде заплутаете. | |
|
|
|
|
|
|
|
для: elenaki
(16.04.2008 в 13:28)
| | всё понял, исправил.... просто иногда в поля приходится вставлять переменные... поэтому вся эта суета... | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 14:03)
| | переменные вставляются очень просто
<a href="page.php?value=<?=$peremennyaya?>">link</a>
|
| |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 13:15)
| | Правильно понимаете. | |
|
|
|
|
|
|
|
для: sim5
(16.04.2008 в 13:19)
| | как организовать это тогда? | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 13:20)
| | Накрыть стол, я так пологаю. ) Вы что издеваетесь? У вас есть учебники или вы хотите изучить все по ответам на форуме? Вам elenaki сказала, а я приводил пример без echo, либо раставьте слеши. Попробуйте это сделать в редакторе, ведь подсветка кода вам указывает, что не верна запись. | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2008 в 18:47)
| | > да, и кнопки должны быть типа button, не пытайтесь два сабмита прицепить.
Почему? Разве не пойдет
<input type='submit' name='act' value='Первое действие'>
<input type='submit' name='act' value='Второе действие'>
|
В обработчике проверить $_POST['act']. Не проверял, но должно бы работать. | |
|
|
|
|
|
|
|
для: Киналь
(15.04.2008 в 20:20)
| | И зачем? | |
|
|
|
|
|
|
|
для: sim5
(15.04.2008 в 20:21)
| | А вдруг форма большая?
Я бы тоже поставил одну кнопку наверху, а другую внизу | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2008 в 18:47)
| | >каждой кнопке присвоить имя и проверять, какая из кнопок нажата. а передаваться будут ВСЕ данные формы. их можно только по-разному обрабатывать в зависимости от того, какая кнопка нажата. да, и кнопки должны быть типа button, не пытайтесь два сабмита прицепить.
Это почему же нельзя два сабмита? Очень даже можно. Я так часто делаю, и всё работает. Зачем лишние извращения с JS? | |
|
|
|
|
|
|
|
для: Thrasher
(16.04.2008 в 10:46)
| | ок, всё работает без проблем, за исключением подтверждения нажатия второй кнопки... onclick=return confirm ("Вы уверены?") не работает... | |
|
|
|
|
|
|
|
для: MIB
(16.04.2008 в 12:49)
| | кнопки картинками с сылками, подтверждение сделайте без java а средствами php. | |
|
|
|
|
|
|
|
для: KPETuH
(16.04.2008 в 14:07)
| | зачем лишний раз обращаться к серверу? | |
|
|
|