【问题标题】:How to save entries into db on submit button click only如何仅在单击提交按钮时将条目保存到数据库中
【发布时间】:2014-08-12 10:52:16
【问题描述】:

我有这样的代码

<?php
if ( $thismemberinfo[msurf] >= $msurfclicks ) {
    $sql=$Db1->query("INSERT INTO d_bonus VALUES('$userid','0.02',NOW())"); 
    echo "success";
} else {
    echo "wrong";
}
?>
<form action="" method="post" name="myform">
  <input type="hidden" value="123" name="match">
  <input type="submit" value="Claim your daily bonus $o.o2" name="submit1">
</form>

我想在用户单击提交按钮后将值保存到数据库中。我一直在尝试不同的方法,但仍然无法接近它。

有什么想法/提示我下一步应该做什么或做错了吗?

下面给出的建议是我的代码:

<form action="" method="post" name="myform">
<input type="hidden" value="123" name="match">
<input type="submit" value="Claim your daily bonus $o.o2" name="submit1">
</form>
<?php
if(isset($_REQUEST['submit1']))
{
echo "$thismemberinfo[msurf]";
echo " $msurfclicks";
if ( $thismemberinfo[msurf] >= $msurfclicks ) {
      //$sql=$Db1->query("INSERT INTO d_bonus VALUES('$userid','0.02',NOW())"); 
          echo "success";

}
else
{
echo " not set " ;
}

}

?>

【问题讨论】:

  • 检查 $_POST['submit']
  • 它的工作原理是这样的:PHP 构建页面,并将页面发送给客户端。之后,如果客户选择,客户提交表单。将表单 POST 的数据(可通过$_POST 访问)发送到服务器,从而生成另一个 PHP 请求。在该请求中,您需要检查 $_POST 值,然后在服务器端执行您想要的任何操作。请注意,在$_POST 之后,服务器应该向客户端发送另一个响应。
  • 您应该在表单上更新您的操作,action="YourPage.php",虽然它可能效果很好,但建议和更好的做法是填写它。

标签: php mysql http-post


【解决方案1】:

您可以使用isset 来检查按钮是否被点击

if(isset($_REQUEST['submit1']))
{

     if ( $thismemberinfo[msurf] >= $msurfclicks ) {
     $sql=$Db1->query("INSERT INTO d_bonus VALUES('$userid','0.02',NOW())"); 
     echo "success";
     }
     else
     {
        echo "wrong";
     }
 header("location:".$_SERVER['PHP_SELF']);
}

【讨论】:

  • 它工作但部分。一页刷新,它也运行php代码。这对我来说是什么问题..我只想编写代码以在按钮单击时运行。感谢您的进一步建议
  • 我已经编辑了代码,你可以用这个代码检查它是否工作正常
  • @pateik .. 它部分工作.. 它在按钮单击后运行查询。现在当我刷新页面时,它再次运行查询。即,单击后如果有人引用该页面,它将继续运行查询。这是我无法处理好的问题..
  • 这段代码对我来说部分有效,我已经应用了一些额外的检查来保持它的工作。
  • 尝试像我在上面的代码中所做的那样重定向页面
【解决方案2】:

您需要检查请求是否来自帖子提交,即正如其他人指出的那样检查$_POST['submit']

if(isset( $_POST['submit'] ) {
    // your complete rest php code goes here to insert the record
}

在页面刷新时,它会看到请求不是提交的 post 请求,因此不会执行 if 中的 php 代码,只会显示页面。

【讨论】:

  • 我已经更新了代码,请检查并指导我代码中有什么问题。缺少什么??
【解决方案3】:

您的代码缺少一些东西..

要将条目插入数据库,您应该多考虑需要执行哪些任务,我会给您一个列表,您可能已经完成了一些。

1) 连接到数据库。 2)获取输入到表单中的值,并将它们存储在局部变量中,在您的情况下,您在表单上使用了 POST,因此.. 这是一个示例:

$Field1 = mysql_real_escape_string($_POST['match']); // match?? This post data comes from the name field of your form.

3) 创建您的查询...例如..

$sql = "INSERT INTO table_name (table_heading) VALUES ('$Field1')";

4) 运行查询

【讨论】:

  • 兄弟,我想你没有得到我的问题。表单没有任何内容,表单之外的所有内容..并设置..我只想在提交按钮单击时运行查询..
  • 不,我明白了,你的问题是你没有获得你的表单提交的数据,它正在被发送出去,只是你没有做任何事情,如果你看到我回答的第 2 部分,一个很好的简单方法是获取变量中的数据,我将在第 2 部分更新您需要获取的字段,2 秒。
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2021-08-25
相关资源
最近更新 更多