Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分页时出错_Php_Mysql - Fatal编程技术网

Php 分页时出错

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

例如,我在使用php进行查询后收到26个结果。我想对这些结果进行分页,每页显示5个

问题是,为了发送查询,我必须使用我填写的表单信息进行http post

前5个结果显示了这一点,但下一页将给出一些未定义的变量的错误——这些变量来自原始请求

以下是表格代码:

<form name="formulario" action="resultados.php" method="POST"> 
            <input name="titulo" type="text" id="cajatitulo" class="cuadrobusqueda" placeholder="T&iacute;tulo de la publicaci&oacute;n (Ej: La fotos&iacute;ntesis y sus procesos)"> 
            <input name="anio" type="text" id="cajaanio" class="cuadrobusqueda" placeholder="A&ntilde;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&Uacute;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&Uacute;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'>&Uacute;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