Foros del Web » Programando para Internet » PHP »

Indice paginacion no funciona

Estas en el tema de Indice paginacion no funciona en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/06/2003, 03:03
 
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
  #2 (permalink)  
Antiguo 25/06/2003, 04:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Lo que posiblemente te diga es que no existe el indice 'pagina' en el array $_POST. Y es cierto. Fijate en la linea donde creas el link al resto de paginas:
Código PHP:
echo "<a href='buscador.php?pagina=" $i "&criterio=" $_POST['buscar'] . "'>" $i "</a> "
Pasas los valores por la URL, que es el metodo GET, con los que los valores estaran en el array $_GET. Y es en ese array donde debes leerlos. Ademas, el nombre de la variable que pasas es criterio, no buscar.

Pero como supongo que la primera vez recibes el termino de busqueda de un formulario POST, tambien debes comprobar el POST para ese caso. Podrias tambien cambiar el method de tu formulario a GET y usar siempre $_GET. Pero yo personalmente prefiero que los formularios sean POST. Asi que lo que yo haria seria primero mirar si la variable esta en $_POST, si no lo esta mirar en $_GET.

Yo para esto suelo asignar al principio del script los valores pasados a unas variables y trabajar en todo el script con estas variables (no como tu que pones el $_POST en el link). Para facilitarme la tarea uso el operador ternario ?: (viejo conocido mio de C). Seria algo asi (teniendo en cuenta que debes llamar igual el campo del formulario y el parametro de la URL):
Código PHP:
$buscar=(isset($_POST['buscar']))?$_POST['buscar']:((isset($_GET['buscar']))?$_GET['buscar']:NULL); 
Luego uso $buscar en todo el codigo cuando quiero usar su valor. El NULL lo puedes sustituir por '' si prefieres (dependiendo de como quieras comprobar si tiene valor).

El operador ternario equivale a esta funcion:
Código PHP:
function tenario($condicion,$verdadero,$falso) {
  if (
true==$condicion) {
    return 
$verdadero;
  } else {
    return 
$falso;
  }
}
// estas dos lineas son equivalentes
$var=(10==$valor)?'Vale 10':'No vale 10';
$var=ternario((10==$valor),'Vale 10','No vale 10');

Para mas info del operador ternario, mira en el manual en la seccion de operadores.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 25/06/2003, 14:41
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola

Ya he probado a hacer los cambios que me habeis indicado, pero sigue sin funcionar, los enlaces a las sucesivas paginas no funcionan y me dice que debo especificar una cadena para realizar la busqueda...

Mas ayuda¡¡
  #4 (permalink)  
Antiguo 26/06/2003, 02:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Esto, ¿seguro que has tomado en cuenta todo lo que te he puesto en mi mensaje? Yo creo que no me el olvidado de nada (bueno, quizas de urlencode(), pero normalmente no es necesario).

Y sobre todo, no te puedo ayudar mas porque la unica referencia es tu primer codigo. Y con ese codigo mi ayuda es la que te puse. Ahora dices que has "probado" los cambios y no te funciona. Lo siento, pero no tengo la bola de cristal en funcionamiento.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 26/06/2003, 03:00
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola

He modificado el codigo en el 1er mensaje para que veais el cofido actualizado, a ver si sigo tieniendo algun error, por que sigue sin funcionar.


Un saludo gracias

Última edición por Operadormail; 26/06/2003 a las 03:29
  #6 (permalink)  
Antiguo 26/06/2003, 04:41
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Bien, veo que no has entendido todo lo que puse. $_POST['buscar'] solo existe cuando llegas a la pagina desde el formulario. Cuando llegas a traves del link, esa variable no existe y por eso te muestra el mensaje. Cuando llegas a traves del link, solo existen las variables que has pasado por el link (pagina y criterio), y como vienen por un link (es decir, por URL, es decir, por GET), debes acceder a ellas con el $_GET.

Cuando llegas por el link no existe ningun valor en $_POST, asi que todos los valores que estas comprobando con $_POST, tambien deberias pasarlas por el link y comprobarlo tambien el $_GET.

