我必须按两次提交按钮(PHP)

时间:2017-09-22 06:27:23

标签: php

此代码用于在激活按钮后将数据放入数据库,然后将其取下并替换为(问题保存!)。问题是它需要两次尝试让它消失(按钮)。 $ numofrow用于验证操作是否一旦进行(提交按钮的操作)。问题不是数据库,查询等,它真的是按钮。谢谢你的时间。

这是我的代码:

if(isset( $real_domaine)){

    $tt = "SELECT*FROM uniwix.table0 WHERE id= '$id' "; 
    $rr = mysqli_query($database,$tt);

    while($rows = mysqli_fetch_assoc($rr)){

        [rows call...]

        $md = "SELECT*FROM uniwix.table1 WHERE usern='$us' and question='$sujet'";
        $ao = mysqli_query($database,$md);
        $numofrow = mysqli_num_rows($ao);

        if($numofrow == 0){
            echo '<form action="" method="POST">
                <input type="submit" name="sauvegarder" value="Save the question"/>
                </form>';

            if(isset($_POST['sauvegarder'])){
                $qu = "INSERT INTO database (usern,question) VALUES('".$us."','".$sujet."')";
                $sm = mysqli_query($database,$qu);
            }
        }else{
            echo 'Question saved!';
        }

    //end of while loop
    }    

// end of  if(isset( $real_domaine))
}

1 个答案:

答案 0 :(得分:1)

  

问题不在于数据库,查询等,它真的是按钮。

按钮几乎是被动的,它只是在按下按钮时将数据发送到服务器。错误在于PHP代码的(缺乏)逻辑。

当脚本第一次运行时,$numofrow0。它运行echo,使用按钮生成表单,然后检查是否设置了$_POST['sauvegarder']。当然,它没有设置,因为第一次加载页面时,会使用GET方法。

用户按下按钮,使用POST提交数据,然后代码再次运行。 $numofrow仍然是0(数据库中尚未插入数据),表单会再次显示,但这次设置了$_POST['sauvegarder']并且收到的数据来自浏览器保存在数据库中。

您需要重新考虑您页面的逻辑。

更多,表格是空的。也许它有效,但这不是写表单的正确方法。您要发送到服务器的输入字段必须保留在表单中。

更重要的是,最重要的是,您的数据库代码是SQL注入的候选者。 不要使用字符串连接构建查询。使用prepared statements。另请阅读how prevent SQL injection in PHP