单击表单提交时执行PHP函数
我无法理解单击表单提交按钮时通过页面传递的处理变量。基本上我有一个用户写一个SQL查询的文本区域。然后点击提交。然后在同一页面(x.php),我必须在表格中显示结果。我想,当用户点击按钮时,我调用连接到数据库的函数,然后运行查询,并将结果输出到表中。我下面的代码是一个模拟,并没有很好的工作。但以上基本上是我想要做的。单击表单提交时执行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>
您正在尝试获取全局变量$_POST
的值,同时将它提供给$_GET
。解决这个问题的方法是将method
分配给您的表单元素。
例子:
<form id="sql" action="" method="POST">
有检查或提交表单时,这个方法(我一直在使用一个)一个被检查或$_SERVER['REQUEST_METHOD']
许多方面等于“POST
” 。这样你可以区分GET,POST或PUT请求。
实施例:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['sql']))
{
....
}
}
好的,谢谢,我已经更新了我现在所拥有的代码,而且我似乎无法获取要打印的数据。我得到了SQL查询运行没有错误,我可能做错了什么? –
为什么不只是'if(isset($ _ POST ['sql']))'?如果它不是邮寄请求,它将不会被设置。 –
我用它,它的工作原理。但我使用了按钮的名称,因为我有多个按钮。 DevNiels说有很多方法可以做到这一点。我猜他的方式是这样做的一种方式。 –
如果您使用$_POST
,您的形式请求方法应该是POST
。
<form action="" id="sql" method="post">
否则,它将与默认情况下GET
要求提交。
在这种情况下,您将不得不使用$_GET
来访问变量。
谢谢你的收获! –
提供一个名称的提交按钮提交并在form标签附加'方法= “POST”'。 –