【问题标题】:php variable value in a while loop for each row每行的while循环中的php变量值
【发布时间】:2020-03-03 16:54:46
【问题描述】:

我在表格的每一行上都有一个取消按钮,该按钮在 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');
    }
});

}

AND 在我的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 函数就在我的按钮调用之后,所以我不明白这个错误。

【问题讨论】:

  • 您的问题需要更多关注。您应该首先了解 ajax 调用是如何工作的。访问w3schools.com/php/php_ajax_php.asp 或使用jquery.com 之类的库来执行将执行取消的ajax 调用。如果您仍然有问题,请再次使用 ajax 调用,我们将为您提供帮助
  • 也许我用“取消”这个词误导了你。此按钮所做的只是更改数据库列之一中的文本。我只是不明白为什么它会更改多行中的文本,而不仅仅是相关行。我真的需要 ajax 来做到这一点吗?
  • 当 JavaScript 事件发生时(在浏览器上),您想执行 php 代码(在服务器上)。看看 ajax,你就会明白它是如何发展的。您无法按照您尝试的方式从 javascript 在服务器上执行代码
  • 错误的原因是您在渲染页面时更新值,而不是在单击按钮时。测试一下,加载页面但不要点击任何东西。即使你不想处理 AJAX,你也至少需要 REST。

标签: php database while-loop sql-update


【解决方案1】:

这里是工作代码。

如下更新表格行:

<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 查询。 //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;

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

【讨论】:

  • 嗨,你能看看我的新代码,请给我你的意见,为什么它不起作用
  • 要解决控制台错误,您可以在文档就绪时绑定点击事件。将以下代码添加到脚本中:jQuery( document ).ready(function($){ $('.button.delete').on('click', function(){ let id = $(this).attr('id'); cancelRecord(id); }); });
  • 我在函数内部和函数之前尝试了这段代码,但它不起作用。我感觉错误来自这部分:admin.php?page=plugin-voc:1。我必须研究什么是plugin-voc。感谢@sssurii 的帮助。我会告诉你的
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2017-05-02
    • 2019-11-30
    • 2013-03-26
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多