php значение переменной через некоторое время l oop для каждой строки - PullRequest
0 голосов
/ 03 марта 2020

У меня есть кнопка отмены в каждой строке таблицы, которая автоматически заполняется через некоторое время. L oop. $ Id разрешается правильно, но когда я нажимаю кнопку отмены, все активные строки изменяются. Я только хочу, чтобы строка, которая касается, была изменена.

Итак, через некоторое время l oop in php:

          <tr id="dataTable">
        <td id="nom"><?php echo $nom;?></td>

          <td id="statut"><?php echo $statut;?> </td>
        <td id="<?php echo $id;?>" >

            <a id="<?php echo $id;?>"  href="#" title="Annuler"   
             onclick="document.write('<?php              
              $queryannuler = "UPDATE wp_RDV SET statut = 'Testy' WHERE id_RDV = '".$id."'";
              $resultatannuler = $connexion->query($queryannuler); ?>'); location.reload(); 'return false';">Annuler</a>

        </td>
      </tr> 

Моя проблема в том, что столбец 'statut' находится в обновляется для всех строк, а не только для строки, в которой я нажимаю кнопку отмены. Спасибо, если вы можете помочь.

ОБНОВЛЕНИЕ Я пытался реализовать ваши различные советы с помощью ajax. Это тяжело. В оригинальном посте я не указал, что использую фреймворк Wordpress. Поэтому я изменил код @ssurli для учета wordpress

   <td id="<?php echo $id;?>" >
   <a id="<?php echo $id;?>" class="button delete"  href="javascript:void(0)" title="Annuler"   
   onclick="cancelRecord('<?php echo $id; ?>')">Annuler</a>
   </td>

<script>
function cancelRecord(id) {
jQuery.ajax({
    type: 'post',
    url: ajaxurl, 
    data: {id:id},
    action: 'delete_rdv',
    success: function(response) {
        return;
    },
    error: function(jqXHR, status, error) {
        alert('Error: Please refresh the page');
        return;
    },
    complete: function() {
        console.log('The function is hooked up');
        location.reload();
        console.log('The function is hooked up2');
    }
});

}

И в моих функциях. php file

add_action( 'wp_ajax_delete_rdv', 'delete_rdv' );
add_action( 'wp_ajax_nopriv_delete_rdv', 'delete_rdv' );

function delete_rdv() {
$queryannuler = "UPDATE wp_RDV SET statut = 'Testy' WHERE id_RDV = '".$_POST['id']."'";
$resultatannuler = $connexion->query($queryannuler);  //include connection file above
return $resultatannuler;
}

Я застрял на самом первом препятствии. Консоль отправляет сообщение об ошибке: admin. php? Page = plugin-vo c: 1 Uncaught ReferenceError: cancelRecord не определено

Но моя cancelRecord функция сразу после моя кнопка вызова, поэтому я не понимаю эту ошибку.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Здесь рабочий код.

Обновите строку таблицы, как показано ниже:

<tr id="dataTable">
    <td id="nom"><?php echo $nom;?></td>
    <td id="statut"><?php echo $statut;?> </td>
    <td id="<?php echo $id;?>" >
    <a id="<?php echo $id;?>"  href="javascript:void(0)" title="Annuler"   
     onclick="cancelRecord('<?php echo $id; ?>')">Annuler</a>
    </td>
</tr> 

Добавьте ниже js скрипты внизу вашей страницы html. Включайте jquery файл cdn только в том случае, если он еще не добавлен на страницу.

<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script>
function cancelRecord(id) {
    $.ajax({
        type: 'post',
        url: 'cancel.php', //use actual directory path, if not kept in root directory
        data: {id:id},
        success: function(response) {
            return;
        },
        error: function(jqXHR, status, error) {
            alert('Error: Please refresh the page');
            return;
        },
        complete: function() {
            location.reload();
        }
    });
}
</script>

Добавьте PHP файл с кодом PHP, имеющий запрос к базе данных, отвечающий за отмену записи. //cancel.php

<?php              
$queryannuler = "UPDATE wp_RDV SET statut = 'Testy' WHERE id_RDV = '".$_POST['id']."'";
$resultatannuler = $connexion->query($queryannuler);  //include connection file above
return $resultatannuler;

Надеюсь, это сработает для вас. Не стесняйтесь, если у вас есть какие-либо дополнительные вопросы.

0 голосов
/ 08 марта 2020

Это был исходный html запрос

    <td id="<?php echo $id;?>" >
<a id="<?php echo $id;?>" class="button delete"  href="javascript:void(0)" title="Annuler"   
onclick="cancelRecord('<?php echo $id; ?>')">Annuler</a>

Функция javascript не была определена, когда я поместил ее в тот же файл, что и php. Я переместился в файл индекса плагина. js и, самое главное, переместил эту строку:

action: 'delete_rdv',

в данные {}

data: {
        action: 'delete_rdv',
        id:id},

Вот полный код javascript:

jQuery( document ).ready(function($){ $('.button.delete').on('click', function(){ let id = $(this).attr('id'); cancelRecord(id); }); });

function cancelRecord(id) {
jQuery.ajax({
    type: 'post',
    url: ajaxurl, 
    data: {
        action: 'delete_rdv',
        id:id},

    success: function(response) {
        return;
    },
    error: function(jqXHR, status, error) {
        alert('Error: Please refresh the page');
        return;
    },
    complete: function() {
        location.reload();
    }
});
}

ajax вызывает функцию delete_rdv, которую я вставил в функции. php file

add_action( 'wp_ajax_delete_rdv', 'delete_rdv' );
add_action( 'wp_ajax_nopriv_delete_rdv', 'delete_rdv' );

function delete_rdv() {
$queryannuler = "UPDATE wp_RDV SET statut = 'Annulé' WHERE id_RDV = '".$_POST['id']."'";
$resultatannuler = $connexion->query($queryannuler);  //include connection file above
return $resultatannuler;
}

Отдельное спасибо @jeprubio за то, что он заставил посмотреть ajax способ и @sssurii за размещение своего кода и ответ на мой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...