Пакетное обновление данных в админке

13.01.2018  08:21

Задача: в самописной админке сайта сделать пакетное редактирование записей. Конретно надо было сделать возможность менять порядковые номера. Будем делать по-человечески, аяксом.

HTML-код формы:
<form action="#" id="frm" class="commonform">
<input type="text" value="1" name="position[1]" /><br />
<input type="text" value="2" name="position[2]" /><br />
<input type="text" value="3" name="position[3]" /><br />
<input type="submit" value="Сохранить" id="frmSubmit" class="save" />
</form>

Форма редактирования данных в админке сайта

JavaScript (AJAX запчасть, навешенная на сабмит формы и посылающая данные в PHP-обработчик):
$(document).ready(function(){
	$(".save").click(function(e){
		$('.success').remove();
		var lnk = '/admin/ajax/functions.php';
			var cFrm = $('.commonform');
			var cFrmData = cFrm.serialize();
			$.post(lnk, cFrmData, function(data) {
				if (data.SUCCESS) {
					cFrm.after(data.SUCCESS);
					// alert('ok');
				}
				else {
					alert('err');
				}
		}, "json");
		return false;
	});
});


PHP (серверная часть, обрабатывающая полученные из формы данные и записывающая их в базу, файлик functions.php):
function savefrm(){
foreach ($_REQUEST['position'] as $k => $v) {
$out .= <<
EOD;
//debug
//DB Update:
$sql = mysql_query("select * from `table` where `id`='{$k}' limit 1");
if(mysql_num_rows($sql)){
$item = mysql_fetch_assoc($sql);
$sql = mysql_query("
                UPDATE `topbg`
                SET `position` = '{$v}'
                WHERE `id` ='{$k}'");
}
}
if (!empty($out)) $arResult["SUCCESS"] = "Порядковые номера успешно обновлены.";
else $arResult["ERROR"] = "Ошибка.";
echo json_encode($arResult);
}
if($_REQUEST["act"]=="save") savefrm();


Всё, получилось просто и удобно для контент-менеджера, администрирующего CMS.


перейти в Блог | Блог (стр. 4)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): JavaScript 24  jQuery 19  PHP 52  web-программирование 76  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)