根据表单提交结果回显2个不同的网址位置

时间:2018-07-05 23:59:24

标签: php forms form-submit window.location

我有一个从数据库填充数据的表单,用户通过单击复选框选择感兴趣的各行。一切都已成功进行,但是我现在正尝试在提交表单时使页面重定向到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,而不是仅将那些检查为一项的提交发送给其他人。任何见解将不胜感激,摘要始终对您有所帮助。

2 个答案:

答案 0 :(得分:1)

答案

它们全部变为3的原因是您正在循环内进行重定向。意思是,在循环迭代0上,您执行了<script>window.location = 'bla',它实际上试图立即重定向(不是立即重定向,而是在其他人有机会做任何事情之前)

您需要将if子句移至循环块的外部和之后。

其他说明

  • 请不要将POST变量直接输入到SQL查询中。拜托。
  • 在脚本重定向中优先使用PHP标头。您的评论提到它不起作用,但是您正在使用WP,甚至考虑使用wp_redirect方法https://developer.wordpress.org/reference/functions/wp_redirect/
  • 删除<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']有效。

仍然不知道发生了什么,请附加调试数据,以便其他人可能知道问题所在