如何获取 HTML 表单以从 Mysql 数据库中查询和生成结果
Posted
技术标签:
【中文标题】如何获取 HTML 表单以从 Mysql 数据库中查询和生成结果【英文标题】:How to get a HTML Form to query and produce results from Mysql datebase 【发布时间】:2013-01-10 07:30:26 【问题描述】:我创建了一个包含一个文本字段和一个选择框的表单,我还创建了一个按钮。现在我想要发生的是当按下按钮时,我希望表单中的字符串与我的数据库匹配,然后我希望返回这些匹配的结果并显示在屏幕上。
例如,如果我要在我的文本字段框中键入“历史记录”,并且在按下按钮(提交按钮)时我还从选择框中选择了“级别 2”,我希望在页面上返回所有匹配的内容在我的数据库中包含单词历史和第 2 级的选择。
我知道我必须通过 php 将我的页面与我的数据库连接起来,并且我已经成功地做到了,但我不明白的是如何让我的 html 表单查询数据库并将结果返回到屏幕上
就与我想创建的概念非常相似的示例网站而言,请查看此网页。 http://search.ucas.com/cgi-bin/hsrun/search/search/search.hjx;start=search.HsSearch.run?y=2013&w=H(UCAS 课程搜索)这个网站有多个文本字段、选择框和一个提交按钮,与我试图创建的完全一样,并且提供的结果只是与搜索结果匹配的结果。
以下代码的工作原理是将我的文本字段链接到我的数据库,但我无法让我的文本字段和我的选择框链接和查询数据库,只有一个或另一个。我希望他们都使用同一个按钮(搜索按钮)
<form method="post" action="Webpage here" id="searchform">
<input type="text" name="name">
<input type="submit" name="submit" value="Search">
</form>
<form id="form1" name="ExamBoard" method="post" action="Webpage here">
<label for="select"></label>
<select name="ExamBoard" id="select">
<option value="EB1" selected="selected">EB1</option>
<option value="EB2">EB2</option>
<option value="EB3">EB3</option>
</select>
<input type="submit" name="submit" value="Search">
</form>
<p> </p>
<p>
<?php
if(isset($_POST['submit']))
if(isset($_GET['go']))
if(preg_match("/^[ a-zA-Z]+/", $_POST['name']))
$name=$_POST['name'];
//connect to the database
$db=mysql_connect ("Name", "User", "Password*") or die ('I cannot connect to the database because: ' . mysql_error());
//-select the database to use
$mydb=mysql_select_db("Table Name");
//-query the database table
$sql="SELECT ID, CourseName, ExamBoard FROM subjects WHERE CourseName LIKE '%" . $name . "%' ";
//-run the query against the mysql query function
$result=mysql_query($sql);
//-create while loop and loop through result set
while($row=mysql_fetch_array($result))
$CourseName =$row['CourseName'];
$ID=$row['ID'];
$ExamBoard=$row['ExamBoard'];
//-display the result of the array
echo "<ul>\n";
echo "<li>" . "<a href=\"search.php?id=$ID\">" .$CourseName . " " . "</a></li>\n" ;
echo $ExamBoard . " " . "</a>\n";
echo "</ul>";
?>
【问题讨论】:
Please, don't usemysql_*
functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.
【参考方案1】:
新建 HTML 文件
newHTML.htm
<form method="post" action="Webpage here" id="searchform">
<input type="text" name="name">
<input type="submit" name="submit" value="Search">
</form
新建 PHP 文件
newPHP.pfp
<?php
if(preg_match("/^[ a-zA-Z]+/", $_REQUEST['name']))
$name=$_REQUEST['name'];
//connect to the database
$db=mysql_connect ("Name", "User", "Password*") or die ('I cannot connect to the database because: ' . mysql_error());
//-select the database to use
$mydb=mysql_select_db("Table Name");
//-query the database table
$sql="SELECT ID, CourseName, ExamBoard FROM subjects WHERE CourseName LIKE '%" . $name . "%' ";
//-run the query against the mysql query function
$result=mysql_query($sql);
//-create while loop and loop through result set
while($row=mysql_fetch_array($result))
$CourseName =$row['CourseName'];
$ID=$row['ID'];
$ExamBoard=$row['ExamBoard'];
//-display the result of the array
echo "<ul>\n";
echo "<li>" . "<a href=\"search.php?id=$ID\">" .$CourseName . " " . "</a></li>\n" ;
echo $ExamBoard . " " . "</a>\n";
echo "</ul>";
?>
【讨论】:
嗨,非常感谢这段代码可以正常工作,这对我们很有帮助。您是否有任何关于如何在其中放置 Select(Dropdown) 框以便它搜索多个请求的提示,即同时从文本输入和下拉列表中【参考方案2】:你必须问自己你想用 AJAX 还是正常的屏幕刷新来做这个..
正常的屏幕刷新(简单的方法)
获取您的 HTML 并将其放在一个文件中 (HTMLfile.html) 把你的 PHP 放到另一个文件中 (PHPCode.php)
HTML 文件表单从 action 属性调用 PHP 脚本。
PHP 文件呈现响应。
不要将视图和控制应用程序混在一起。
如果您想使用 AJAX,还有其他方法可以在一个脚本中执行此操作。
【讨论】:
您好 user1551869,我已将所有 HTML 放入一个文件,并将所有 PHP 放入另一个文件。你知道我怎样才能让 php 搜索两个表单选择吗?以上是关于如何获取 HTML 表单以从 Mysql 数据库中查询和生成结果的主要内容,如果未能解决你的问题,请参考以下文章
MySQL / PHP 数据库连接以从 Web 表单输入文本
如何从 html 表单中获取“日期和时间”输入并使用 Spring Boot 保存到 MySQL 数据库中?
如何修改我的 PHP 和 HTML 代码以从 MySQL 下载文件