Некорректно удаляется запись из mysql

179
06 июля 2022, 19:40

Есть новости на странице. У каждой кнопка в виде корзины (удалить). Пытаюсь удалить через ajax. Удаляется всегда последняя новость, а не та которую выбрал.

<script type="text/javascript">
  function delpost1(){
    Snackbar.show({text: 'Удалено!', actionText: 'Закрыть!', duration: 100000});
    var dlt = $('.delpost').serialize();
    $.ajax({
      type: "POST",
      url: "system/del_post.php",
      data: dlt,
    });
  }
  $('#btndel').click(function() {
    $.post("system/del_post.php");
  })
</script>

PHP & HTML:

<form action="javascript:void(0);" class="delpost">
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" id="btndel" onclick="delpost1()" stroke-linejoin="round" class="feather feather-trash-2 delete-note"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg>
  <input type="hidden" name="id" class="form-control" maxlength="12" value="'; echo $row['id']; echo '">
</form>';

обработчик:

if(isset($_POST['id']))
{
$id=htmlspecialchars($_POST['id']);
    include 'bd.php';
    
$res2=mysql_query("DELETE FROM `posts` WHERE `id`='$id'");
}

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

Answer 1

Уберите для начала

$('#btndel').click(function() {
    $.post("system/del_post.php");
})

поскольку он перебивает такой вызов id="btndel" onclick="delpost1()"

попробуйте так

onclick="delpost1(this)"

а сам

function delpost1(element){
    Snackbar.show({text: 'Удалено!', actionText: 'Закрыть!', duration: 100000});
    var dlt = $(element.form).serialize();
    $.ajax({
      type: "POST",
      url: "system/del_post.php",
      data: dlt,
    });
  }
Answer 2

Как вариант, удалить onclick="delpost1()" (и остальную js), и добавить событие на кнопки:

$('.delete-note').on('click', function (evt) {
  let block = $(this).closest('.delpost');
  $.ajax({
    type: "POST",
    url: "system/del_post.php",
    data: {id: block.find('[name=id]').val()},
    success: function () {
      Snackbar.show({text: 'Удалено!', actionText: 'Закрыть!', duration: 100000});
      // тут удаление блока новости
    }
  });
});
READ ALSO
D3 анимировать группу по path

D3 анимировать группу по path

Итак, я пытаюсь анимировать маркер в виде треугольника и текстовую подсказку вдоль пути заполнения

146
Не увеличивается значение переменной при инкременте [дубликат]

Не увеличивается значение переменной при инкременте [дубликат]

Всем привет, не подскажете почему счетчик counter не увеличивается при инкременте? По идее ведь у меня три картины и трижды должен сработать

173
Некорректно отрабатывает счётчик

Некорректно отрабатывает счётчик

Подскажите, в чём может быть проблема? Не округляются десятичные(

195