Php 分页时出错
例如,我在使用php进行查询后收到26个结果。我想对这些结果进行分页,每页显示5个 问题是,为了发送查询,我必须使用我填写的表单信息进行http post 前5个结果显示了这一点,但下一页将给出一些未定义的变量的错误——这些变量来自原始请求 以下是表格代码:Php 分页时出错,php,mysql,Php,Mysql,例如,我在使用php进行查询后收到26个结果。我想对这些结果进行分页,每页显示5个 问题是,为了发送查询,我必须使用我填写的表单信息进行http post 前5个结果显示了这一点,但下一页将给出一些未定义的变量的错误——这些变量来自原始请求 以下是表格代码: <form name="formulario" action="resultados.php" method="POST"> <input name="titulo" type="text" id
<form name="formulario" action="resultados.php" method="POST">
<input name="titulo" type="text" id="cajatitulo" class="cuadrobusqueda" placeholder="Título de la publicación (Ej: La fotosíntesis y sus procesos)">
<input name="anio" type="text" id="cajaanio" class="cuadrobusqueda" placeholder="Año">
<br><br>
<input name="autor" type="text" id="cajaautor" class="cuadrobusqueda" placeholder="Apellido del autor (Ej: Rojas, J; Rojas; J)">
<input name="issn" type="text" id="cajaissn" class="cuadrobusqueda" placeholder="ISSN">
<br><br>
<input type="radio" name="tipo_busqueda" value="1" checked>
<span onmouseover="title='Busca todos los parámetros seleccionados en un artículo.'">BÚSQUEDA EXACTA</span>
<input type="radio" name="tipo_busqueda" value="2">
<span onmouseover="title='Busca cualquiera de los parámetros seleccionados en un artículo.'">BÚSQUEDA FLEXIBLE</span>
</br></br>
<input type="submit" name="boton" id="botonenviar" value="Procesar">
</form>
在该代码下面,我生成了将我链接到下一页的数据:
if ($paginanum != 1) {
echo "<a class='navegar' href='{$_SERVER['PHP_SELF']}?paginanum=1'> <b><<</b> Primera</a> ";
echo " ";
$anterior = $paginanum-1;
echo " <a class='navegar' href='{$_SERVER['PHP_SELF']}?paginanum=$anterior'> <b><</b> Anterior</a> ";
}
if ($paginanum != $ultima) {
$siguiente = $paginanum+1;
echo " <a class='navegar' href='{$_SERVER['PHP_SELF']}?paginanum=$siguiente'>Siguiente <b>></b> </a> ";
echo " <span> </span>";
echo " <a class='navegar' href='{$_SERVER['PHP_SELF']}?paginanum=$ultima'>Última <b>>></b> </a> ";
}
echo "</br>";
但是它不起作用您应该将发布的数据设置为会话变量,以便在将来的页面加载中使用它们。通过
get
提交表单,然后基于$\u get
创建查询字符串:
$querystring = "";
foreach ($_GET as $key => $val) {
if ($key != 'paginanum') {
$querystring .= ($querystring == "" ? "" : "&") . "$key=$val";
}
}
然后将查询字符串附加到链接URL
它不是很安全,但它能工作
更新:
Sam Dufel刚刚提醒我PHP的http\u build\u query()
函数,它更好:
$vals = $_GET;
unset($vals['paginanum']);
$querystring = http_build_query($vals);
另一种方法是将LIMIT参数传递给查询。这是一个偏移量和一个记录计数。像这样:
SELECT * FROM table WHERE 1=1 LIMIT 0,10 --for the first 10 records
SELECT * FROM table WHERE 1=1 LIMIT 10,10 --for the next 10 records
这使得您的查询只返回您想要的内容,并且代码更加简洁。然后使用下一组10循环遍历每个分页链接。PHP有一个很好的函数,
http\u build\u query()
,可以使用它生成最终的查询字符串。True。我忘了那个。我会更新;请不要删除您的评论。
$vals = $_GET;
unset($vals['paginanum']);
$querystring = http_build_query($vals);
SELECT * FROM table WHERE 1=1 LIMIT 0,10 --for the first 10 records
SELECT * FROM table WHERE 1=1 LIMIT 10,10 --for the next 10 records