我有一个从数据库填充数据的表单,用户通过单击复选框选择感兴趣的各行。一切都已成功进行,但是我现在正尝试在提交表单时使页面重定向到2个位置之一,具体取决于所选的行数。 (选中复选标记。)出于安全原因,这是当前的脚本。
if(isset($_POST['submit'])){
$DELETE = "DELETE FROM job_picks WHERE ID='$userid'";
$wpdb->query($DELETE);
foreach($_POST['check_list'] as $selected){
$rowCount = count($_POST['ref']);
for ($i=0; $i<$rowCount;$i++)
{
if ($selected == $_POST['ref'][$i])
$compcode = $_POST['COMPCODE'][$i];
$note = $_POST['note'][$i] ; // changed for security reasons
$time = $_POST['time'][$i]; // changed for security reasons
$date = $_POST['date'][$i]; // changed for security reasons
$SQL = " left out for security reasons but is correctly populating data";
$wpdb->query($SQL);
echo "<script>window.location='https://example.com/step2/';</script>";
} ?>
<br class="clear">
<?php } ?>
<br class="clear">
<?php } ?>
<br class="clear">
<?php }
?>
我尝试更改线
echo "<script>window.location='https://example.com/step2/';</script>";
到
if ($rowcount == 1) {
echo "<script>window.location='https://example.com/step3/';</script>";
}
else
echo "<script>window.location='https://example.com/step2/';</script>";
,但似乎只将所有结果发送到step3,而不是仅将那些检查为一项的提交发送给其他人。任何见解将不胜感激,摘要始终对您有所帮助。
答案 0 :(得分:1)
答案
它们全部变为3的原因是您正在循环内进行重定向。意思是,在循环迭代0上,您执行了<script>window.location = 'bla'
,它实际上试图立即重定向(不是立即重定向,而是在其他人有机会做任何事情之前)
您需要将if
子句移至循环块的外部和之后。
其他说明
POST
变量直接输入到SQL查询中。拜托。<br/>
。如果您已分离逻辑并正确查看,则提交处理程序中散落的html的需求为零答案 1 :(得分:0)
我看到了您的$rowCount
和$rowount
,希望这只是错字。
,您可以调试循环中每个$rowCount
的值。类似于您的调试代码:
foreach($_POST['check_list'] as $selected){
$rowCount = count($_POST['ref']);
//print the debug data
print_r($rowCount, true );
}
die();
还要确保$_POST['ref']
有效。
仍然不知道发生了什么,请附加调试数据,以便其他人可能知道问题所在