单击表单提交时执行PHP函数

时间:2016-12-01 06:43:22

标签: php html

我无法理解在单击表单提交按钮时通过页面传递的处理变量。基本上我有一个用户编写SQL查询的文本区域。然后点击提交。然后在同一页面(x.php)上,我必须在表格中显示结果。我想,当用户单击按钮时,我调用连接到数据库的函数,然后运行查询,并将结果输出到表中。我下面的代码是一个模拟,并没有很好的工作。但上面基本上是我想要做的。

在我的代码中,我调用了该页面,并检查是否已单击了正确的提交按钮,这是我应该怎么做的?

此外,我正在尝试在下面的代码中发布元数据,但该表如何替换页面上已有的内容?

<html>
<head> 
<title>CNT 4714 - Project Five Database Client</title>
</head>
<body style="background-color:white">
<center>
<h1 style="color:red">CNT 4714 - Project Five Database Client</h1>
<hr>
<div style="float:left; text-align:left;padding-right:80px; padding-left:80px; ">
<font color="yellow">
<?php

?>
Welcome Back!<br>
<?php echo $_POST["user"];?>
  </font>
</div>
<font color="yellow">
<div style="float:left; text-align:left">
<center>
<h2 style="color:green">Enter Query</h2><br><br>
Please enter a valid SQL Query or update statement. You may also just press<br>
"Submit Query" to run a defualt query against the database!
<form action="" id="sql" method="post">
<br>
  <textarea rows="10" cols="50" name="query" form="sql">Enter text here...</textarea><br><br>
  <input type="submit" name="submit" color="red">
  <input type="submit" name="" color="red" value="Submit Update">
</form>
<?php

if(isset($_POST['submit'])){
    echo "hello";
   query(); //here goes the function call
}
function query()
{
    echo "hello";
    $conn = mysqli_connect("localhost:3306", "root", "*******", "project4");
    $query = $_POST["query"];
    $result = mysqli_query($conn, $query);
    $metadata = mysqli_fetch_fields($result);
    print("<tr>");
    for($i=0; $i<count($metadata);$i++){
        print("<tr");
        printf("%s",$metadata[$i]->name);
        print("</tr>");
    }
}


?>
</center>
</div>
</font>
</center>

</body>
</html>

2 个答案:

答案 0 :(得分:2)

您正在尝试获取全局变量$_POST的值,同时将其提交到$_GET。解决此问题的方法是将method分配到表单元素中。

示例:

<form id="sql" action="" method="POST">

有多种方式可以检查或提交表单,其中一种方式(我一直使用的方式)是检查或$_SERVER['REQUEST_METHOD']等于&#34; POST&# 34 ;.通过这种方式,您可以区分GET,POST或PUT请求。

示例:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['sql']))
    {
        ....
    }
}

答案 1 :(得分:0)

如果您正在使用$_POST,则表单请求方法应为POST

<form action="" id="sql" method="post">

否则,默认情况下会以GET请求提交。

在这种情况下,您必须使用$_GET来访问变量。