Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу удалить запись из базы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Артур Миллер
Отправлено: 15 Января, 2015 - 16:37:11
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Имеется код:
PHP:
скопировать код в буфер обмена
  1. $currentTitle = $_GET['title'];
  2. echo "You are reading article ".$currentTitle."<br>";
  3. if (isset($_POST['delete'])) { 
  4. $result = mysql_query("DELETE FROM posts WHERE title='$currentTitle'");
  5. if(!$result)
  6. die ("Error: ".mysql_error());
  7. else
  8. echo "Article has been deleted";
  9. }

CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2. <body>
  3. <form method="post" action="article.php">
  4. <input type="submit" name="edit" Value="Edit article"/>
  5. <input type="submit" name="delete" Value="Delete article"/>
  6. </form>
  7. </body>
  8. </html>


На экран выводится:
You are reading article My title
т.е. имя текущей статьи передается в переменную $currentTitle

Но если нажать кнопку "Delete article" статья не удаляется, и при этом выводится Article has been deleted.
Если же в запросе на удаление вместо переменной жестко прописать title, то кортеж удаляется.
Т.е. где-то по дороге теряется значение, записанное в $currentTitle?
Что я делаю не так?
 
 Top
DelphinPRO
Отправлено: 15 Января, 2015 - 17:05:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Артур Миллер пишет:
Т.е. где-то по дороге теряется значение, записанное в $currentTitle?

Какой из этого следует вывод?
Вывод простой - нужно найти, где теряется.
Например вывести на экран текст запроса перед выполнением.
Потом попробовать выполнить этот запрос в PMA, скопировав со страницы браузера.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Tyoma5891
Отправлено: 15 Января, 2015 - 17:19:11
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)





тут
когда вы нажимаете кнопку делаете пост отправку, в гет уже ничего не будет..
 
 Top
RickMan
Отправлено: 15 Января, 2015 - 17:26:57
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




У форма метод post, а вы берете с гета.
Формой не передаете значение, сделайте как минимум так:
CODE (html):
скопировать код в буфер обмена
  1. <input type=hidden name=title value="<?php echo $currentTitle; ?>">

(Отредактировано автором: 15 Января, 2015 - 17:27:42)

 
 Top
DelphinPRO
Отправлено: 15 Января, 2015 - 17:30:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ну вот, не дали человеку самому отдебажить свой код Улыбка

RickMan пишет:
сделайте как минимум так:

лучше уж в action добавить get-параметр


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
RickMan
Отправлено: 15 Января, 2015 - 17:40:27
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Если бы челокек хотел сам отдебажить, то не тратил бы время на написание поста на форуме и ожидание ответа, а уже отдебажил бы давно.
 
 Top
Tyoma5891
Отправлено: 15 Января, 2015 - 17:41:50
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




RickMan пишет:
Если бы челокек хотел сам отдебажить, то не тратил бы время на написание поста на форуме и ожидание ответа, а уже отдебажил бы давно.

золотые слова!
но тока в том случае если не ленивый))))
 
 Top
DelphinPRO
Отправлено: 15 Января, 2015 - 18:07:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




RickMan пишет:
Если бы челокек хотел сам отдебажить

Слышал поговорку: ёж - птица гордая, пока не пнешь, не полетит Голливудская улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Артур Миллер
Отправлено: 17 Января, 2015 - 14:03:58
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Всем спасибо за помощь! Рейтинг не позволяет отлайкать.
Я ленивый, да, и мне очень стыдно, серьезно.

Я понял (вроде бы) почему не передается значение $currentTitle, но почему в этом куске:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['delete'])) {
  2. $result = mysql_query("DELETE FROM posts WHERE title='$currentTitle'");
  3. if(!$result)
  4. die ("Error: ".mysql_error());
  5. else
  6. echo "Article has been deleted";
  7. }


почему в куске выше не срабатывает die ("Error: ".mysql_error());, ведь запрос на удаление не выполнился, данные остались в базе, почему выводится "Article has been deleted"?


upd: а еще я тут подсмотрел одно решение, по-моему наиболее удобное:
Можно ведь вместо кнопки сабмит и отправки пост-запроса сделать просто ссылку типа
PHP:
скопировать код в буфер обмена
  1. while ($row = mysqli_fetch_assoc($query)):
  2. <a href="delete.php?id=<?= $row['id']; ?>">Удалить</a>

и id статьи будет передаваться в ГЕТе на отдельный файл delete.php и там ловиться:
PHP:
скопировать код в буфер обмена
  1. $id = $_GET['id'];
  2. $sql = "DELETE FROM articles WHERE id = '$id'";
  3. mysqli_query($connection, $sql)


почему я сам до этого не смог додуматься..

(Отредактировано автором: 17 Января, 2015 - 14:51:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB