Удаление/редактирование строк таблицы БД
Когда я не знаю, что написать в своем блоге, я иду на форум. Вот уж где есть возможность выбрать тему для заметки! На любой вкус. Итак, внимание, вопрос:
Имеется таблица на сайте, в которой перечислены данные взятые из таблицы MySQL (типа id, название, описание, дата добавления и т.д…). Все работает прекрасно. Но когда я хочу что-то удалить или изменить в этой таблице приходится это делать через phpmyadmin. Как мне это сделать непосредственно на сайте, напрямую?
------------------------------------------------------------
Слон | Большой, серый | 30-12-06 | Удл. | Ред.
Вообще, такой скрипт - неотъемлемая часть любой CMS. Ведь вся информация, как правило, хранится в базе данных. И когда мы через админку добавляем, удаляем, редактируем новости или статьи - фактически, мы добавляем, удаляем, редактируем записи в таблице.
if ( !isset( $_GET["action"] ) ) $_GET["action"] = "showlist";
switch ( $_GET["action"] )
{
case "showlist": // Список всех записей в таблице БД
show_list(); break;
case "addform": // Форма для добавления новой записи
get_add_item_form(); break;
case "add": // Добавить новую запись в таблицу БД
add_item(); break;
case "editform": // Форма для редактирования записи
get_edit_item_form(); break;
case "update": // Обновить запись в таблице БД
update_item(); break;
case "delete": // Удалить запись в таблице БД
delete_item(); break;
default:
show_list();
}
// Функция выводит список всех записей в таблице БД
function show_list()
{
$query = 'SELECT id, title, description FROM items WHERE 1';
$res = mysql_query( $query );
echo '<h2>Список</h2>';
echo '<table border="1" cellpadding="2" cellspacing="0">';
echo '<tr><th>ID</th><th>Наименование</th><th>Описание</th><th>Ред.</th><th>Удл.</th></tr>';
while ( $item = mysql_fetch_array( $res ) )
{
echo '<tr>';
echo '<td>'.$item['id'].'</td>';
echo '<td>'.$item['title'].'</td>';
echo '<td>'.$item['description'].'</td>';
echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред.</a></td>';
echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.</a></td>';
echo '</tr>';
}
echo '</table>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=addform">Добавить</a></p>';
}
// Функция формирует форму для добавления записи в таблице БД
function get_add_item_form()
{
echo '<h2>Добавить</h2>';
echo '<form name="addform" action="'.$_SERVER['PHP_SELF'].'?action=add" method="POST">';
echo '<table>';
echo '<tr>';
echo '<td>Наименование</td>';
echo '<td><input type="text" name="title" value="" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Описание</td>';
echo '<td><textarea name="description"></textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td><input type="submit" value="Сохранить"></td>';
echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
}
// Функция добавляет новую запись в таблицу БД
function add_item()
{
$title = mysql_escape_string( $_POST['title'] );
$description = mysql_escape_string( $_POST['description'] );
$query = "INSERT INTO items (title, description) VALUES ('".$title."', '".$description."');";
mysql_query ( $query );
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
// Функция формирует форму для редактирования записи в таблице БД
function get_edit_item_form()
{
echo '<h2>Редактировать</h2>';
$query = 'SELECT title, description FROM items WHERE id='.$_GET['id'];
$res = mysql_query( $query );
$item = mysql_fetch_array( $res );
echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_GET['id'].'" method="POST">';
echo '<table>';
echo '<tr>';
echo '<td>Наименование</td>';
echo '<td><input type="text" name="title" value="'.$item['title'].'"></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Описание</td>';
echo '<td><textarea name="description">'.$item['description'].'</textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td><input type="submit" value="Сохранить"></td>';
echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
}
// Функция обновляет запись в таблице БД
function update_item()
{
$title = mysql_escape_string( $_POST['title'] );
$description = mysql_escape_string( $_POST['description'] );
$query = "UPDATE items SET title='".$title."', description='".$description."'
WHERE id=".$_GET['id'];
mysql_query ( $query );
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
// Функция удаляет запись в таблице БД
function delete_item()
{
$query = "DELETE FROM items WHERE id=".$_GET['id'];
mysql_query ( $query );
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
?>
Псилоциб:
Спасибо огромное!!!
18 Март 2009, 15:39Скрипт очень помог, только пока еще не получается реализовать редактирование, идет ошибка Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\proba.ru\www\pages\program.php on line 100
Строка, на которую он ругается: $item = mysql_fetch_array( $res );
а $res, в свою очередь - результат, который возвращает sql-запрос на выборку именно той строки, ID которой и заявлено.
Жеха:
Добрый день, скиньте плиз ссылку на рабочий пример кода.
В ряде изменений исходного кода, вылезает таже ошибка, что и у предыдущего поста, только в другой строчке …
27 Май 2009, 12:51admin:
Жеха, это и есть рабочий пример. Картинка - реальный screenshot. Если что-то не получается, давайте обсудим это на форуме.
3 Июнь 2009, 18:50Жеха:
Спасибо за помощь, уже сделал …
10 Июнь 2009, 0:07Алексей:
Спасибо, целый день ковырял сегодня различные коды, все такое глючное…
18 Февраль 2011, 18:02Твой пример заслуживает внимания! Спасибо. Удачи
Grycik:
Огромнейшее спасибо, я 4 дня мучался с такой формой редактирования!!!
21 Апрель 2011, 22:56Оля:
что означает?
4 Июнь 2011, 22:32action=editform&id=’.$item['id']
Siriusal:
Огромное спасибо!!! Я от счастья чуть не взлетел!
20 Июнь 2011, 21:12Serfer:
Спасибо)
1 Июль 2011, 19:50