Foros del Web » Programando para Internet » PHP »

Ayuda Paginacion! Please!

Estas en el tema de Ayuda Paginacion! Please! en el foro de PHP en Foros del Web. Gente, estoy tratando de paginar por primera vez en php y no puedo llegar al resultado querido. Intente con el paginator (muy bueno) pero cuando ...
  #1 (permalink)  
Antiguo 05/05/2010, 13:17
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Exclamación Ayuda Paginacion! Please!

Gente, estoy tratando de paginar por primera vez en php y no puedo llegar al resultado querido. Intente con el paginator (muy bueno) pero cuando paso a la pagina 2,me pierde la consulta! Si alguien me puede dar una mano con esta busqueda (paginarla), estaria agradecido!!! Codigo:

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

<head>
    <title>Concesionaria - Venta y Compra de Vehiculos</title>
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />    
</head>
<body>
  <div id="outer">
    <div id="wrapper">
      <div id="body-bot">
        <div id="body-top">
          <div id="logo">
            <h1>CONCESIONARIA</h1>
            <p>Venta y Compra de Vehiculos</p>
          </div>
          <div id="nav">
            <ul>
              <li><a href="index.php">INICIO</a></li>
              <li><a href="marca.php">BUSCAR MARCA</a></li>
              <li><a href="modelo.php">BUSCAR MODELO</a></li>
              <li><a href="empresa.php">LA EMPRESA</a></li>
              <li><a href="contacto.php">CONTACTO</a></li>
            </ul>
            <div class="clear"> </div>
          </div>
          <table width="" height="40" border="1" align="center">
    <tr><td width="237" height="25"></td>
    </tr>      

  <tr><td height="35">BUQUEDA POR MARCA</td>
      <td width="238" height="35">BUQUEDA POR MODELO</td>
  </tr>
</table>
          
<?php //Esto es lo que devuelve segun los datos de la tabla de arriba
$sql "SELECT DISTINCT coches.*, marcas.* FROM coches, marcas WHERE coches.idMarca = marcas.id";
    if (
intval($_POST['selCiudad']) > 0) {
        
$sql .= " AND coches.idMarca = '" intval($_POST['selCiudad']) . "'";
    }
$sql .= " ORDER BY marcas.marca DESC";

$tabla mysql_query($sql);
while (
$registro mysql_fetch_array($tabla)) {
?>
<table border="1" width="700" align="center">
<tr>
<td>Marca</td>
<td><?php echo $registro['Marca']; ?></td>
</tr>
<tr>
<td>Modelo</td>
<td><?php echo $registro['Modelo']; ?></td>
</tr>
<tr>
<td>Precio</td>
<td><?php echo $registro['Precio']; ?></td>
</tr>
<tr>
<td>Año</td>
<td><?php echo $registro['Ano']; ?></td>
</tr>
<tr>
<td>Kilometraje</td>
<td><?php echo $registro['Kms']; ?></td>
</tr>
<tr>
<td><?php echo '<img src="img/'.$registro["imagen"].'" width="56" height="42" >'?></td>
</tr>
</table>

<?php 
}

mysql_free_result($tabla);
mysql_close($conexion);
?>
        </div>
      </div>
    </div>
  </div>
</body>
</html>
  #2 (permalink)  
Antiguo 05/05/2010, 13:25
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 4 meses
Puntos: 25
Respuesta: Ayuda Paginacion! Please!

Recuerda que tienes que propagar la variable ke buscas, por ejemplo:

Si haces:

Código PHP:
buscador.php?buscar=ford 
En el paginator tienes que decirle que configure "buscar" como una variable a propagar, en el codigo de ejemplo de paginator dice:

Código PHP:
//Variables a propagar
$_pagi_propagar = array("buscar");//No importa si son POST o GET 
De esta manera la paginacion no se pierde.
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #3 (permalink)  
Antiguo 05/05/2010, 13:47
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Ayuda Paginacion! Please!

