gpt4 book ai didi

php - 如何使用分页将 MYSQL 中的一系列日期值显示到 php 中的表格中?

转载 作者:行者123 更新时间:2023-11-30 22:39:48 25 4
gpt4 key购买 nike

我不知道我的代码哪一部分是错误的。

这就是我需要的,

我需要搜索记录的日期范围并显示到 php 页面中的表格中。

开始:(文本字段)
结束:(文本字段)(提交按钮)

当我只键入起始文本字段区域时,我能够根据我的请求检索信息,并且分页正常。

一旦我输入了 2 个文本字段。我的 retest.php 页面设法在带有我的页码的表格中显示前 50 个值。

例如:日期 1 = 07/06/2015日期 2 = 2015 年 7 月 27 日

我应该有 142 行限制 50。我的页面显示一个包含 3 个页码的 50 行表格。

1 2 3

但是一旦我点击第 2 页或下一页或其他页面我的页面只会显示我的 Date 1 的结果,它有 80 条记录和 2 页。

1 2

这是我的 index.php 代码

<html>
<head>
<title>Title of your search engine</title>
</head>
<body>
<form action='restest.php' method='GET'>
<center>
<h1>My Search Engine</h1>
<input type='text' size='90' name='search'></br></br>
<input type='text' size='90' name='end'></br></br>
<input type='submit' name='submit' value='Search source code' ></br></br></br>
</center>
</form>
</body>
</html>

这是我的 retest.php 代码

$button = $_GET ['submit'];
$s = $_GET ['search'];
$e = $_GET ['end'];

$search_exploded = explode (" ", $s, $e);

$x = "";
$construct = "";

$constructs ="SELECT * FROM Records WHERE Date >='".$s."' AND Date <= '".$e."' ";
$run = mysql_query($constructs);

$foundnum = mysql_num_rows($run);
echo $foundnum;

$per_page = 50;
$start = isset($_GET['start']) ? $_GET['start']: '';
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0;

$getquery = mysql_query("SELECT * FROM Records WHERE Date >= '".$s."' AND Date <= '".$e."' ");


echo "<table id=wTable>";
echo "<table id=hTable style=width:800px; border=1px;>
<tr style=background-color:black;color:yellow;font-size:18px;>
<td style=width:200px>Username</th>
<td style=width:175px>Date</th>
<td style=width:225px>a</th>
<td style=width:200px>b</th>
</tr>";

echo "</table>";
echo "<div id ='test' style=width:820px;height:200px;overflow:auto;>";
echo "<table id=dTable width=800px border=1px>";

while($row = mysql_fetch_assoc($getquery))
{
echo "<tr style=color:black;background-color:grey;font-size:13px;>";
echo "<td style=width:200px>" . $row['Username'] . "</td>";
echo "<td style=width:175px >" . $row['Date'] . "</td>";
echo "<td style=width:225px>" . $row['a'] . "</td>";
echo "<td style=width:200px>" . $row['b'] . "</td>";
echo "</tr>";
}
echo "</table>";
echo "</table>";
echo "</div>";



//Pagination Starts
echo "<center>";

$prev = $start - $per_page;
$next = $start + $per_page;

$adjacents = 3;
$last = $max_pages - 1;

if($max_pages > 1)
{
//previous button
if (!($start<=0))
echo " <a href='restest.php?search=$s&submit=Search&start=$prev'>Prev</a> ";

//pages
if ($max_pages < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
$i = 0;
for ($counter = 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='restest.php?search=$s&submit=Search&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='restest.php?search=$s&submit=Search&start=$i'>$counter</a> ";
}
$i = $i + $per_page;
}
}
elseif($max_pages > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if(($start/$per_page) < 1 + ($adjacents * 2))
{
$i = 0;
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($i == $start){
echo " <a href='restest.php?search=$s&submit=Search&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='restest.php?search=$s&submit=Search&start=$i'>$counter</a> ";
}
$i = $i + $per_page;
}

}
//in middle; hide some front and some back
elseif($max_pages - ($adjacents * 2) > ($start / $per_page) && ($start / $per_page) > ($adjacents * 2))
{
echo " <a href='restest.php?search=$s&submit=Search&start=0'>1</a> ";
echo " <a href='restest.php?search=$s&submit=Search=$per_page'>2</a> .... ";

$i = $start;
for ($counter = ($start/$per_page)+1; $counter < ($start / $per_page) + $adjacents + 2; $counter++)
{
if ($i == $start){
echo " <a href='restest.php?search=$s&submit=Search&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='restest.php?search=$s&submit=Search&start=$i'>$counter</a> ";
}
$i = $i + $per_page;
}

}
//close to end; only hide early pages
else
{
echo " <a href='restest.php?search=$s&submit=Search&start=0'>1</a> ";
echo " <a href='restest.php?search=$s&submit=Search&start=$per_page'>2</a> .... ";

$i = $start;
for ($counter = ($start / $per_page) + 1; $counter <= $max_pages; $counter++)
{
if ($i == $start){
echo " <a href='restest.php?search=$s&submit=Search&start=$i'><b>$counter</b></a> ";
}
else {
echo " <a href='restest.php?search=$s&submit=Search&start=$i'>$counter</a> ";
}
$i = $i + $per_page;
}
}
}

//next button
if (!($start >=$foundnum-$per_page))
echo " <a href='restest.php?search=$s&submit=Search&start=$next'>Next</a> ";
}
echo "</center>";

最佳答案

在您的代码中,您似乎依赖于一个旧的、不安全的且不再可用的 PHP 功能,称为 register globals .启用注册全局变量后,PHP 会自动将所有 GET 和 POST 数据(以及其他数据)作为变量注入(inject),从而导致代码中出现不可预测和不安全的结果。

您应该做的是直接使用 $_GET$_POST,具体取决于您期望的数据类型。在您的情况下,您应该使用 $_GET['start'] 来获取脚本发送的开始参数。或者更好的是,也对其进行一些输入验证。例如:

$start = 0;
if (!empty($_GET['start']) && intval($_GET['start']) > 0) {
$start = intval($_GET['start']);
}

有关处理 GET 和 POST 参数的更多信息,请查看 this page .

关于php - 如何使用分页将 MYSQL 中的一系列日期值显示到 php 中的表格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31424522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com