繁体   English   中英

每行的while循环中的php变量值

[英]php variable value in a while loop for each row

我在一个 while 循环中自动填充的表的每一行上都有一个取消按钮。 $id 解析正确,但是当我单击取消按钮时,所有活动行都被修改。 我只希望修改相关的行。

所以在php的while循环中:

          <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');
    }
});

}

并且在我的functions.php文件中

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-voc:1 Uncaught ReferenceError: cancelRecord is not defined

但是我的cancelRecord函数就在我的按钮调用之后,所以我不明白这个错误。

这里是工作代码。

更新您的表格行,如下所示:

<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 文件,其中 DB 查询负责取消记录。 //取消.php

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

希望它对你有用。 如果您有任何进一步的查询,请随时。

这是原始的 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>

当我将它与 php.ini 放在同一个文件中时,未定义 javascript 函数。 我进入了插件 index.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 调用了我放在 functions.php 文件中的函数 delete_rdv

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 发布他的代码并回答我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM