Редактирование нескольких ячеек Contenteditable
Имеется таблица с 4 столбцами. У ячеек таблицы установлен атрибут contenteditable. Вся информация выводится с БД.
<?php foreach($options as $option):?>
<tr>
<td><?=$option['id']?></td>
<td><?=$option['title']?></td>
<td class="name" contenteditable><?=$option['name']?></td>
<td class="type" data-id ="<?=$option['id']?>" contenteditable>
<?=$option['type']?></td>
</tr>
<?php endforeach; ?>
Нужно сделать так что бы редактируемая информация в ячейках сохранялась в БД. Мне удалось реализовать сохранение ячеек только последнего столбца. Параметр data-id я передаю в файл script.js.
$('.type').focus(function(){
oldVal = $(this).text();
id = $(this).data('id');
}).blur(function(){
newVal = $(this).text();
if(newVal != oldVal){
$.ajax({
url: 'index.php',
type: 'POST',
data: {new_val: newVal, id: id},
success: function(res){
console.log(res);
},
error: function(){
alert('Error!');
}
});
}
});
С помощью Ajax эти значения отправляются в файл index.php, откуда они добавляются в базу:
function update_option(){
global $db;
$type = mysqli_real_escape_string($db, $_POST['new_val']);
$id = (int)$_POST['id'];
$query = "UPDATE options SET type = '$type' WHERE id = $id";
$res = mysqli_query($db, $query);
if( mysqli_affected_rows($db) ) return true;
else return false;
}
Но это только для полей одного столбца. А как сделать для тоже самое только для поля "name"?
Источник: Stack Overflow на русском