Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удаление записи из таблицы
 
 автор: Front   (22.02.2007 в 12:03)   письмо автору
 
 

Здравствуйте товарищи!

Вопрос следующего характера:

Есть таблица:

CREATE table photo (photoid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TINYTEXT NOT NULL,
photo TINYTEXT NOT NULL,
photo_os TINYTEXT NOT NULL


В базу данных записываются ссылки на фотографии (поле photo и photo_os):

Сами фотографии хранятся в каталоге на сервере:

Я хочу сделать чтобы при выводе базы с фотографиями около каждой фотографии появлялась radiobutton и если ее выбираешь и нажимаешь кнопку удалить, шел запрос к базе данных на удаление именно этой фотографии и из бд, и из каталога:

Скрипт вывода:

<?php
require_once("config.php"); 
$sql="select * from photo";
$result=mysql_query ($sql);
if (!
$result) exit(mysql_error());
$rows mysql_num_rows ($result);

echo 
"<form action=view.php method=get>";
echo 
"<table class=content border=1 align=center cellpadding=5 cellspacing=0>";
echo 
"<tr>";
echo 
"<td align=center><b>№</b></td>";
echo(
"<td align=center class=2><b>".Название."</b></td>"); 
  echo(
"<td class=2 align=center><b>".Фотография1."</b></td>");
  echo(
"<td class=2 align=center><b>".Фотография2."</b></td></tr>");
for (
$i=0;$i<$rows;$i++)
{
if (
$i%2==0$color='white';
else 
$color='pink';
$arr_quest=mysql_fetch_array($result);
echo 
"<tr>";
echo 
"<td class=3 bgcolor=$color align=center>".$arr_quest["photoid"]."</td>";
echo 
"<td class=3 bgcolor=$color align=center>".$arr_quest["name"]."</td>";
echo 
"<td class=3 bgcolor=$color align=center><input type=radio name='delradio' value='".$arr_quest["photoid"]."'><img src=upload/".$arr_quest["photo"]."></td>";
echo 
"<td class=3 bgcolor=$color align=center><input type=radio name='delradio' value='".$arr_quest["photoid"]."'><img src=upload/".$arr_quest["photo_os"]."></td></tr>";
};
echo 
"<tr><td colspan=20><input class=1 type=submit value='Удалить'>";
echo 
"</td></tr>";
echo 
"</table>";
?>


Вопрос: как будет выглядить этот запрос, подсобите!

   
 
 автор: elenaki   (22.02.2007 в 12:09)   письмо автору
 
   для: Front   (22.02.2007 в 12:03)
 

во-первых, не столбца, а строки - записи в базе хранятся в строках таблиц.
во-вторых, если вы хотите дать возможность удалить более, чем одну фотку за один клик (кнопка Сабмит у вас одна на всю форму), то лучше делать не радио-кнопки, а чек-боксы.
причем имена им давать таким образом: name='delradio[]' , чтобы сразу формировался массив из чек-боксов. потом в обработчике можно будет пробежаться по этому массиву, выбрать отмеченные и удалить соответствующие фотки.

   
 
 автор: Front   (22.02.2007 в 12:17)   письмо автору
 
   для: elenaki   (22.02.2007 в 12:09)
 

Так а как сделать такой запрос, ну хотя бы покажите пример. Как удалить всю строку я знаю. Меня интересует как это сделать в одной строке, чтобы удалилась только фотография.

   
 
 автор: cheops   (22.02.2007 в 12:21)   письмо автору
 
   для: Front   (22.02.2007 в 12:17)
 

Лучше ввести в таблицу photo уникальный номер и удалять по нему при помощи запроса
DELTE FROM photo WHERE id = уникальный_номер_фотографии

   
 
 автор: Front   (22.02.2007 в 12:31)   письмо автору
 
   для: cheops   (22.02.2007 в 12:21)
 

Получается что в таблицу мне необходимо добавить уникальный индекс для фотографий, и в этом случае он должен совпадать с первичным ключом?

   
 
 автор: cheops   (22.02.2007 в 13:32)   письмо автору
 
   для: Front   (22.02.2007 в 12:31)
 

Хм... погодите так он же у вас имеется (не заметил с первого разу :), тогда можно использовать такой запрос для удаления фотографии
DELETE FROM photo WHERE photoid = 44

   
 
 автор: Front   (22.02.2007 в 13:40)   письмо автору
 
   для: cheops   (22.02.2007 в 13:32)
 

Но в этом случае удалится вся строка, а мне нужно чтобы удалялась только фотография из строки с определенным photoid. Наверно тут нужно использовать UPDATE? А мне чето никак не сообразить как написать запрос чтобы photoid, name, photo оставались неизменными а photo_os очистилась.

   
 
 автор: mehelson   (22.02.2007 в 16:18)   письмо автору
 
   для: Front   (22.02.2007 в 13:40)
 

Здравствуйте
возможно я ошибаюсь, но мне кажется можно запросить так:
UРDАТЕ рhоtо SЕТ рhоtо_оs = 'NULL' WHЕRЕ рhоtо_id = 44;

   
 
 автор: cheops   (22.02.2007 в 16:33)   письмо автору
 
   для: mehelson   (22.02.2007 в 16:18)
 

Если используется значение NULL двоеточия не нужно указывать, кроме того полю рhоtо_оs не разрешается имееть значение NULL (см. первый пост темы), поэтому лучше присвоить пустую строку.
UРDАТЕ рhоtо SЕТ рhоtо_оs = '' WHЕRЕ рhоtо_id = 44;

   
 
 автор: mehelson   (22.02.2007 в 16:19)   письмо автору
 
   для: Front   (22.02.2007 в 13:40)
 

Здравствуйте
возможно я ошибаюсь, но мне кажется можно запросить так:
UРDАТЕ рhоtо SЕТ рhоtо_оs = 'NULL' WHЕRЕ рhоtо_id = 44;

   
 
 автор: mehelson   (22.02.2007 в 16:59)   письмо автору
 
   для: mehelson   (22.02.2007 в 16:19)
 

Да точно! Прошу прощения! Невнимательность...

И интересно, с телефона порой дублируется пост...дежавю

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования