Foros del Web » Programando para Internet » PHP »

Paginador

Estas en el tema de Paginador en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en este foro y necesito ayuda. He hecho una pagina simple que lee 2 tablas una lleva los nombres de ...
  #1 (permalink)  
Antiguo 09/02/2012, 15:27
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Atascado de verdad

Hola a todos, soy nuevo en este foro y necesito ayuda.
He hecho una pagina simple que lee 2 tablas una lleva los nombres de las poblaciones y la otra los nombres comerciales de unas empresas esta información la presento en una tabla, hasta aqui bien, he añadido posteriormente un buscador y un select para filtrar por poblaciones y funciona bien y ahora viene el problema he añadido un paginador el "Zebra_pagination.php" con la tabla completa sin filtrar el paginador funciona ya que cuento los registros totales con Select Count(*), pero con el buscador y el select una vez filtrado no consigo averiguar el total de registros que ha encontrado para que el paginador me los pagine valga la rebundancia, y por lo tanto no me funciona.
Creo que estoy obligado a utilizar estas dos instrucciones:
SQL_CALC_FOUND_ROWS
SELECT FOUND_ROWS
pues bien lo hago y no funciona.

Os aseguro que lo he intentado todo durante mas de 30 horas casi sin interrupcion, ya no se ni lo que he probado o he dejado de probar y a pesar de todo no lo consigo hacer funcionar, tengo que aclarar que soy muy novato en esto y algo mayor pero me encantaria poderlo hacer funcionar.

Os pongo el código que tengo hecho a continuación y os pediria que me ayudarais, si necesitais algo o alguna aclaración os la dare con mucho gusto.

Gracias a tod@s.

Código PHP:
<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('general');
?>

 <?php
 


 
 
 $records_per_page 
3
    
         
// Incluye la clase de paginación
        
require '../Zebra_Pagination.php';

        
// Instancia del objeto paginación
        
$pagination = new Zebra_Pagination();
        
        
 
  
// Recuperar el número total de registros en la tabla
      
       
$rows mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));    
      
        

        
// Pasar el número total de registros a la clase de paginación
        
$pagination->records($rows['rows']);

        
// Registros por página
        
$pagination->records_per_page($records_per_page);
 

 
 
?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Reporte de Propiedades</title>

<!--Enlaces a los css necesarios-->
        <link rel="stylesheet" href="../reset.css" type="text/css">

        <link rel="stylesheet" href="../style.css" type="text/css">

        <link rel="stylesheet" href="../Zebra_Pagination.css" type="text/css">






</head>
<body>

 <table width="765" height= 30 border="1">
  <tr>
    <td><?php $pagination->render();?></td>
  </tr>
</table>
   
        
        

<table width="765" height="30" border="0">
<td>
<form name="form1" method="post" action="PaginadorLocal.php">
<font color="#800000">Buscar:&nbsp;&nbsp;&nbsp;</font><input name="txtBusqueda" type="text" size="30" style="border-width: 2px;  font-size:13pt; font-weight:bold;color: #800000;">
      
<font color="#800000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Población: &nbsp;&nbsp;&nbsp;</font> 
    <select name="selCiudad" id="selCiudad" style class="Guias2">
        <option value="-1" selected>Todas las poblaciones</option>
        
<?php
    $tablapoblaciones 
mysql_query("SELECT * FROM poblaciones ORDER BY poblacion ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registropoblacion mysql_fetch_array($tablapoblaciones)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>

<option value="<?php echo $registropoblacion['Id']; ?>"><?php echo $registropoblacion['Poblacion']; ?></option>

<?php
    
// termina la zona de repeticion
    
mysql_free_result($tablapoblaciones); // se libera la memoria usada por la tabla
?>
    </select>
   
    </label>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">
     
</form>

</td>
</table>

  <table width="765" height="80" border="0">
  <?php
$sql 
"SELECT SQL_CALC_FOUND_ROWS * FROM actividades, poblaciones WHERE actividades.Actividades = 'Hosteleria' and actividades.idpoblacion = poblaciones.id ";
if (isset(
$_POST['txtBusqueda'])) {
    
$sql .= " AND actividades.NombreComer LIKE '%" $_POST['txtBusqueda'] . "%' ";
    if (
intval($_POST['selCiudad']) > 0) {
        
$sql .= " AND actividades.idpoblacion = '" intval($_POST['selCiudad']) . "'";
    }
}
$sql .= " ORDER BY NombreComer LIMIT
. (($pagination->get_page() - 1) * $records_per_page) . ', ' $records_per_page '
        '
;
    
$tabla mysql_query($sql);





while (
$registro mysql_fetch_assoc($tabla)) {
?>
        <tr>
          <td><a href="<?php echo $registro['Url']; ?>"><?php echo $registro['NombreComer']; ?>"></a></td>
        </tr>
        <tr>
          <td width="765" height="0"></td>
        </tr>
        <?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>
        
    </table>
    


</body>
</html>
Gracias a tod@s.
  #2 (permalink)  
Antiguo 09/02/2012, 15:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Atascado de verdad

Entonces tu problema no va en este foro sino en el de SQL.

Existe una función de SQL para conocer el total de registros que cumplen ciertas condiciones, se llama COUNT() y puedes usarlo para contar también los resultados de una sub consulta.
Cita:
SELECT COUNT(*) FROM (SELECT * FROM tabla) AS total
Eso es todo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/02/2012, 16:00
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Atascado de verdad

Pues eso parecer ser que es lo que no se hacer, ya que como veras digo que en alguna prueba he usado el Select count(*) y no lo consigo hacer funcionar.

Otra cosa tu sabes si el paginador que usa este foro es una clase y se puede implementar facilmente ya que mis conocimientos son escasos.

Otra cosa no se mover mi pregunta al foro de Mysql, por lo tanto la he repetido en dicho foro si alguien considera que lo hice mal que borre la que esta mal, perdonar.

Gracias por tu respuesta
  #4 (permalink)  
Antiguo 09/02/2012, 16:44
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Atascado de verdad

No se como usaste SQL_CALC_FOUND_ROWS, pero antes de hacer :
Código PHP:
Ver original
  1. // Recuperar el número total de registros en la tabla
  2. $rows = mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));

Debes de poner en tu consulta principal
Código PHP:
Ver original
  1. SELECT SQL_CALC_FOUND_ROWS, campo1, campo2, .... FROM .....

Luego te dejo un paginador que es una clase quizás te sea de utilidad.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #5 (permalink)  
Antiguo 10/02/2012, 02:44
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Atascado de verdad

Gracias portalmana por tu ayuda, pero como veras eso que me dices es justo lo que hago en mi codigo que lo adjunte junto a la pregunta, lo que esta claro es que lo hago mal porque no funciona y es eso justamente lo que preciso averiguar porque no me funciona.
mira a ver si me puedes decir como harias tu el count(*) en mi sub-consulta y probare con el count en lugar de hacerlo con el SQL_CALC_FOUND_ROWS y con el SELECT FOUND_ROWS.
Gracias por todo.
  #6 (permalink)  
Antiguo 10/02/2012, 07:18
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Atascado de verdad

Yo uso SELECT FOUND_ROWS() y va bien, pero esta consulta se debe ejecutar despues de