Mira, yo te aconsejaria que replanteases tu script para que al principio leas los parametros (ya sean $_POST o $_GET) y y los guardes en variables locales, y luego en el resto del script solo trabajas con esas variables locales, sin referenciar $_GET o $_POST.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 26/06/2003, 08:40
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola Josemi:

agradezco tu paciencia, de verdad...

He pasado ahora en la url la variable $_GET['criterio'] bajo una variable local $txt_criterio, pero sigue sin funcionar.

No se si te he entendido muy bien...
Te agradezco que me des la caña y no el pez... pero tal vez si pudieras mostarme como pescarlo entendiera el metodo...

Puedes??

Gracias de verdad tronco.
  #8 (permalink)  
Antiguo 26/06/2003, 09:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Bueno, veamos. Empecemos con:
Código PHP:

// COMPROBAMOS QUE LA VARIABLE 'BUSCAR' NO ESTA VACIA

if (empty ($_POST['buscar'])){ 

echo 
"<p>Debe especificar una cadena a buscar</p> \n";
echo 
"<p><a href='javascript:history.go(-1)'>Volver</p> \n"; }
elseif (
strlen($_POST['buscar']) > 1) { 
En este codigo SOLO compruebas el campo buscar de un formulario en el $_POST. El $_POST esta vacio cuando llegas a traves de un link. Por lo tanto es este codigo el que te muestra el mensaje siempre que accedes por un link.

Ahora, yo no se lo que es el campo buscar. Parece ser un campo text donde pasa el termino a buscar, lo que en teoria pasas en la URL como criterio.

Lo que te comentaba de las variables locales era hacerlo AL COMIENZO el script, delante de todo el codigo. Y a partir de ahi, solo utilizar las variables locales.

Probemos un ejemplo. Tu criterio de busqueda puede venir de un formulario (campo 'buscar') o de la URL (parametro 'criterio'). Yo pondria este codigo al comienzo de todo:
Código PHP:
<?php
$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
...

// 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) {

// y asi con todo el codigo, sustituyendo los $_POST/$_GET por sus variables locales
...
?>
Espero que ahora este un poco mas claro.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 27/06/2003, 02:30
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola de nuevo:

He actualizado el codigo del buscador y he añadido el codigo del formulario de entrada.

Ya no tengo ningun POST o GET a partir del codigo que me pasaste, pero sigue sin funcionar.

Cuando hago una busqueda, me sale la primera pagina con los resultados predeterminados (20) y los enlaces a las demas paginas, pero cuando clickeo, me sale en la linea de "Registros encontrados..." una burrada y debajo me dice que no se han encontrado registros.

??????

Puedes echarme una mano de nuevo?

Muchas gracias
  #10 (permalink)  
Antiguo 27/06/2003, 02:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Bien, creo que se te ha olvidado pasar criterio2 en el link de las paginas. Por eso a pinchar en el link el $opcionbusca_txt estaria vacio y se ejecutarian las consultas de los else (tal como esta en el mensaje, la primera esta mal escrita). Como parece ser un error de las consultas, haz un echo $sql antes de cada mysql_query() para ver que consulta se ejecuta realmente. Quizas no es la que esperabas, o ves algun error de sintaxis o de logica.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 28/06/2003, 03:30
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola otra vez:

Me dices que la primera esta mal escrita y debe ser cierto por que no funciona.

Donde esta el fallo?
Y como paso por la url opcionbusca_txt?

Un saludo otra vez
  #12 (permalink)  
Antiguo 28/06/2003, 13:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

La consulta:

else {$sql= "SELECT * FROM Todas WHERE Grado LIKE '%{$criterio_txt'";}

no creo que este bien. Supongo que querias algo como la otra, algo asi:

else {$sql= "SELECT * FROM Todas WHERE Grado LIKE '%$criterio_txt%'";}

Imagino que habra sido los dedos locos

Y para lo de opcionbusca_txt, es simplemente añadir otro parametro en el link que generas. Es mas, ya le has puesto nombre, el criterio2 que lees con el GET. Seria:

echo "<a href='buscador.php?pagina=" . $i . "&criterio=" . $criterio_txt ."&criterio2=".$opcionbusca_txt."'>" . $i . "</a> ";

Igual que con el otro criterio de busqueda.

Resumiendo: debes ser capaz de leer las variables tanto del formulario (POST) como del link de la paginacion (GET); y debes pasar (propagar) por el link de la paginacion todos los valores que necesites (normalmente, los que recibes del formulario) para usarlos como datos en las distintas paginas.

Saludos.

PD: Aunque te funcione con el codigo que te he dado, vuelve a darle un repaso y asegurate que entiendes como funciona.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 30/06/2003, 03:42
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola de nuevo:

Ya esta solucionado el problema de los enlaces en la paginacion.
Muchas gracias Josemi... de verdad. Te propongo como Principe de Asturias a la PACIENCIA.

Ahora tengo otro problema y es que cuando clickeo en los enlaces a las demas paginas de la paginacion, valga la redundancia, no aparecen los enlaces para seguir navegando por los resultados de la consulta.

Como se arregla eso?

Saludos
  #14 (permalink)  
Antiguo 30/06/2003, 13:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Bueno, paciencia no se si tendre, pero no te asustes cuando te llege mi factura

Supongo que te refieres a que no te salen los links de 1 2 3 ... , ¿verdad? Curioso. ¿Cual es tu codigo actual? ¿Has mirado ya el HTML generado (en tu navegador, "Ver codigo fuente"), puede haber mensajes de error?

Partiendo del codigo que has ido modificando, la lista de links solo sale cuando $total_paginas > 1. Haz un echo de $total_paginas antes del if. Si su valor es 1 (o menos) no sacara los links. Habria que mirar de donde saca su valor. Por el codigo es ceil($filas / $TAMANO_PAGINA), siendo $filas el numero de registros devueltos por la consulta sin LIMIT. Este valor ya lo sacas por pantalla, ¿cual es?.

Lo curioso es que es el mismo codigo que usas cuando recibes del formulario, asi que tambien puede ser que le pases mal algun parametro por la URL (link). Revisa el link. Por cierto, revisa cual es la consulta que realmente se ejecuta haciendo un echo $sql; delante del mysql_query().

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 30/06/2003, 13:46
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola

Bueno. Ya esta solucionado.
Muchas gracias tron, y un saludo
  #16 (permalink)  
Antiguo 30/06/2003, 13:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Seria bueno para la comunidad que posteases el codigo completo, para que todos puedan aprender de el.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #17 (permalink)  
Antiguo 30/06/2003, 16:15
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 9 meses
Puntos: 1
Eso esta echo, ahora mismo lo posteo...

<?
/***$criterio_txt sera el termino de busqueda, la inicializamos a vacia***/
$criterio_txt=''; 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)
$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'];}
// aqui hariamos lo mismo con todos los parametros que puedan venir por formulario o por URL


