Главная   Новости   Поиск   
Азбука программиста




Яндекс.Метрика

Редактор списка в стиле Web 2.0. Удаление записей

Редактор списка в стиле Web 2.0. Удаление записей

В прошлых статьях мы изучали:

  • структуру приложения;
  • создание главной странички;
  • добавление новых записей;
  • редактирование записей.

Источник информации http://medik-oz.ru/%d0%b1%d0%be%d0%bb%d0%b5%d0%b7%d0%bd%d0%b8/%d0%b0%d0%bb%d0%bb%d0%b5%d1%80%d0%b3%d0%b8%d0%b8/%d0%b0%d0%bb%d0%bb%d0%b5%d1%80%d0%b3%d0%b8%d1%8f-%d0%bd%d0%b0-%d1%85%d0%be%d0%bb%d0%be%d0%b4/

Сейчас добавим возможность удаления записей.
Чтобы удалить запись, нужно просто кликнуть на соответствующую ссылку после записи. При этом действии будет вызвана функция deleteItem(), которой передается идентификатор (id) записи в БД, в качестве параметра.

Разглядим, как в действии работает эта функция.

function deleteItem(id) {
var pars = $H({itemid:id}).toQueryString();
new Ajax.Request("scripts/delete.php", {method:"post", parameters:pars,
onSuccess:function(transport) {
var data = eval('(' + transport.responseText + ')'); //удаляем данный элемент из перечня
var listElem = $('itemId_' + data.deletedId).parentNode.getAttribute('id');
Element.remove(listElem);
var listNum = listElem.substring(8); //обновляем номера всех оставшихся других записей
var nodes = $$('#list li');
nodes.each( function(node, index) {
if (index >= listNum) {
node.setAttribute('id', 'listNum_' + index);
var innerNodes = $A(node.getElementsByTagName('div'));
innerNodes[0].innerHTML = index + 1;
innerNodes[1].setAttribute("onclick", "closeOtherEditors(" + index + ")");
}
}
); //удаляем редактор из массива
editors.splice(listNum,1);
}
});
}

В строчках 2, 3 мы формируем строчку с параметрами и исполняем Ajax запрос. В этом случае вызывается скрипт delete.php.

Если этот вызов прошел успешно или можно сказать удачно и без эррора, то будет произведена анонимная функция, самостоятельно объявленная в параметре onSuccess запроса.

В этой функции поочередно исполняем последующие операции:
1) определяем id удаленного элемента (строчка 7);
2) определяем элемент перечня (тег ), в каком находится удаленный элемент (строчка 9);
3) удаляем отысканный элемент перечня (строчка 10);
4) определяем номер (порядковый) удаленного элемента (стоит заметить, что он не совпадает с id) (строчка 11);
5) обновляем порядковые номера абсолютно у всех оставшихся частей перечня (строчки 13-23);
6) удаляем редактор из массива editors (строчка 25).

Видите ли, код достаточно массивный, но не непростой.

Единственное на что, хотелось бы направить ваше внимание, это строчка 18. В ней при помощи функции $A() мы создаем массив всех блоков (теги ), которые находятся снутри текущего элемента перечня. После чего мы изменяем их характеристики (строчки 19, 20).

Сейчас разглядим, скрипт delete.php, который удаляет обозначенную запись из БД.

require_once("dbdata.php");
$id = null;
$id = $_POST['itemid'];
if (($id != null) && ($id > 0)) {
//удаляем запись в БД
$con = connect();
$updateQuery = sprintf("DELETE FROM listitems WHERE id=%d", mysql_real_escape_string($id));
if (mysql_query($updateQuery)) { $results['deletedId'] = $id; } else { $results['error_mes'] = "Не могу обновить запись: ".mysql_error(); }
}
if ($con != null) { mysql_close($con); } echo json_encode($results);

Видите ли, этот скрипт очень похож на скрипты обновления и удаления записей, обрисованных ранее. Потому я остановлюсь лишь на особенностях.

Сначала, направьте внимание на запрос (строчка 8) и внедрение функции mysql_real_escape_string, которая позволяет предупредить атаки типа SQL Injection.
Принцип ее работы состоит в том, что она экранирует служебные знаки SQL. В итоге выполнения скрипта будут возвращена строчка в формате JSON, содержащая id удаленного элемента либо сообщение об ошибке. В принципе, на этом шаге реализованы так можно сказать все функции нашего приложения. 



Безопасность

В этой статье приводятся методы борьбы с вирусами. Опишем типовую ситуацию, которая знакома многим пользователям ПК: установлен новый антивирус, раз в день обновляются базы, все подозрительные файлы сразу удаляются. В один ясный, солнечный день вы приходите к другу и чтобы показать новые фотки, подключаете свою флешку к его компу. Но антивирус начинает вам говорить, сколько вирусов он отыскал на вашей флешке...

Читать далее