Удаление из MySQL при помощи PHP

Roman_N

Guest
Удаление из MySQL при помощи PHP

Есть список пользователей который грузится из MySQL, рядом ссылка удалить. При клике на нее должно происходить удаление указаного пользователя из БД.
User1 [удалить]
User2 [удалить]
User3 [удалить]
...

Создаю массив $del_user[] с именами пользователей:
PHP:
    for ($i = 0; $i < $num_results; $i++)
    {
      $row = mysql_fetch_array($result);
      $del_user = $row['name'];
      mysql_query("delete from user where name='$del_user[$i]'");
    }
Как сделать так, чтобы удаление происходило только при нажатии на нужную ссылку, а не при каждой перезагрузки страницы?
 

Кром

Новичок
>Как сделать так, чтобы удаление происходило только при нажатии на нужную ссылку, а не при каждой перезагрузки страницы?

1. Нужно проверять, был ли submit формы.
2. Удаление нужно делать одним запросом.
2. Удалять нужно не по имени, а по ID.
 

regi

Новичок
можно сделать так, если не используешь формы:
когда формируешь страницу с юзерами, при формировании ссылок сделать что-нибудь такое:
PHP:
$result=mysql_query("SELECT * FROM user ORDER BY id ASC");
'<a href="user.php?id="'.$row['id'].'">Удалить юзера</a>';
и в начале скрипта проверяешь:
PHP:
if(!empty($_GET['id']))
{
  mysql_query("DELETE FROM user WHERE id='$_GET[id]'");
};
 

Фанат

oncle terrible
Команда форума
4. после удаления сделать редирект через header("Location: ")

regi
можно тебе задать конкретный вопрос?
Каким образом приведенный тобой код поможет решить проблему
Как сделать так, чтобы удаление происходило только при нажатии на нужную ссылку, а не при каждой перезагрузки страницы?
спасибо.
 

Roman_N

Guest
Как передать значение id через ссылку разобрался. Спасибо regi и Фанату.

Но удалить так и не могу.
Пишу уже так:
PHP:
  mysql_pconnect("localhost", "root", "");
  mysql_select_db("test");
  mysql_query("delete from `user` where `id`=`1` and `name`=`user1`");
Перезагружаю страницу.
Запись как была в БД, так и осталась. В чем ошибка?
 

Макс

Старожил PHPClub
если не сработал DELETE-запрос, то либо біл сделан неправильный (об этом можно узнать через[m]mysql_error[/m]) либо под твое условие не найдено записей.

ЗЫ
с кавычками в MySQL разберись. Ты их неправильно используешь

-~{}~ 26.09.04 15:48:

ЗЗЫ
тебе же сказали, удалять надо через id а не name.
 

Фанат

oncle terrible
Команда форума
что значит "Перезагружаю страницу"?
а зачем ты пишешь ТАК, когда regi тебе написал ПО ДРУГОМУ?
правда, у него тоже криво, надо так:
if(!empty($_GET['id'])) {
mysql_query("DELETE FROM user WHERE id=".intval($_GET['id']));
};
 

korvin0

моська
Фанат
в мане mysql написано, что "закавычивать" int-значения не противопоказано, т.к. mysql сам разберется, что есть что.
 

Фанат

oncle terrible
Команда форума
Коровин.
Сначала я хотел ответить тебе вопросом на вопрос: "А откуда такая уверенность, что значение имеет обязательно тип инт?", но вовремя вспомнил, с кем имею дело, и решил разжевать подоступнее.
Внимай:

в примере regi содержится две ошибки.
И обе из них исправляет мой.
1. Индекс массива id является строкой. А строки в пхп обозначаются кавычками.
Мы это исправляем, вынося массив из строки.
2. Если добавляешь в запрос строку, пришедшую прямиком от пользователя, ее надо обязательно проверить на необходимость добавления в нее слешей. Это, как бы, азы безопасности, но тебе с твоим уровнем приготовишки простительно этого не знать. Дело в том, что пользователь может напихать туда что угодно, а в пхп погут быть не включены мэджик квотес.
Принудительно же приведенная к инту величина прослешивания не требует.
 

korvin0

моська
> Принудительно же приведенная к инту величина прослешивания не требует.
ладно, убедил.
 

Фанат

oncle terrible
Команда форума
Беда в том, что меня совершенно не прикалывает убеждать тебя или уговаривать.
Ладо бы в своем топике тупал бы. имеешь право.
Но ведь в чужие лезешь засорять. со мной спорить, моська.
Лень мне, если честно.
отрезать и выкинуть твои бредни гораздо легче.
 

korvin0

моська
Фанат
если ты сейчас скажешь, что лучше мне не задавать вопросы в чужой теме, а всегда по самому мелочному вопросу создавать отдельну тему, то я так и буду делать впредь.
 

Фанат

oncle terrible
Команда форума
korvin0, я тбе скажу, что не надо флеймить в чужой теме.
Никаких вопросов ты не задавал. Ты сделал утверждение. В ман меня носом ткнул.
А сейчас мне лепишь горбатого про вопросы. Уводишь разговор в сторону, ведешь себя, как цензура не позволяет мне тебя назвать.
Вот за это я тебя и не люблю.
 
Сверху