Как вытянуть значение из php с ajax

281
24 мая 2017, 08:47

Кратко о всем:

  1. Хотел удалять записи без перезагрузки страницы. Решил использовать Ajax.
  2. При написании возникла проблема, конкретно:

    • Если же у меня записи из БД выводятся в цикле, то как мне вытянуть ID (значение поля с названием id) того этапа цикла, где как раз был этот ИД (где я нажал на кнопку с классом .del. Пробовал поставить аякс-скрипт внутрь цикла, но понял, что идея плохая, т.к. этот самый js-скрипт будет миллион раз повторятся.

Есть такой код:

<?php
     $pdo = new PDO("mysql:dbname=awesome;host=localhost", "main", "main");
     $sql = "SELECT * FROM users";
     $rs = $pdo->query($sql);
     while($row = $rs->fetch(PDO::FETCH_ASSOC)){
?>
     <div class="col-md-12">
         <h1><?php echo $row['title']?></h1>
         <h3><?php echo $row['text']?></h3>
         <p>Автор: <?php echo $row['author']?></p>
         <p><?php echo $row['time']?></p>
         <br><br>
         <a href="edit.php?id=<?php echo $row['id']?>">Редагувати</a>
         <a class="btn btn-danger del">Видалити</a>
         <hr>
     </div>
<? } ?>

И сам аякс:

<script>
            $(document).ready(function() {
                var id = <?php echo $row['id']; ?>;
                console.log(id);
                $(".del").bind("click",function(){
                    $.ajax({
                        url: 'delete.php?id=',
                        type: 'GET',
                        data: ({id: id})
                    });  
                });
            });
</script>

В файле delete.php вот такой код:

<?php
            $pdo = new PDO("mysql:dbname=awesome;host=localhost", "main", "main");
            $id = $_GET['id'];
            $sql = "DELETE FROM users WHERE id='$id'";
            $pdo->query($sql);
            echo '
                <p>Успішно видалено!</p>
                <br>
                <a href="index.php" class="btn btn-default">Назад<a>';
?>
Answer 1

Ну так добавьте ваш 'id' в доступном для JS виде в сам элемент как вы делаете для редактирования. Например так:

<a class="btn btn-danger del" data-id=<?php echo $row['id']?>>Видалити</a>

А дальше получите его в скрипте:

$('.del').bind('click', function(evtObject) {
  var elem = evtObject.target;
  $.ajax({
        url: 'delete.php?id=',
        type: 'GET',
        data: ({id: elem.dataset.id })
    }).done(function( data, textStatus, jqXHR ) {
        elem.parentNode.remove();
    });
});
READ ALSO
PHP Design Patterns Workbook?

PHP Design Patterns Workbook?

Интересует "Задачник по паттернам проектирования" по типу: задача из реального проекта - варианты решения с использованием паттернов с комментариямиВстречал...

234
PHP. MySQL. Cравнение

PHP. MySQL. Cравнение

Не работает код

332
SSH не видит команду

SSH не видит команду

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

648