Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2003, 03:03
Operadormail
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Indice paginacion no funciona

Hola a todos:

Tengo el siguiente problema.

He creado una consulta para mis bases de datos en MySQL, y una paginación basada en el codigo de desarrolloweb.com, pero tengo el problema que cuando se crea el indice de la paginación, al clickar, en vez de aparecer los resultados de esa "pagina" me sale que debo introducir una cadena para su busqueda, como si la variable $_POST['buscar'] estuviera vacia.

Os paso el codigo a ver si podeis echarme una mano:

<?
$criterio_txt=''; // $criterio_txt sera el termino de busqueda, la inicializamos a vacia
if (isset($_POST['buscar'])) { // si existe el campo del formulario, lo usamos como termino de busqueda
$criterio_txt=$_POST['buscar'];}
elseif (isset($_GET['criterio'])) { // si no existe el formulario, pero si existe en la URL, usamos este
$criterio_txt=$_GET['criterio'];
}
// en este punto, $criterio_txt tiene el valor de $_POST['buscar'] o el de $_GET['criterio'] o '' (vacio)

// aqui hariamos lo mismo con todos los parametros que puedan venir por formulario o por URL
$opcionbusca_txt=''; // $criterio_txt sera el termino de busqueda, la inicializamos a vacia
if (isset($_POST['opcionbusca'])) { // si existe el campo del formulario, lo usamos como termino de busqueda
$opcionbusca_txt=$_POST['opcionbusca'];}
elseif (isset($_GET['criterio2'])) { // si no existe el formulario, pero si existe en la URL, usamos este
$opcionbusca_txt=$_GET['criterio2'];}

//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}

// comienza el codigo que tienes
// a partir de aqui, no deberiamos usar ningun $_POST o $_GET
if (empty ($criterio_txt)){

echo "<p>Debe especificar una cadena a buscar</p> \n";
echo "<p><a href='javascript:history.go(-1)'>Volver</p> \n"; }
elseif (strlen($criterio_txt) > 1) {





/******************* Realizamos la conexion con el servidor ********************/



$conexion = mysql_connect("localhost", "usuario", "pass")
or die("<b>Problema en MySQL:</b> Error al conectar con la base de datos");


/****************Realizamos la conexion con la base de datos en la que queremos actuar *****************/


$basedatos = mysql_select_db('basedatosl')
or die("<b>Problema en MySQL:</b> Error al conectar con la base de datos");

/*************** Consulta SQL ***********************/
if ($opcionbusca_txt == 'vias'){
$sql = "SELECT * FROM Todas WHERE Nombre LIKE '%$criterio_txt%'";}
else {$sql= "SELECT * FROM Todas WHERE Grado LIKE '%{$criterio_txt'";}


/******************* Realizamos la consulta sobre la base de datos *********************/

$consulta = mysql_query($sql, $conexion);



/*****************Comprobamos las filas afectadas por la consulta *****************/

$filas = mysql_num_rows($consulta);


//Limito la busqueda
$TAMANO_PAGINA = 20;
//calculo el total de páginas

$total_paginas = ceil($filas / $TAMANO_PAGINA);



/*************** Consulta SQL reconstruida ***********************/
if ($opcionbusca_txt == 'vias'){
$sql = "SELECT * FROM Todas WHERE Nombre LIKE '%$criterio_txt%' ORDER BY Escuela, Sector, Nombre LIMIT " . $inicio ."," .$TAMANO_PAGINA;}
else {$sql= "SELECT * FROM Todas WHERE Grado LIKE '%$criterio_txt%' ORDER BY Escuela, Sector, Nombre LIMIT " . $inicio ."," .$TAMANO_PAGINA;}

/***********Mostramos los resultados por pantalla *************************/
echo "Se han encontrado". $filas;
$consulta = mysql_query($sql);

/*****************Comprobamos las filas afectadas por la consulta *****************/

$filas = mysql_num_rows($consulta);


if ($filas > 0) {
echo "<table width='430'> \n";
//Mostramos los nombres de las tablas

echo "<tr> \n";
echo "<td width='180'><font face='Arial' size='2'><b> Nombre </b> </font></td>\n";
echo "<td width='50' align='center'><font face='Arial' size='2'><b> Grado </b> </font></td>\n";
echo "<td width='100' align='center'><font face='Arial' size='2'><b> Sector </b> </font></td>\n";
echo "<td width='100' align='center'><font face='Arial' size='2'><b> Escuelas </b> </font></td>\n";
echo "</tr> \n";
while ($filas = mysql_fetch_array($consulta)) {
echo "<tr> \n";
echo "<td><font face='arial' size='1' color='#000000'>".$filas["Nombre"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#000000'>".$filas["Grado"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#000000'>".$filas["Sector"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#000000'>".$filas["Escuela"]."</font> </td> \n";
echo "</tr> \n";
echo "<tr> \n";
}
echo "<td> \n";
//muestro los distintos índices de las páginas, si es que hay varias páginas
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
else
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='buscador.php?pagina=" . $i . "&criterio=" . $criterio_txt ."'>" . $i . "</a> ";
}
}

echo "</td> \n";
echo "</tr> \n";
echo "</table> \n";
echo "</div>";
echo "<p><a href='javascript:history.go(-1)'>Volver</p> \n";
}

else {
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a href='javascript:history.go(-1)'>Volver</p> \n";
}

else {

echo "<p>El patron de busqueda debe ser al menos de 2 caracteres</p> \n";
echo "<p><a href='javascript:history.go(-1)'>Volver</p> \n";
}

?>



Añado el codigo del formulario que llama a buscador.php


<Form method="post" action="buscador.php">
<img src="imagenes/Estructura/BuscaEnvertical.jpg">
<input type="text" name="buscar" size="15" maxlength="200">
<br>
<input type="radio" name="opcionbusca" value="vias" checked>
V&iacute;as &nbsp;
<input type="radio" name="opcionbusca" value="grado">
Grado
<input type="submit" value="Busca">
</form>


Gracias

Última edición por Operadormail; 27/06/2003 a las 02:26