Удаление записей: расширяем возможности стены как ВКонтакте

Итак, благодаря моей статье у тебя теперь есть стена как в контакте, и любой пользователь может на ней оставлять записи. Все пишут замечательные вещи в твой адрес, только вот Саша (долбаный корч, блин) написал, что ты мучаешь котят каждое полнолуние. И здесь ты задумался о такой функции, как отцензу.. ээм, удалить клеветническую запись.

Как же нам такое реализовать? Вот приблизительный список необходимых действий:
- сначала проверяем, авторизованный ли я польватель (могу ли удалять записи)
- если да, возле каждой записи выводим кнопку удаления
- при нажатии на эту кнопку отправляем отдельному скрипту ajax-запрос на удаление записи
- сприпт, обрабатывая запрос на удаление, проверяет, админ ли отправил запрос, и если да, то удаляет запись

Все понятно? Чудно! Идем дальше.

Есть такое понятие, как сессионные переменные. Подробно о них я рассказывал здесь. Если вы не знаете, что, зачем и как, ознакомьтесь с этой статьей %)

Вообще, здесь я по реализации пробегаюсь достаточно поверхностно, просто дополняю код, уже написанный в статье "Создание стены как ВКонтакте". Так что я рекомендую вам скачать исходный код, с помощью которого, думаю, вам будет гораздо проще разобраться, где, что и к чему.

Нам нужно в самом начале скрипта нашей стены (index.php) добавить следующий код:

<?php
session_start();
?>

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

А далее в разделе head нашего скрипта дописать javascript-функцию для отправки запроса на удаление записи (во многом она похожа на функцию, которая отправляет запрос на добавление текста, меняются лишь пара строк):

function delete_msg(msgid){
 jQuery.ajax({
 type: "POST",
 url: "delete.php",
 data: {'msg': msgid},
 success: function(){
 $('li#'+msgid).html('Удалено!');
 }
 });
 return false;
};

И еще ниже, где мы выводим записи, перепишем код на такой:

$result = mysql_query("SELECT * FROM `wall` ORDER BY `id` DESC");
while ( $row = mysql_fetch_array($result) )
{
 echo '<li id="'.$row['id'].'">'.$row['message'];
 
 if ( $_SESSION['login'] == 'vasya' )
 echo ' <em><a href="javascript:void(0);" onclick="delete_msg('.$row['id'].');">Удалить</a></em>';
 
 echo '</li>';
}

Т.е. в итоге чистым html-ем у нас будет получаться что-то типа этого:

<ul id="wall">
 <li id="5240">проверочка 
 <em><a href="javascript:void(0);" onclick="delete_msg(5240);">Удалить</a></em>
 </li>
 <li id="5239">werwer 
 <em><a href="javascript:void(0);" onclick="delete_msg(5239);">Удалить</a></em>
 </li>
 <li id="5238">а вооще это база данных запрос через Аякс? 
 <em><a href="javascript:void(0);" onclick="delete_msg(5238);">Удалить</a></em>
 </li>
 <li id="5237">nggg 
 <em><a href="javascript:void(0);" onclick="delete_msg(5237);">Удалить</a></em>
 </li>
 <li id="5234">Спасибо это бомба, только заточить стили и всё!!! 
 <em><a href="javascript:void(0);" onclick="delete_msg(5234);">Удалить</a></em>
 </li>
</ul>

Еще нам необходимо создать файл delete.php, который будет обрабатывать ajax-запросы на удаление, со следующим содержимым:

<?php

session_start(); // загружаем переменные сессии

if( isset($_SESSION['login']) and $_SESSION['login'] == 'vasya' ) // проверяем пользователя: если это Вася (а Васе можно), то удаляем запись
{
 include('config.php'); // там мы соединяемся с базой данных

 $msg_id = (int)$_POST['msg']; // получаем ID сообщения, которое нужно удалить
 
 mysql_query("DELETE FROM `wall` WHERE `id` = $msg_id");
 echo 'Удалено успешно!';
}
else
{
 echo 0;
}

?>

Ну вот и все!

Пример здесь. Исходник здесь.

Ребята, я тут не все вопросы покрыл, сам знаю, но лишь потому, что я призываю вас самим пробовать на основе полученных знаний совершенствовать скрипт. Тогда у вас и навыки закрепятся, и опыта прибавится. Buena suerte! ;)

 Жду с нетерпением
ваших комментариев!
 

Подписаться на RSS

Вы можете нажать "подписаться", чтобы следить за моими новостями!
Так вы всегда будете в курсе появления новостей на сайте =)
О том, что такое RSS можно прочитать здесь.

Подписаться

Подписаться на Twitter

Я специально зарегистрировался в Твиттере, чтобы вы могли следить за обновлениями на сайте =)

Подписаться

Envato marketplace А эти люди занимаются прокатом карнавальных костюмов и масок в Минске. К слову, я им делал сайт.