![](/img/trans.png)
[英]PHP: “While” loop returns same value for each iteration of the variable
[英]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.