// 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)' class='linkDerecho'>Volver</p> \n"; }
elseif (strlen($criterio_txt) > 1) {





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



$conexion = mysql_connect("localhost", "usuario", "contraseña")
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('Nombre_Base_Datos', $conexion)
or die("<b>Problema en MySQL:</b> Error al conectar con la base de datos");

/*************** Consulta SQL ***********************/
if ($opcionbusca_txt == 'vias'){
$sql = "SELECT * FROM Tabla WHERE Nombre LIKE '%$criterio_txt%'";}
else {$sql= "SELECT * FROM Tabla 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);

//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;
}

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

/*********reconstruimos la consulta *****************/

$consulta2 = mysql_query($ssql);

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

$ffilas = mysql_num_rows($consulta2);


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

echo "<tr> \n";
echo "<td align='left' colspan='4'> \n";
echo "<font face='arial narrow' size='2' color='#336699'>Número de registros encontrados: " . $filas . "<br> </font> \n";
echo "<font face='arial narrow' size='2' color='#336699'>Mostrando pagina: " . $pagina . " de " . $total_paginas . "<p> </font> \n";
echo "</td> \n";
echo "<tr> \n";
echo "<td width='180'><font face='Arial' size='2' color='#336699'><b> Nombre </b> </font></td>\n";
echo "<td width='50' align='center'><font face='Arial' size='2' color='#336699'><b> Grado </b> </font></td>\n";
echo "<td width='100' align='center'><font face='Arial' size='2' color='#336699'><b> Sector </b> </font></td>\n";
echo "<td width='100' align='center'><font face='Arial' size='2' color='#336699'><b> Escuelas </b> </font></td>\n";
echo "</tr> \n";
while ($ffilas = mysql_fetch_array($consulta2)) {
echo "<tr> \n";
echo "<td><font face='arial' size='1' color='#336699'>".$ffilas["Nombre"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Grado"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Sector"]."</font> </td> \n";
echo "<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Escuela"]."</font> </td> \n";
echo "</tr> \n";
echo "<tr> \n";
}
echo "<td height='40' align='center' valign='bottom' colspan='4'> \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 ."&criterio2=".$opcionbusca_txt."' class='linkDerecho'>" . $i . "</a> ";
}
}

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

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