Código SQL:
Ver original
  1. SELECT SQL_CALC_FOUND_ROWS * FROM actividades, poblaciones WHERE actividades.Actividades ....
  2. IF (isset($_POST['txtBusqueda'])) {

Con Count es :

Código SQL:
Ver original
  1. SELECT COUNT(id) AS cantidad FROM actividades WHERE .....

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #7 (permalink)  
Antiguo 11/02/2012, 05:30
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Paginador

Hola a tod@s.

Tengo una página que muestra los resultados de una base de datos Mysql y que para filtrar los mismos utilizo un campo de busqueda y un select donde selecciono la población para poder ver solo los registros que cumplen dichas condiciones, lo que hago realmente es filtrar los registros, ESTO FUNCIONA BIEN.

Ahora añado una clase para paginar (Zebra_Pagination.php) la implemento en mi código y aparece la misma, le digo que me págine 5 registros por página y me lo hace bien.

Mi problema es el siguiente cuando pagina el paginador me salen en la primera página los primeros 5 registros correctamente filtrados pero al cambiar de página por ejemplo (cuando cambio con el paginador de la página 1 a la 2) lo que me sale son igualmente 5 registros pero sin filtrar osea me saca del registro 6 a 10 pero sin filtrar ni por el campo de busqueda ni por el select, me saca los registros sin importar la población que he seleccionado ni el criterio de busqueda.

Se que en algún lugar me falta poner algún parametro para que el paginador siga utilizando el filtrado que le he hecho a la tabla y me lo mantega cuando cambio de página, no obstante despues de haber probado todo lo que alcanza mis conocimientos no doy con ello.

Necesito ayuda llevo muchas horas con esto y ya no se ni lo que he probado.

Gracias a tod@s.

Código PHP:
<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('general');
?>

 <?php
 

           $records_per_page 
5
    
         
// Incluye la clase de paginación
        
require '../Zebra_Pagination.php';

        
// Instancia del objeto paginación
        
$pagination = new Zebra_Pagination();
        
        
 
  
// Recuperar el número total de registros en la tabla
       
$result mysql_query("SELECT * FROM actividades"$conexion);
         
$num_rows mysql_num_rows($result);




        
        

        
// Pasar el número total de registros a la clase de paginación
        
$pagination->records($num_rows);

        
// Registros por página
        
$pagination->records_per_page($records_per_page);
 

 
 
?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Reporte de Propiedades</title>

<!--Enlaces a los css necesarios-->
        <link rel="stylesheet" href="../reset.css" type="text/css">

        <link rel="stylesheet" href="../style.css" type="text/css">

        <link rel="stylesheet" href="../Zebra_Pagination.css" type="text/css">






</head>
<body>

 <table width="765" height= 30 border="1">
  <tr>
    <td><?php $pagination->render();?></td>
  </tr>
</table>
   
        
        

<table width="765" height="30" border="0">
<td>
<form name="form1" method="post" action="PaginadorLocal.php">
<font color="#800000">Buscar:&nbsp;&nbsp;&nbsp;</font>
<input name="txtBusqueda" type="text" size="30" style="border-width: 2px;  font-size:13pt; font-weight:bold;color: #800000;">
      
<font color="#800000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Población: &nbsp;&nbsp;&nbsp;</font> 
    <select name="selCiudad" id="selCiudad" style class="Guias2">
        <option value="-1" selected>Todas las poblaciones</option>
        
<?php
    $tablapoblaciones 
mysql_query("SELECT * FROM poblaciones ORDER BY poblacion ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registropoblacion mysql_fetch_array($tablapoblaciones)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>

<option value="<?php echo $registropoblacion['Id']; ?>"><?php echo $registropoblacion['Poblacion']; ?></option>

<?php
    
// termina la zona de repeticion
    
mysql_free_result($tablapoblaciones); // se libera la memoria usada por la tabla
?>
    </select>
   
    </label>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">
     
</form>

</td>
</table>

  <table width="765" height="80" border="0">
  <?php
$sql
"SELECT * FROM actividades, poblaciones WHERE actividades.Actividades = 'Hosteleria' and actividades.idpoblacion = poblaciones.id ";
if (isset(
$_POST['txtBusqueda'])) {
    
$sql .= " AND actividades.NombreComer LIKE '%" $_POST['txtBusqueda'] . "%' ";
    if (
intval($_POST['selCiudad']) > 0) {
        
$sql .= " AND actividades.idpoblacion = '" intval($_POST['selCiudad']) . "'";
    }
}
$sql .= " ORDER BY NombreComer LIMIT
. (($pagination->get_page() - 1) * $records_per_page) . ', ' $records_per_page '
        '
;

$tabla mysql_query($sql);





while (
$registro mysql_fetch_assoc($tabla)) {
?>
        <tr>
          <td><a href="<?php echo $registro['Url']; ?>"><?php echo $registro['NombreComer']; ?>"></a></td>
        </tr>
        <tr>
          <td width="765" height="0"></td>
        </tr>
        <?php
}
mysql_free_result($tabla);
mysql_close($conexion);

 echo 
"$num_rows Rows\n"// esto lo he puesto para comprobar cuantos registros me encuentra

?>
        
    </table>
   


</body>
</html>

Última edición por ra120354; 11/02/2012 a las 05:35
  #8 (permalink)  
Antiguo 11/02/2012, 13:53
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Paginador

En los links para pasar de una página a la otra tienes que agregar el parámetro población.
El problema es que tu select se monta inicialmente con parametros pasados por post, los post sólo se pasan por formulario. Entonces agrega a los links una variable tipo
page.php?selCiudad=$selCiudad
El valor de selCiudad es:
$selCiudad = $_POST['selCiudad']?$_POST['selCiudad']:$_GET['selCiudad'];

Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #9 (permalink)  
Antiguo 11/02/2012, 14:35
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Paginador

Gracias repara2 voy a probar lo que me indicas, pero aunque entiendo la base de lo que me dices porque yu esplicacion es muy clara no se si sabre implementarlo en el código que tengo ya que mis conocimientos son muy escasos, voy a intentar implementarlo tal cual tu me medices e intentare que funcione.

Solo te dire una cosa para conseguir hacer el código que puse en la pregunta me costo mucho tiempo, mucho buscar por internet y leer muchos manuales, seguro que ese código alguien que sepa un poco lo hace en unos minutos, por esa razón lo hice con los parametros por Post, porque no supe hacerlo de otra manera, ojala supiera.

Gracias.
  #10 (permalink)  
Antiguo 12/02/2012, 02:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Paginador

La implementación con POST es correcta, porque la primera vez el usuario manda el filtro por el formulario. A partir de allí, para que el paginador mantenga el filtro de una página a la otra, hay que pasarle de alguna manera esta información de filtro. Por tanto, cuando el usuario hace click en el formulario, se mandan las variables POST, haces la consulta Y generas los links de anterior y siguiente con el parámetro indicado. Al pulsar siguiente, el programa busca el filtro, si está en post lo aplica, si no, lo busca en get. http://www.desarrolloweb.com/articulos/1035.php
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #11 (permalink)  
Antiguo 12/02/2012, 07:04
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Paginador

Gracias repara2, he intentado implementar lo que me dices

page.php?selCiudad=$selCiudad
El valor de selCiudad es:
$selCiudad = $_POST['selCiudad']?$_POST['selCiudad']:$_GET['selCiudad'];

y no consigo hacerlo funciona debe de ser por mis escasos conocimientos y por eso no consigo entender donde exactamente tengo que implementarlo y de que forma para que funcione, me he leido http://www.desarrolloweb.com/articulos/1035.php como me aconsejaste, y es mas lo he hecho para luego ir cambiando poco a poco las cosas e ir acoplandolo a mis necesidades pero incluso haciendolo en una pagina nueva con copiar y pegar me ha dado varios errores a continuación te pondre el código que hice y te pondre los errores que me da., solo a modo de curiosidad.
Quiero decirte que preferiria hacer funcionar el que estaba ya haciendo por amor propio porque de momento me ha vencido.

Muchas gracias por tu amabilidad y paciencia y si puedes seguir ayudandome te estaria muy agradecido porque pienso que a mi código anterior le faltaba muy poco para que funcionara.

A modo de curiosidad te pongo el código que hice y los errores que me da, del enlace que me aconsejaste.

Linea 20: Notice: Undefined variable: criterio in C:wampwwwActividadesHosteleriaPruebaLocal.php on line 20
Linea 32: Notice: Undefined variable: criterio in C:wampwwwActividadesHosteleriaPruebaLocal.php on line 32
Linea 49: Notice: Undefined variable: txt_criterio in C:wampwwwActividadesHosteleriaPruebaLocal.php on line 49
Linea 55: Notice: Undefined index: criterio in C:wampwwwActividadesHosteleriaPruebaLocal.php on line 55

Código PHP:
<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('general');
?>
 
<?php
 
//Limito la busqueda 
$TAMANO_PAGINA 10
//examino la página a mostrar y el inicio del registro a mostrar 
$pagina = isset($_GET["pagina"])? $_GET["pagina"]: ''// La he cambiado y ya no me da error
if (!$pagina) { 
    
$inicio 0
    
$pagina=1

else { 
    
$inicio = ($pagina 1) * $TAMANO_PAGINA


//miro a ver el número total de campos que hay en la tabla con esa búsqueda 
$ssql "select * from Actividades " $criterio;
$rs mysql_query($ssql,$conexion); 
$num_total_registros mysql_num_rows($rs); 
//calculo el total de páginas 
$total_paginas ceil($num_total_registros $TAMANO_PAGINA); 

//pongo el número de registros total, el tamaño de página y la página que se muestra 
echo "Número de registros encontrados: " $num_total_registros "<br>"
echo 
"Se muestran páginas de " $TAMANO_PAGINA " registros cada una<br>"
echo 
"Mostrando la página " $pagina " de " $total_paginas "<p>"

//construyo la sentencia SQL 
$ssql "select * from actividades " $criterio " limit " $inicio "," $TAMANO_PAGINA
$rs mysql_query($ssql); 
while (
$fila mysql_fetch_object($rs)){ 
    echo 
$fila->NombreComer "<br>"

//cerramos el conjunto de resultado y la conexión con la base de datos 
mysql_free_result($rs); 
mysql_close($conexion); 

//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='PruebaLocal.php?pagina=" $i "&criterio=" $txt_criterio "'>" $i "</a> "
    } 


//inicializo el criterio y recibo cualquier cadena que se desee buscar 
$criterio ""
if (
$_GET["criterio"]!=""){ 
    
$txt_criterio $_GET["criterio"]; 
    
$criterio " where NombreComer like '%" $txt_criterio "%'"
}

?>
<form action="PruebaLocal.php" method="get"> 
Criterio de búsqueda: 
<input type="text" name="criterio" size="22" maxlength="150"> 
<input type="submit" value="Buscar"> 
</form>
  #12 (permalink)  
Antiguo 12/02/2012, 08:21
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Paginador

Los errores Notice son por variables que no estan definidas, por ejemplo para criterio podrias hacer lo siguiente:

Código PHP:
Ver original
  1. $criterio = isset(criterio)? $_GET['criterio'] : '';
Con eso criterio estará definida.
Una cosa levanta estas variables al inicio es decir asegúrate de que estén definidas antes de usarlas y luego la levantas esto te conduce a errores..

Realiza esto y luego seguimos...
Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #13 (permalink)  
Antiguo 12/02/2012, 10:19
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Paginador

Portalmana ya lo he hecho aunque el código que me pones en tu respuesta me da un ERROR de sintaxis, pero no pasa nada lo he cambiado por:
$criterio = isset($_GET["criterio"])? $_GET["criterio"]: '';
tanbien he hecho lo mismo con la variable: $txt_criterio y ya no me indican ningún error.
No obstante en la Linea 63 me da el siguiente error y este no he podido quitarlo te pongo todo el código, la linea la he separado por asteriscos para que la localices el error que me da es:
Notice: Undefined index: criterio in C:\wamp\www\Actividades\Hosteleria\PruebaLocal.php on line 63

Codigo:
Código PHP:
<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('general');
?>
 
<?php


$criterio 
= isset($_GET["criterio"])? $_GET["criterio"]: '';
$txt_criterio=isset($_GET["txt_criterio"])? $_GET["txt_criterio"]: '';


 
//Limito la busqueda 
$TAMANO_PAGINA 10
//examino la página a mostrar y el inicio del registro a mostrar 
$pagina = isset($_GET["pagina"])? $_GET["pagina"]: ''// La he cambiado y ya no me da error
if (!$pagina) { 
    
$inicio 0
    
$pagina=1

else { 
    
$inicio = ($pagina 1) * $TAMANO_PAGINA


//miro a ver el número total de campos que hay en la tabla con esa búsqueda 
$ssql "select * from Actividades " $criterio;
$rs mysql_query($ssql,$conexion); 
$num_total_registros mysql_num_rows($rs); 
//calculo el total de páginas 
$total_paginas ceil($num_total_registros $TAMANO_PAGINA); 

//pongo el número de registros total, el tamaño de página y la página que se muestra 
echo "Número de registros encontrados: " $num_total_registros "<br>"
echo 
"Se muestran páginas de " $TAMANO_PAGINA " registros cada una<br>"
echo 
"Mostrando la página " $pagina " de " $total_paginas "<p>"

//construyo la sentencia SQL 
$ssql "select * from actividades " $criterio " limit " $inicio "," $TAMANO_PAGINA
$rs mysql_query($ssql); 
while (
$fila mysql_fetch_object($rs)){ 
    echo 
$fila->NombreComer "<br>"

//cerramos el conjunto de resultado y la conexión con la base de datos 
mysql_free_result($rs); 
mysql_close($conexion); 

//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='PruebaLocal.php?pagina=" $i "&criterio=" $txt_criterio "'>" $i "</a> "
    } 


//inicializo el criterio y recibo cualquier cadena que se desee buscar 

$criterio ""
// *****************************************************************************************************************
if ($_GET["criterio"]!=""){ 
// *****************************************************************************************************************
    
$txt_criterio $_GET["criterio"]; 
    
$criterio " where NombreComer like '%" $txt_criterio "%'"
}

?>
<form action="PruebaLocal.php" method="get"> 
Criterio de búsqueda: 
<input type="text" name="criterio" size="22" maxlength="150"> 
<input type="submit" value="Buscar"> 
</form>
  #14 (permalink)  
Antiguo 12/02/2012, 10:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 8 meses
Puntos: 406
Respuesta: Paginador

Es la misma sentencia que te ah pasado @portalmana solo que sin abreviar...

Código PHP:
Ver original
  1. //tu código mal
  2. if ($_GET["criterio"]!=""){
  3.  
  4. //código para ver si se definió
  5. if (isset($_GET['criterio'])) {
  6.  
  7. //o para ver si se definió y no esta vacío
  8. if (!empty($_GET["criterio"])){
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #15 (permalink)  
Antiguo 12/02/2012, 10:31
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Paginador

Es que una vez que haces :
Código PHP:
Ver original
  1. $criterio = isset($_GET["criterio"])? $_GET["criterio"]: '';

ya no necesitas hacer
Código PHP:
Ver original
  1. $_GET["criterio"]

Solo usas
Código PHP:
Ver original
  1. $criterio

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #16 (permalink)  
Antiguo 12/02/2012, 13:53
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Paginador

Gracias a los dos, he utilizado una de las opciones de Nemutagk exactamente la de:
Cita:
if (isset($_GET['criterio'])) {
ya que la opción de portalmana me daba error de sintaxis, con eso ya han desaparecido los mensajes de error pero ocurre que cuando utilizo el form Criterio de busqueda y pulso sobre buscar no hace absolutamente nada, ¿Que es lo que ocurre?.
No pongo el código porque salvo la linea comentada aquí mismo en "cita:" no se ha cambiado nada mas.
Creo que el problema esta en la variable criterio !.
Un saludo y perdón por la paliza que os estoy dando hoy domingo, gracias.
  #17 (permalink)  
Antiguo 12/02/2012, 14:07
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Paginador

que trae la variable $criterio que usas en $ssql = "select * from Actividades " . $criterio;
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #18 (permalink)  
Antiguo 12/02/2012, 15:49
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Paginador

He hecho un echo $criterio; y en algunas busquedas me devuelve el parametro que he escrito, creo que eso es lo correcto pero en otras me da tres errores que son los siguientes:

1º) Error:
Código PHP:
//miro a ver el número total de campos que hay en la tabla con esa búsqueda 
$ssql "select * from Actividades " $criterio;
$rs mysql_query($ssql,$conexion); 
// ************************************
$num_total_registros mysql_num_rows($rs); 
// ************************************
//calculo el total de páginas 
$total_paginas ceil($num_total_registros $TAMANO_PAGINA); 
La linea del error es la que esta entre asteriscos:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Actividades\Hosteleria\PruebaLocal.php on line 44

2º) Error:
Código PHP:
//construyo la sentencia SQL 
$ssql "select * from actividades " $criterio " limit " $inicio "," $TAMANO_PAGINA
$rs mysql_query($ssql); 
//********************************
while ($fila mysql_fetch_object($rs)){ 
//********************************
    
echo $fila->NombreComer "<br>"

La linea del error es la que esta entre asteriscos:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Actividades\Hosteleria\PruebaLocal.php on line 56

3º) Error:
Código PHP:
//cerramos el conjunto de resultado y la conexión con la base de datos 
//************************
mysql_free_result($rs);
//************************ 
mysql_close($conexion); 
La linea del error es la que esta entre asteriscos:
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\wamp\www\Actividades\Hosteleria\PruebaLocal.php on line 61

Aparte de eso tanto cuando me devuelve lo que he puesto como cuando me da error no me selecciona nada siguen apareciendo todos los registros, como si no hubiera escrito nada en el criterio de busqueda.
Chicos si con esta ultima ayuda vuestra no consigo que funcione lo dejare porque me habra vencido de momento y empezare otro de nuevo desde cero y luego le ire añadiendo cosas poco a poco a si a lo mejor adelantamos todos y no os doy tanto la paliza.

Como ultimo incluyo todo el código completo tal cual lo tengo ahora a ver si al verlo en conjunto veis algo que a mi se me pasa.

Gracias de verdad y un saludo.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset= ISO-8859-1" />
<title>Reporte de Propiedades</title>

<!--Enlaces a los css necesarios-->
        <link rel="stylesheet" href="../reset.css" type="text/css">

        <link rel="stylesheet" href="../style.css" type="text/css">

        <link rel="stylesheet" href="../Zebra_Pagination.css" type="text/css">



<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('general');
?>
 
<?php


$criterio 
= isset($_GET["criterio"])? $_GET["criterio"]: '';
$txt_criterio=isset($_GET["txt_criterio"])? $_GET["txt_criterio"]: '';


 
//Limito la busqueda 
$TAMANO_PAGINA 10
//examino la página a mostrar y el inicio del registro a mostrar 
$pagina = isset($_GET["pagina"])? $_GET["pagina"]: ''// La he cambiado y ya no me da error
if (!$pagina) { 
    
$inicio 0
    
$pagina=1

else { 
    
$inicio = ($pagina 1) * $TAMANO_PAGINA


//miro a ver el número total de campos que hay en la tabla con esa búsqueda 
$ssql "select * from Actividades " $criterio;
$rs mysql_query($ssql,$conexion); 
$num_total_registros mysql_num_rows($rs); 
//calculo el total de páginas 
$total_paginas ceil($num_total_registros $TAMANO_PAGINA); 

//pongo el número de registros total, el tamaño de página y la página que se muestra 
echo "Número de registros encontrados: " $num_total_registros "<br>"
echo 
"Se muestran páginas de " $TAMANO_PAGINA " registros cada una<br>"
echo 
"Mostrando la página " $pagina " de " $total_paginas "<p>"

//construyo la sentencia SQL 
$ssql "select * from actividades " $criterio " limit " $inicio "," $TAMANO_PAGINA
$rs mysql_query($ssql); 
while (
$fila mysql_fetch_object($rs)){ 
    echo 
$fila->NombreComer "<br>"


//cerramos el conjunto de resultado y la conexión con la base de datos 
mysql_free_result($rs); 
mysql_close($conexion); 

//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='PruebaLocal.php?pagina=" $i "&criterio=" $txt_criterio "'>" $i "</a> "
    } 


//inicializo el criterio y recibo cualquier cadena que se desee buscar 

$criterio "";
if (isset(
$_GET['criterio'])) {
   
$txt_criterio $_GET["criterio"]; 
    
$criterio " where NombreComer like '%" $txt_criterio "%'"
}

?>
<form action="PruebaLocal.php" method="get"> 
Criterio de b&uacute;squeda: 
<input type="text" name="criterio" size="22" maxlength="150"> 
<input type="submit" value="Buscar"> 
</form> 

</html>
  #19 (permalink)  
Antiguo 12/02/2012, 16:05
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Paginador

haz un echo de esta linea $ssql = "select * from Actividades " . $criterio;

y dime que te da segun ingreses por primera vez a la pagina o lo hagas del paginador.

Pues no se como armas eso y ahi puede haber alguna cuestion

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #20 (permalink)  
Antiguo 13/02/2012, 03:38
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 10 meses
Puntos: 0
Paginador SOLUCIONADO

SOLUCIONADO: El problema que tenia era que inicializaba la variable $criterio al final, para solucionarlo solo he tenido que subir esas lineas de código al principio.

Portalmana quiero darte las gracias a ti y a tod@s los que me habeis ayudado, os doy las gracias porque sin vuestra ayuda no lo hubiera conseguido, ahora al ver el código terminado y funcionando comprendo su mecanica y me veo capaz de iniciar nuevos proyectos a pesar de seguir estando mas verde que las lechugas, mi problema principal es que soy algo mayor y mi capacidad de aprendizaje ya no es la misma, por eso lo que es muy facil para otros y con una simple esplicación lo aprenden a mi me cuesta algo más.

Y "Como no es de bien nacido quien no es agradecido", Gracias a tod@s por vuestra ayuda.

Un saludo.

Etiquetas: atascado, html, mysql, paginador, registro, sql, tabla
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 21:43.