[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление строк в бд по id
Страницы: 1, 2, 3
FokeBox
сделал страницу с выводом данных и соответствующей кнопкой "Удалить" ссылка на удаление работает по формату delete.php?id=".$info["id"]."

Файл delete.php выглядит так:

$table = "prodam";
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
$del = $query = "delete from $table where (id='$del')";
mysql_query($query) or die(mysql_error());
$query = "SELECT * FROM $table";
$res = mysql_query($query) or die(mysql_error());
$row = mysql_num_rows($res);
echo ("Удалено");


После нажатия кнопки, приходит сообщение "Удалено", однако ничего не удаляется ( ... что не так?

_____________
Викижурнал - wikijournal.ru
JonNik
FokeBox,
Это полный код или часть его? Если при нажатии кнопки, то должно быть условие
FatCat
Цитата (FokeBox @ 14.12.2013 - 16:32)
$del = $query = "delete from $table where (id='$del')";

Это что и зачем?

_____________
Бесплатному сыру в дырки не заглядывают...
exotica
$del = $query = "delete from $table where (id='$del')";

Вообще интересная конструкция. Для чего она?)

------------------------------------
Блин кот чеширский опередил :D

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
FokeBox
Код полный, делал по уроку в инете, добавил лишь свои значения ... и не работает ... вот и спрашиваю что не так?

_____________
Викижурнал - wikijournal.ru
xlebosol
Цитата (FokeBox @ 14.12.2013 - 16:01)
Код полный, делал по уроку в инете, добавил лишь свои значения ... и не работает ... вот и спрашиваю что не так?

Хочу, желаю учиться по этим урокам. Эта надпись ("Удалено") будете выводится всегда.
Aeq
$del = mysql_real_escape_string($_GET['id']);
$query = "delete from $table where (id='$del')";
Aeq
в коде разбираться надо, а не просто копипастить.
а то рано или поздно скопипастите rm -rf /
sergeiss
Цитата (FokeBox @ 14.12.2013 - 17:32)
что не так?

Забудь про этот код, выкини его. И сделай заново. У тебя там всё "не так". А тот сайт, где его нашел, забудь. Потому что, судя по этому коду, ничему хорошему там не научат.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
FokeBox
Сделал так ) работает

<?
include('connect.php');
require_once('auth.php');
if($_GET['id']!=""){

$sqlz = "SELECT `id` FROM `prodam` WHERE `id` = '".$_GET['id']."'";
$bz = mysql_query($sqlz);
if (mysql_num_rows($bz) > 0) {
$del_id = mysql_query("DELETE FROM `prodam` WHERE `id` = '".$_GET['id']."' ");
if ($del_id) {
header ('Location: ads_deleted.html');
} else {
die("Не удаётся удалить строку № ".$_GET['id']);
}
}
else {
die("Объявление под № ".$_GET['id']." не найдено!");
}
}


?>


Единственно вопрос возникает такой, чтобы данный скрипт "работал" только для пользователя, который вошёл в систему, и чтобы только пользователь мог удалить свои записи, а не только чужие введя в строку id объявления
пользователь у меня по сессии определяется по полю login

_____________
Викижурнал - wikijournal.ru
Valick
Цитата
пользователь у меня по сессии определяется по полю login

кроме логина в сессии храните id пользователя, логин это хорошо, но id гораздо полезнее

применяйте эскейпирование, в таком виде ваш код мечта хацкера

_____________
Стимулятор ~yoomoney - 41001303250491
FokeBox
Цитата (Valick @ 15.12.2013 - 19:10)
Цитата
пользователь у меня по сессии определяется по полю login

кроме логина в сессии храните id пользователя, логин это хорошо, но id гораздо полезнее

ну у меня и id и login в сессии ), то и другое просто нужно ) ... так как проверку на login сделать для удаления записей пользователя?

_____________
Викижурнал - wikijournal.ru
Valick
никак, проверрку делайте по id пользователя, у вас это id должно быть привязано к этим удаляемым строкам, вот и проверяйте
"DELETE FROM `prodam` WHERE `id` = ".$_GET['id']." AND `id_user` = ".$_SESSION['id_user']

и id обычно число, поэтому одинарные кавычки в запросе не нужны
это как раз и есть причина того почему запрос не работает
и для $_GET['id'] в принципе эскейпирование не надо, просто приведение к типу int

_____________
Стимулятор ~yoomoney - 41001303250491
FokeBox
Цитата (Valick @ 15.12.2013 - 19:16)
никак, проверрку делайте по id пользователя, у вас это id должно быть привязано к этим удаляемым строкам, вот и проверяйте
"DELETE FROM `prodam` WHERE `id` = ".$_GET['id']." AND `id_user` = ".$_SESSION['id_user']

и id обычно число, поэтому одинарные кавычки в запросе не нужны
и для $_GET['id'] в принципе эскейпирование не надо, просто приведение к типу int

а как быть если у меня в таблице записей пользователей тоже использую id, а не id_user скажем

_____________
Викижурнал - wikijournal.ru
Valick
мне до лампы, что там у вас в таблице пользователей, у вас в таблице данных строка должна быть связана с id пользователя, либо в этой же самой таблице (а вы понимаете что там не может быть два одинаковых имени) при обычном отношении, либо в отдельной таблице связи если отношение многие ко многим, в случае когда данные этой строки могут принадлежать не одному а двум и более пользователям

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.