Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 双击“需要”以插入数据库_Php_Html_Mysql_Mysqli - Fatal编程技术网

Php 双击“需要”以插入数据库

Php 双击“需要”以插入数据库,php,html,mysql,mysqli,Php,Html,Mysql,Mysqli,这可能是一个非常简单的解决方案,但我实在想不出来。如果我插入到我的数据库中,我必须按两次插入按钮,它才能工作。。我的猜测是,这与我在一个文件中使用两个表单有关,或者仅仅因为我在一个文件中使用了所有表单。请帮帮我 谢谢 代码: 问题是,您正在使用与生成表单的脚本相同的脚本处理表单提交。再加上您首先查询数据库,用您已经存储的内容生成表单,然后添加用户可能发布的任何数据,您将永远不会看到您添加的数据在您提交表单时第一次显示。 将insert查询移到顶部(在生成表单之前),或将关注点分开 让我告诉你我

这可能是一个非常简单的解决方案,但我实在想不出来。如果我插入到我的数据库中,我必须按两次插入按钮,它才能工作。。我的猜测是,这与我在一个文件中使用两个表单有关,或者仅仅因为我在一个文件中使用了所有表单。请帮帮我

谢谢

代码:



问题是,您正在使用与生成表单的脚本相同的脚本处理表单提交。再加上您首先查询数据库,用您已经存储的内容生成表单,然后添加用户可能发布的任何数据,您将永远不会看到您添加的数据在您提交表单时第一次显示。
将insert查询移到顶部(在生成表单之前),或将关注点分开

让我告诉你我的意思:

//don't OR DIE
$sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or die(mysqli_error($link));
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>";
while ($rows = mysqli_fetch_assoc($sql))
{//build form here
}
/*
CODE HERE
*/
if ($_POST['vraag'] != "") {
    //insert here, after form is generated
}
应该是:

if (isset($_POST['vraag'])) {
}
您正在将可能不存在的数组的键与空字符串进行比较,而您应该检查该数组键是否存在。使用
isset

我可以说一点,但我现在就不说了。还有一件事:再次->分离关注!表示层(输出:HTML等)不应包含数据库连接内容。这应该在别处进行。

使用AJAX异步处理表单(将提交的内容添加到已经存在的表中),或者至少使用单独的脚本。让一个脚本完成所有工作很快就会让你为一堆意大利面代码而哭泣

问题是你在处理表单提交时使用的脚本与生成表单的脚本相同。再加上您首先查询数据库,用您已经存储的内容生成表单,然后添加用户可能发布的任何数据,您将永远不会看到您添加的数据在您提交表单时第一次显示。
将insert查询移到顶部(在生成表单之前),或将关注点分开

让我告诉你我的意思:

//don't OR DIE
$sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or die(mysqli_error($link));
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>";
while ($rows = mysqli_fetch_assoc($sql))
{//build form here
}
/*
CODE HERE
*/
if ($_POST['vraag'] != "") {
    //insert here, after form is generated
}
应该是:

if (isset($_POST['vraag'])) {
}
您正在将可能不存在的数组的键与空字符串进行比较,而您应该检查该数组键是否存在。使用
isset

我可以说一点,但我现在就不说了。还有一件事:再次->分离关注!表示层(输出:HTML等)不应包含数据库连接内容。这应该在别处进行。

使用AJAX异步处理表单(将提交的内容添加到已经存在的表中),或者至少使用单独的脚本。让一个脚本完成所有工作很快就会让你为一堆意大利面代码而哭泣

它没有提交两次,实际上它没有在插入后加载数据

尝试添加

        if ($_POST['vraag'] != "") {
            $vraag = $_POST['vraag'];
            $antwoord = $_POST['antwoord'];
            echo "are you sure?";
            mysqli_query($link, "INSERT INTO questions (Question, Answer) VALUES (".$vraag.",".$antwoord.");") or die(mysqli_error($link)); 
        }
以前

  $sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or   
  die(mysqli_error($link)); 

这将在保存当前记录后选择您的记录。

它不会提交两次,实际上它不会在插入后加载数据

尝试添加

        if ($_POST['vraag'] != "") {
            $vraag = $_POST['vraag'];
            $antwoord = $_POST['antwoord'];
            echo "are you sure?";
            mysqli_query($link, "INSERT INTO questions (Question, Answer) VALUES (".$vraag.",".$antwoord.");") or die(mysqli_error($link)); 
        }
以前

  $sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or   
  die(mysqli_error($link)); 

这将在保存当前记录后选择您的记录。

哦,带有“确定吗?”的回音实际上没有任何意义。当我试图解决这个问题时,我把它放在那里。你可以编辑你自己的问题,你知道。。。我已经为你删除了
echo
,但是带有“你确定吗?”的echo真的没有任何意义。当我试图解决这个问题时,我把它放在那里。你可以编辑你自己的问题,你知道。。。我已经为你删除了
echo
,虽然谢谢你的评论,我通常不会在这个地方放数据库的东西,但这次我只是胡闹,不想创建多个文件。谢谢你的评论,我通常不会把数据库放在这个地方,但这次我只是胡闹,不想创建多个文件。