За последние 24 часа нас посетили 40960 программистов и 1813 роботов. Сейчас ищут 875 программистов ...

form, метод get

Тема в разделе "PHP для новичков", создана пользователем Apple33, 25 май 2012.

  1. Apple33

    Apple33 Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    28
    Симпатии:
    0
    нужно сделать кнопку адаления
    вот мы имеем форму
    Код (Text):
    1.  
    2. <form method="get" action = "/index.php?delete=post">
    3. <input type="SUBMIT" name="del" value="del"></form>
    вот куда направляет

    Код (Text):
    1.  
    2. <?
    3. $id= $_GET["delete"];
    4. if ($id == post)
    5. if (isset($_GET['del'])) {
    6. $del = intval($_GET['del']);
    7. mysql_query("DELETE FROM `$table_union` WHERE `id`= '$del'") or die(mysql_error());
    8. };
    9. echo '';
    10. ?>
    не могу понять где ошибка, и почему при нажатии оно переходит на страницу index.php?del=del, хотя должно перейти на index.php?delete=post? прошу меня понять за такие вопросы, я только учусь=)
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если сабмитишь методом гет, то лучше в action не пиши никаких параметров, а указывай их только через input type="hidden"
    del=del берётся из кнопки submit, у которой, как видно из твоего кода, name=del и value=del.
     
  3. Apple33

    Apple33 Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    28
    Симпатии:
    0
    а как указать через hidden , чет я в нете такого не встречал. мож ворму написать, буду очень благодарен, уже двое суток парюсь с этой кнопкой
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (Text):
    1. <form method="get" action="/index.php">
    2.     <input type="hidden" name="delete" value="post" />
    3.     <input type="submit" name="del" value="del" />
    4. </form>
     
  5. Apple33

    Apple33 Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    28
    Симпатии:
    0
    не работает(( оно переходит на index.php?delete=post&del=del, но ничего не удаляется
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну, я тебе ответил только на вопрос
    На счёт удаления - в php коде там у тебя вообще нечто не понятное.
    Код (Text):
    1. $id = $_GET["delete"];
    В переменной $_GET['delete'] у тебя вообще-то строка текста "post". Какое отношение она имеет к $id - не понятно.
    Код (Text):
    1. if($id == post)
    строку текста (в данном случае post) нужно заключать в кавычки - одинарные или двойные. Иначе PHP считает, что это константа и сперва ищет такую константу среди определённых. Когде не находит - генерирует сообщение об ошибке (но ты его, наверно, не видешь, так как вывод ошибок, видимо, отключен) и принимает это как строку текста.
    Код (Text):
    1. if (isset($_GET['del'])) {
    2. $del = intval($_GET['del']);
    Тут ты проверяешь, пришла ли переменная $_GET['del']. Ну да она пришла. А дальше приравниваешь её к типу int (целые числа) и присваиваешь переменной $del. А что у нас в переменной $_GET['del']? А в переменной $_GET['del'] у нас строка текста "del". И когда PHP преобразует строку "del" к целому числу - то получается 0.
    Ну а дальше идёт запрос:
    Код (Text):
    1. mysql_query("DELETE FROM `$table_union` WHERE `id`= '$del'") or die(mysql_error());
    В котором ты ему говоришь: удали-ка мне из таблицы, название которой хранится в переменной $table_union, запись, у которой значение id равно тому, что у нас в переменной $del. А что у нас в переменной $del? А там у нас, как помним, число 0. А есть такой id в базе? Наверно, нет :)
    Код (Text):
    1. echo '';
    Забавная штука, интересно зачем она нужна?

    В общем, тебе нужно в переменной del передавать не строку текста del, а ID той записи, которую нужно удалить.
     
  7. Apple33

    Apple33 Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    28
    Симпатии:
    0
    жесть, это очень жестоко для моего мозга, на счет echo ' '; это типа проверочка была =D, ну уж извините, все, думаю, через это проходили...могу показаться слишком наглым...ноооо, не мог ли ты мне и удаление написать ^.^ просто я не знаю куда уже обращаться

    Добавлено спустя 2 минуты 1 секунду:
    просто del не приравнивать к int?

    Добавлено спустя 1 минуту 45 секунд:
    хотя нет, в таблице не бывет id со значением del(( тогда я точно уже не знаю
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    И что, удалять из базы записи, у которых id равен строке "del"? Я думаю, таких тоже нет :)
    В таблице у тебя есть id у записей (наверно есть =) ). Id - это целое число обычно. Так сказать, номер, который генерируется автоматически при добавлении записи. Когда ты эту кнопку в браузер выводишь тебе нужно знать этот самый id той записи, которую нужно удалить. Его нужно получить из базы и сгенерировать соответствующую кнопку.
    То есть, например, если написать так:
    Код (Text):
    1. <form method="get" action="/index.php">
    2.     <input type="hidden" name="delete" value="post" />
    3.     <input type="submit" name="del" value="123" />
    4. </form>
    , то будет удалена запись, у которой id равен 123 (если, конечно, такая есть в базе). Но тебе нужно туда подставлять цифру той записи, которую нужно удалить. Возможно, в том скрипте, в котором выводится эта кнопка, информация об этом id уже есть, но я кода не вижу и не знаю, в какой переменной эту цифру искать. Если же её там нету - то нужно сперва получить её из б.д.
     
  9. Apple33

    Apple33 Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    28
    Симпатии:
    0
    да, ее там нету, как ее получить?=))