Gracias por la respuesta! Estoy en el horno con esto y no puedo terminar el trabajo
La busqueda viene de una pagina anterior con un form select:
Código PHP:
    <form name="form1" method="post" action="1.php" >
    <label>
     Ciudad:
    <select name="selCiudad" id="selCiudad">
        <option value="-1" selected>Todas</option>
    <?php
    $tablaciudades 
mysql_query("SELECT DISTINCT * FROM marcas ORDER BY marca ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registrociudad mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
    
?>
        <option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['marca']; ?></option>
    <?php
    
// termina la zona de repeticion
    
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
    </label>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
</form>
Con Paginator El codigo esta asi:
Código PHP:
<?php //Esto es lo que devuelve segun los datos de la tabla de arriba
//Sentencia sql (sin limit)
$_pagi_sql "SELECT DISTINCT coches.*, marcas.* FROM coches, marcas WHERE coches.idMarca = marcas.id ";
    if (
intval($_POST['selCiudad']) > 0) {
        
$_pagi_sql .= " AND coches.idMarca = '" intval($_POST['selCiudad']) . "'";
    }
$_pagi_sql .= " ORDER BY marcas.marca DESC";

$tabla mysql_query($_pagi_sql);
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 2;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente, 
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo true;//recomendado false.

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET

//Definimos qué estilo CSS se utilizará para los enlaces de paginación.
//El estilo debe estar definido previamente
$_pagi_nav_estilo "paginacion";

//definimos qué irá en el enlace a la página anterior
$_pagi_nav_anterior "&lt;";// podría ir un tag <img> o lo que sea

//definimos qué irá en el enlace a la página siguiente
$_pagi_nav_siguiente "&gt;";// podría ir un tag <img> o lo que sea

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

while (
$registro mysql_fetch_array($_pagi_result)) {
?>
<table border="1" width="700" align="center">
<tr>
<td>Marca</td>
<td><?php echo $registro['Marca']; ?></td>
</tr>
<tr>
<td>Modelo</td>
<td><?php echo $registro['Modelo']; ?></td>
</tr>
<tr>
<td>Precio</td>
<td><?php echo $registro['Precio']; ?></td>
</tr>
<tr>
<td>Año</td>
<td><?php echo $registro['Ano']; ?></td>
</tr>
<tr>
<td>Kilometraje</td>
<td><?php echo $registro['Kms']; ?></td>
</tr>
<tr>
<td><?php echo '<img src="img/'.$registro["imagen"].'" width="56" height="42" >'?></td>
</tr>
</table>

<?php // con el echo de la imagen, pude finalmente traerla. Esta alojada en una carpeta y en la bd como variable, uf...
}
mysql_free_result($tabla);
mysql_close($conexion);
//Incluimos la barra de navegación
echo"<p>".$_pagi_navegacion."</p>";

//Incluimos la información de la página actual
echo"<p>Mostrando Clientes ".$_pagi_info."</p>";
?>
En el paginator puse esto:
Código PHP:
$_pagi_propagar = array("marca"); 
Los dos primera busqueda la trae re bien, pero paso a la 2º y ya me trae todo
Gracias nuevamente!!!!!!!
  #4 (permalink)  
Antiguo 05/05/2010, 14:00
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 4 meses
Puntos: 25
Respuesta: Ayuda Paginacion! Please!

Primero tu select esta mal, asi esta bien:
Código HTML:
Ver original
  1. <form name="form1" method="post" action="1.php" >
  2.     <label>
  3.      Ciudad:
  4.     <select name="selCiudad" id="selCiudad">
  5.         <option value="-1" selected>Todas</option>
  6.     <?php
  7.    $tablaciudades = mysql_query("SELECT DISTINCT * FROM marcas ORDER BY marca ASC"); // Seleccionamos las ciudades de la tabla ciudades
  8.    while ($registrociudad = mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
  9.    ?>
  10.         <option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['marca']; ?></option>
  11.     <?php
  12.    } // termina la zona de repeticion
  13.    mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
  14. ?>
  15.     </label>
  16.     <input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
  17. </form>

Despues, propagas "selCiudad"
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶

Última edición por JessicaTJ; 05/05/2010 a las 14:07
  #5 (permalink)  
Antiguo 05/05/2010, 14:17
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Ayuda Paginacion! Please!

GRACIAS!!! Igual... Segui tus pasos y sigue ocurriendo lo mismo..
La primera busqueda la hace bien, y la barra de direcciones muestra:
Código HTML:
http://localhost/concesionaria/1.php
En la pagina 2,donde se pierde la busqueda muestra:
Código HTML:
http://localhost/concesionaria/1.php?_pagi_pg=2
Puede ser debido a que cada vez que se ejecuta la pagina 1 hace la siguiente busqueda?
Código PHP:
$_pagi_sql "SELECT DISTINCT coches.*, marcas.* FROM coches, marcas WHERE coches.idMarca = marcas.id ";
    if (
intval($_POST['selCiudad']) > 0) {
        
$_pagi_sql .= " AND coches.idMarca = '" intval($_POST['selCiudad']) . "'";
    }
$_pagi_sql .= " ORDER BY marcas.marca DESC"
  #6 (permalink)  
Antiguo 05/05/2010, 14:22
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 4 meses
Puntos: 25
Respuesta: Ayuda Paginacion! Please!

Trata de ke las variables ke usas sean GET

Para ke cuando buskes te salga:

Código HTML:
http://localhost/concesionaria/1.php?search=mibuskeda
Y ya despues:

Código HTML:
http://localhost/concesionaria/1.php?search=mibuskeda&_pagi_pg=2
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #7 (permalink)  
Antiguo 05/05/2010, 14:29
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Ayuda Paginacion! Please!

Lo he intentado antes de postear, el codigo queda en donde tomo la variable:
Código HTML:
<form name="form1" method="GET" action="1.php" >
    <label>
     Ciudad:
    <select name="selCiudad" id="selCiudad">
        <option value="-1" selected>Todas</option>
    <?php
    $tablaciudades = mysql_query("SELECT DISTINCT * FROM marcas ORDER BY marca ASC"); // Seleccionamos las ciudades de la tabla ciudades
    while ($registrociudad = mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
    ?>
        <option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['marca']; ?></option>
    <?php
    } // termina la zona de repeticion
    mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
</select>
    </label>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
</form> 
Y las paso asi:
Código PHP:
$_pagi_sql "SELECT DISTINCT coches.*, marcas.* FROM coches, marcas WHERE coches.idMarca = marcas.id ";
    if (
intval($_GET['selCiudad']) > 0) {
        
$_pagi_sql .= " AND coches.idMarca = '" intval($_GET['selCiudad']) . "'";
    }
$_pagi_sql .= " ORDER BY marcas.marca DESC"
Y nada...
Sigo intentando con lo que vayan proponiendo, desde ya MIL GRACIAS!
Salu2!
  #8 (permalink)  
Antiguo 05/05/2010, 21:00
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
De acuerdo Respuesta: La Solucion Como Corresponde

Asi es, pude resolverlo. Espero que a alquien le sirva. Un abrazo a todos!
Código PHP:
<?php
$conexion 
mysql_connect('localhost''''');
mysql_select_db('concesionaria');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Concesionaria - Venta y Compra de Vehiculos</title>
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />    
</head>
<body>
  <div id="outer">
    <div id="wrapper">
      <div id="body-bot">
        <div id="body-top">
          <div id="logo">
            <h1>CONCESIONARIA</h1>
            <p>Venta y Compra de Vehiculos</p>
          </div>
          <div id="nav">
            <ul>
              <li><a href="index.php">INICIO</a></li>
              <li><a href="marca.php">BUSCAR MARCA</a></li>
              <li><a href="modelo.php">BUSCAR MODELO</a></li>
              <li><a href="empresa.php">LA EMPRESA</a></li>
              <li><a href="contacto.php">CONTACTO</a></li>
            </ul>
            <div class="clear"> </div>
          </div>
          <table width="" height="40" border="1" align="center">
    <tr><td width="237" height="25"></td>
    </tr>      
  <tr>
    <td colspan="2">
<form name="form1" method="GET" action="1.php" >
    <label>
     Ciudad:
    <select name="selCiudad" id="selCiudad">
        <option value="-1" selected>Todas</option>
    <?php
    $tablaciudades 
mysql_query("SELECT DISTINCT * FROM marcas ORDER BY marca ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registrociudad mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
    
?>
        <option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['marca']; ?></option>
    <?php
    
// termina la zona de repeticion
    
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
</select>
    </label>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
</form></td>
    </tr>
  <tr><td height="35">BUQUEDA POR MARCA</td>
      <td width="238" height="35">BUQUEDA POR MODELO</td>
  </tr>
</table>
          
<?php //Esto es lo que devuelve segun los datos de la tabla de arriba
$_pagi_sql "SELECT DISTINCT coches.*, marcas.* FROM coches, marcas WHERE coches.idMarca = marcas.id ";
    if (
intval($_GET['selCiudad']) > 0) {
        
$_pagi_sql .= " AND coches.idMarca = '" intval($_GET['selCiudad']) . "'";
    }
$_pagi_sql .= " ORDER BY marcas.marca DESC";
$tabla mysql_query($_pagi_sql);
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 4;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente, 
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo true;//recomendado false.

//Definimos qué estilo CSS se utilizará para los enlaces de paginación.
//El estilo debe estar definido previamente
$_pagi_nav_estilo "paginacion";

//definimos qué irá en el enlace a la página anterior
$_pagi_nav_anterior "&lt;";// podría ir un tag <img> o lo que sea

//definimos qué irá en el enlace a la página siguiente
$_pagi_nav_siguiente "&gt;";// podría ir un tag <img> o lo que sea

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

while (
$registro mysql_fetch_array($_pagi_result)) {
?>
<table border="1" width="700" align="center">
<tr>
<td>Marca</td>
<td><?php echo $registro['Marca']; ?></td>
</tr>
<tr>
<td>Modelo</td>
<td><?php echo $registro['Modelo']; ?></td>
</tr>
<tr>
<td>Precio</td>
<td><?php echo $registro['Precio']; ?></td>
</tr>
<tr>
<td>Año</td>
<td><?php echo $registro['Ano']; ?></td>
</tr>
<tr>
<td>Kilometraje</td>
<td><?php echo $registro['Kms']; ?></td>
</tr>
<tr>
<td><?php echo '<img src="img/'.$registro["imagen"].'" width="56" height="42" >'?></td>
</tr>
</table>

<?php 
}
mysql_free_result($tabla);
mysql_close($conexion);
//Incluimos la barra de navegación
echo"<p>".$_pagi_navegacion."</p>";

//Incluimos la información de la página actual
echo"<p>Mostrando Clientes ".$_pagi_info."</p>";
?>
        </div>
      </div>
    </div>
  </div>
</body>
</html>
  #9 (permalink)  
Antiguo 05/05/2010, 21:02
 
Fecha de Ingreso: abril-2010
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
De acuerdo Respuesta: Solucion parte 2

EL GRAN PAGINATOR, (como dijo jesica GRACIASSSSSSSSSS en $_pagi_propagar linea 236, hay que pasarle la variable (ahi y solo ahi))
Voy a poner solo la parte donde paso la variable, porque el paginator es muy largo
Gracias Jesi, nos vemos
besos!

Código PHP:
/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar = array("selCiudad");
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 } 

Etiquetas: paginacion
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 11:13.