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
Форумы портала PHP.SU :: Версия для печати :: Не получается удаление записей сделать
Форумы портала PHP.SU » » Работа с СУБД » Не получается удаление записей сделать

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

1. alexey11 - 02 Сентября, 2011 - 16:15:50 - перейти к сообщению
Помогите разобраться. Я на php не писал ранее. Поставили просто задачу на работе и нужно сделать.
Нужно чтобы добавлялись записи в таблицу, отображалось ссылкой и редактировать можно нажав на ссылку, но не получается удаление сделать. Чтобы кнопка отдельная была.
Это основной скрипт arh.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. mysql_connect('localhost','root');
  3.  
  4. $table="ulic";
  5.  
  6. if($_SERVER['REQUEST_METHOD']=='POST') {
  7.   $name = mysql_real_escape_string($_POST['name']);
  8.   if ($id = intval($_POST['id'])) {
  9.     $query="UPDATE $table SET name='$name' WHERE id=$id";
  10.   } else {
  11.     $query="INSERT INTO $table SET name='$name'";
  12.   }
  13.   mysql_query($query) or trigger_error(mysql_error()." in ".$query);
  14.   header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
  15.   exit;
  16. }
  17. if (!isset($_GET['id'])) {
  18.   $LIST=array();
  19.   $query="SELECT * FROM $table";
  20.   $res=mysql_query($query);
  21.   while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
  22.   include 'list.php';
  23. } else { // form displaying part:
  24.   if ($id=intval($_GET['id'])) {
  25.     $query="SELECT * FROM $table WHERE id=$id";
  26.     $res=mysql_query($query);
  27.     $row=mysql_fetch_assoc($res);
  28.     foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v);
  29.   } else {
  30.     $row['name']='';
  31.     $row['id']=0;
  32.   }
  33.   include 'form.php';
  34. }
  35. ?>


form.php
PHP:
скопировать код в буфер обмена
  1. <form method="POST">
  2. <input type="text" name="name" value="<?=$row['name']?>"><br>
  3. <input type="hidden" name="id" value="<?=$row['id']?>">
  4. <input type="submit"><br>
  5.  
  6. <br>
  7. <a href="?">Return to the list</a>
  8. </form>


list.php
PHP:
скопировать код в буфер обмена
  1. <a href="?id=0">Добавить запись</a>
  2. <br>
  3. <br>
  4. <? foreach ($LIST as $row): ?>
  5. <li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
  6. <? endforeach ?>
  7. <br>
  8. <br>
  9. <a href="index.php">Вернуться к справочнику</a>
2. antobra - 02 Сентября, 2011 - 22:58:26 - перейти к сообщению
Так же как делали добавление так же делаете и удаление.

Например ссылку на arh.php?delete=[идентификатор]

и в arh.php пишете
if (isset($_GET['delete']) AND $_GET['delete']!='' AND is_numeric($_GET['delete'])) {
mysq_query("DELETE FROM $table WHERE id='".$_GET['delete']."' ");
}

Сыро конечно, но основная идея такая.
3. alexey11 - 03 Сентября, 2011 - 09:40:26 - перейти к сообщению
antobra пишет:
Например ссылку на arh.php?delete=[идентификатор]

Вот именно это у меня не получается, что в смысле - [идентификатор] ?? у меня как раз ен получалось его передать. и если пытаюсь это сделать через кнопку submit то и нажимая на добавление записи - оно удаляет. Если ссылкой то подскажите пожалуйста где ее вставить ... и как и в каком файле.
Спасибо!
4. antobra - 03 Сентября, 2011 - 16:20:49 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <a href="arh.php?delete=<?=$_get['id']?>">удалить</a>
, а если выводится в циклах, то вставлять вместо get ту переменную, к которой относится цикл у вас возможно это $row['id'] (скрипт не смотрел, поэтому с переменной сами потрудитесь)
5. Мелкий - 03 Сентября, 2011 - 16:38:37 - перейти к сообщению
antobra пишет:
?=$_get['id']?>

Обратите внимание: имена переменный в PHP регистрозависимы. $_GET, $_Get, $_get - 3 разные переменные.
6. alexey11 - 03 Сентября, 2011 - 19:07:15 - перейти к сообщению
Ок! Спасибо! Все получилось.
Но есть одно НО, получается чтобы увидеть что запись удалилась - нужно F5 нажать.
(Добавление)
... а как в этом примере сделать чтобы этого ньюанса не было?
7. antobra - 04 Сентября, 2011 - 19:32:00 - перейти к сообщению
Скрипт выполняется по тому порядку как расположен код - от первой строки до последней. Нужно запрос в базу сделать позже, чем запрос на удаление, тогда страница тебе покажет актуальную информацию.
8. alexey11 - 04 Сентября, 2011 - 20:11:54 - перейти к сообщению
Получилось. Большое спасибо!

 

Powered by ExBB FM 1.0 RC1