?>
  #18 (permalink)  
Antiguo 30/06/2003, 17:07
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Lo mismo, solo que coloreado para su más fácil interpretación...

Código PHP:
<?
/***$criterio_txt sera el termino de busqueda, la inicializamos a vacia***/
$criterio_txt=''; 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)
$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'];}
// aqui hariamos lo mismo con todos los parametros que puedan venir por formulario o por URL

// 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)' class='linkDerecho'>Volver</p> \n"; }
elseif (
strlen($criterio_txt) > 1) {


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

$conexion mysql_connect("localhost""usuario""contraseña")
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('Nombre_Base_Datos'$conexion)
or die(
"<b>Problema en MySQL:</b> Error al conectar con la base de datos");

/*************** Consulta SQL ***********************/
if ($opcionbusca_txt == 'vias'){
$sql "SELECT * FROM Tabla WHERE Nombre LIKE '%$criterio_txt%'";}
else {
$sql"SELECT * FROM Tabla 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);

//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;
}

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

/*********reconstruimos la consulta *****************/

$consulta2 mysql_query($ssql);

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

$ffilas mysql_num_rows($consulta2); 


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

echo "<tr> \n";
echo 
"<td align='left' colspan='4'> \n";
echo 
"<font face='arial narrow' size='2' color='#336699'>Número de registros encontrados: " $filas "<br> </font> \n";
echo 
"<font face='arial narrow' size='2' color='#336699'>Mostrando pagina: " $pagina " de " $total_paginas "<p> </font> \n";
echo 
"</td> \n";
echo 
"<tr> \n";
echo 
"<td width='180'><font face='Arial' size='2' color='#336699'><b> Nombre </b> </font></td>\n";
echo 
"<td width='50' align='center'><font face='Arial' size='2' color='#336699'><b> Grado </b> </font></td>\n";
echo 
"<td width='100' align='center'><font face='Arial' size='2' color='#336699'><b> Sector </b> </font></td>\n";
echo 
"<td width='100' align='center'><font face='Arial' size='2' color='#336699'><b> Escuelas </b> </font></td>\n";
echo 
"</tr> \n";
while (
$ffilas mysql_fetch_array($consulta2)) {
echo 
"<tr> \n";
echo 
"<td><font face='arial' size='1' color='#336699'>".$ffilas["Nombre"]."</font> </td> \n";
echo 
"<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Grado"]."</font> </td> \n";
echo 
"<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Sector"]."</font> </td> \n";
echo 
"<td align='center'><font face='arial' size='1' color='#336699'>".$ffilas["Escuela"]."</font> </td> \n";
echo 
"</tr> \n"
echo 
"<tr> \n";
}
echo 
"<td height='40' align='center' valign='bottom' colspan='4'> \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 ."&criterio2=".$opcionbusca_txt."' class='linkDerecho'>" $i "</a> ";
}
}

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

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

?>
__________________
Manoloweb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.