【问题标题】:PHP Search Form with Specific Filtering具有特定过滤的 PHP 搜索表单
【发布时间】:2015-04-07 11:09:07
【问题描述】:

我目前正在利用自己的时间学习 HTML、PHP 和 SQL 的基础知识,以尝试在工作中进一步提升自己。

我为自己设定了一个挑战,即制作一个基于图书公司的网站。我已经成功构建了显示连接到我的图书数据库的所有图书列表的页面。我还在书籍列表中创建了一个函数,用于在选定时动态显示特定书籍的额外信息。

到目前为止一切正常,但现在我一直被困在用户根据特定搜索条件搜索图书数据库的能力上。

例如,我希望能够从下拉列表中选择特定的搜索条件,例如书名、作者等,并让用户将其输入到链接的搜索框中并返回数据库中的值。到目前为止,请找到我的代码,并为任何明显的错误道歉,因为我刚刚开始学习这些东西......

搜索表格:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<!--OVERALL WRAPPER CONTAINER-->
<div id="wrapper">

<!--OUTER CONTAINER-->
<div id="container">

 <!--HEADER CONTAINER-->
<div id="header"><!--LOGO PATH GOES HERE--><img src="../../../Web Design/websitebanner1.jpg" width="960" height="200" alt="Northumbria Book Company"></div>



<!--NAVIGATION CONTAINER-->
<div id="navContainer">
<center><ul>

<li><a href=".html"> 
<u>Home</u></a></li>

<li><u><a href=".html">Search</a></u></li>

<li><u><a href=".html">Credits</a></u></li>

<li><u><a href=".php">Books</a>

</u></li>

</ul>
</center>
</div>



<!--MAIN CONTENT CONTAINER-->
<div id="mainContainer">
<form id="SeachByCategory" action="SearchBookDB" method="get">
 <h1>Search For a Book</h1>
 <select name="category">
        <option value="bookISBN">Book ISBN</option>
        <option value="bookTitle">Book Title</option>
        <option value="bookYear">Book Year</option>
        <option value="pubID">Publisher</option>
        <option value="catID">Category</option>
    </select>

<label>Search: <input type="text" name="BookSearch" /></label>
 <p>
    <input type="submit" value="Find Books" />
</p>
</form>

</div>
<div id="footer">
<div align="center">



<ul>
<li><a href="#">Privacy Policy</a></li>
<li><a href="#">Disclaimer</a></li>
<li><a href="#">Terms</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</div></div></div></div>
</body>

数据库查询:

<!doctype html>
 <html>
 <head>
 <meta charset="utf-8">
 <title>Untitled Document</title>
 </head>

<body>

<?php
include 'database_conn.php';

$bookTitleSearch = filter_has_var(INPUT_GET, 'bookTitle') ? $_GET    ['bookTitle']: null;

$sql = "SELECT * from nbc_book WHERE bookTitle = '%$bookTitleSearch%'"; 

$queryresult = mysqli_query($conn, $sql) or die(mysqli_error($conn));

while ($row = mysqli_fetch_assoc($queryresult)){
echo $row['bookTitle'];
}

mysql_free_result($queryresult);
mysql_close($conn);
?>

</body>
</html>    

【问题讨论】:

  • 你试过了吗? $sql = "SELECT * from nbc_book WHERE bookTitle LIKE '%$bookTitleSearch%'";
  • 刚刚尝试过,它返回一个 HTTP 404
  • $sql = "SELECT * from nbc_book WHERE bookTitle LIKE '%$bookTitleSearch%'"; 试试这个。
  • 你的和我的查询有什么区别?由于OP出现错误。 @AkramFares
  • 我的错,我没注意到。

标签: php html mysql forms search


【解决方案1】:

您是否正在寻找这样的东西:

<?php
include 'database_conn.php';

$bookTitleSearch = filter_has_var(INPUT_GET, 'bookTitle') ? $_GET['bookTitle']: null;

$sql = "SELECT * from nbc_book WHERE bookTitle = '%$bookTitleSearch%'"; 

$queryresult = mysqli_query($conn, $sql) or die(mysqli_error($conn));

while ($row = mysqli_fetch_assoc($queryresult)){
    echo $row['bookTitle'];
}

mysql_free_result($queryresult);
mysql_close($conn);
?>

【讨论】:

  • 为什么你的表单动作是这样的? &lt;form id="SeachByCategory" action="SearchBookDB" method="get"&gt; 不应该是:action="SearchBookDB.php"
  • 将我的完整 html 代码添加到原始评论中,我现在更改了返回的操作:警告:mysql_free_result() 期望参数 1 是资源,在 /home/unn_w13045125/public_html/SearchBookDB 中给出的对象。第 23 行的 php 警告:mysql_close() 期望参数 1 是资源,对象在第 24 行的 /home/unn_w13045125/public_html/SearchBookDB.php 中给出
  • 那么,您的预期工作已经完成了这两个警告?我说的对吗?
  • 我认为他的两个警告是因为我不符合 mysqli 命名约定,一旦我更改了这个并搜索书名,我就会返回一个空白屏幕
  • 你正在做mysql,而你应该做mysqli。将最后 2 行更改为 mysqli_free_result($queryresult);mysqli_close($conn);
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 2016-02-07
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多