【发布时间】:2012-03-15 10:01:30
【问题描述】:
对,第 8 天学习 php,我觉得我试图以错误的顺序做事....直到昨天我都还好。我已经为自己设定了创建假在线书店的任务(似乎在所有学习 php 书籍中都很流行)。首先,我创建了我的产品并将它们全部列在数据库中的一个页面上......很容易,然后我使用下拉框来订购结果......虽然很难,但最终还是做到了。然后尝试分页,很简单,然后尝试加入我的订购代码和分页代码:我一生中最痛苦的几个小时,但完成了。我使用了一个搜索栏.. 比想象的要容易,现在我试图将这个搜索栏与我的分页和订购代码混合在一起,我的头发被少数人掉了!我真的希望我尝试一次学习所有这三个,但会有点少/头。
所以我的问题是......它分页......是的,它命令......但是当我第一次看到搜索结果时......它分页正常(告诉我有多少页总是正确的值)但是,当我单击查看第二页时,它停止向我显示搜索结果,而是将我带到数据库中所有产品的第 2 页。如果我尝试订购列表也会发生同样的情况,它会更改为所有产品的有序列表并告诉我搜索条件为空!
对不起,问了这么长的问题,我就是想不通我在哪里滑倒了!
非常感谢任何可以提供帮助的人!
代码如下:
booksearch.php:
(已经把不相关的代码都去掉了!)
<?php $query1 = "SELECT *
FROM booktable";
// execute the query
$results1 = mysql_query($query1)
or die(mysql_error());
// count the number of rows that are selected from the table
$field = mysql_num_fields( $results1 );
// echo $field;
for ( $i = 0; $i < $field; $i++ )
{
$names[$i] = mysql_field_name( $results1, $i );
}
?>
<form name="searchbook" action="productssearch.php" method="get">
<br />
Got For It:<input type="text" id="searchbar" name="searchterm" value="Enter anything and we will search on title, author, publisher and ISBN"></input>
<br /><br />
<input type="submit" name="Search" value=" - Search - "></input>
</form>
productssearch.php:
require "dbconn.php";
$term = $_GET['searchterm'];
$records_per_page = 10;
//If user set the sort order, save to session var - else set default
if(@$_POST['order'])
{
$_SESSION['order'] = trim($_POST['order']);
}
elseif(!isset($_SESSION['order']))
{
$_SESSION['order'] = 'bookname';
}
//Determine the total records and pages
$query = mysql_query ("SELECT COUNT(bookname)
FROM booktable
WHERE bookname LIKE '%".$term."%'
OR bookisbn LIKE '%".$term."%'
OR bookpub LIKE '%".$term."%'
OR bookauthor LIKE '%".$term."%'");
$total_records = mysql_result($query, 0);
$total_pages = ceil($total_records / $records_per_page);
//Set the page to load
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;
if($page<1 || $page>$total_pages)
{
$page = 1;
}
//Create limit var for query
$limit_start = ($page-1) * $records_per_page;
//Create and run query for records on current page
$query = mysql_query ("SELECT bookname, bookauthor, bookpub, bookisbn
FROM booktable
WHERE bookname LIKE '%".$term."%'
OR bookisbn LIKE '%".$term."%'
OR bookpub LIKE '%".$term."%'
OR bookauthor LIKE '%".$term."%'
ORDER BY ".mysql_real_escape_string($_SESSION['order'])." ASC
LIMIT $limit_start, $records_per_page");
//Prepare output
//**************************************************************
$numrow = mysql_num_rows($query);
//Create pagination links
$navLinks = '';
//Prev page
if($page > 1)
{
$prevPage = $page - 1;
$navLinks .= "<a href='productssearch.php?page=$prevPage'>Prev</a> ";
}
else
{
$navLinks .= "Prev ";
}
//Individual pages
for($p=1; $p<=$total_pages; $p++)
{
$pageNo = ($p == $page) ? "<b>{$p}</b>" : $p;
$navLinks .= "<a class='pagin' href='productssearch.php?page=$p'>$pageNo</a> ";
}
//next page
if($page < $total_pages)
{
$nextPage = $page + 1;
$navLinks .= "<a href='productssearch.php?page=$nextPage'>Next</a>";
}
else
{
$navLinks .= "Next";
}
?>
(从中间删除无关的东西)
<div id="mid">
<?php
echo "<table>";
echo "<tr>";
echo "<td>";
echo "</td>";
echo "<td class='toprow'>";
echo "Book Title";
echo "</td>";
echo "<td class='toprow'>";
echo "Book Author";
echo "</td>";
echo "<td class='toprow'>";
echo "Book Publisher";
echo "</td>";
echo "<td class='toprow'>";
echo "Book ISBN";
echo "</td>";
echo "<td>";
echo "</th>";
echo "</tr>";
while ($row = mysql_fetch_assoc($query))
{
$bookname = $row['bookname'];
$bookauthor = $row['bookauthor'];
$bookpub = $row['bookpub'];
$bookisbn = $row['bookisbn'];
// send the values to the browser as a row in a html table
echo "<tr>";
echo "<tr>";
echo "<td>";
echo "<a href='addtolist.php?bookname=".$bookname."&bookauthor=".$bookauthor."&bookpub=".$bookpub."&bookisbn=".$bookisbn."'>Add to basket</a>";
echo "</td>";
echo "<td>";
echo $bookname;
echo "</td>";
echo "<td>";
echo $bookauthor;
echo "</td>";
echo "<td>";
echo $bookpub;
echo "</td>";
echo "<td>";
echo $bookisbn;
echo "</td>";
echo "</tr>";
}
?>
</table>
<?php
echo "<br />";
echo $navLinks; ?>
请注意我是一个真正的初学者,所以我没有学习如何制作安全或安全的代码。,..我什至还没有加密用户和管理员密码......只是想学习脚本的机制!
再次感谢大家花时间阅读我的“风”问题!
【问题讨论】:
标签: php html search pagination