Foros del Web » Programando para Internet » PHP »

Paginacion en MySql y PHP

Estas en el tema de Paginacion en MySql y PHP en el foro de PHP en Foros del Web. Buenas! He mirado por toda la web en busca de una solucion para paginar los registros de una consulta en mysql, pero no he encontrado ...
  #1 (permalink)  
Antiguo 23/04/2009, 05:33
 
Fecha de Ingreso: abril-2009
Mensajes: 106
Antigüedad: 15 años
Puntos: 1
Paginacion en MySql y PHP

Buenas!
He mirado por toda la web en busca de una solucion para paginar los registros de una consulta en mysql, pero no he encontrado gran cosa, solo scripts ya hechos.
dichos scripts me dan muchos problemas como por ejemplo:
me muestra el primer registro, y en el momento que pincho en el enlace para el siguiente me muestra todos los campos vacios... y la verdad es que ando un poco perdido debido a que nunca realice una paginacion en php.
les dejo el codigo que quiero paginar aver si alguien me puede exar una mano o guiarme para hacer la paginacion de los registros.


Codigo:
--------------------------------------------------------------------------------------------------------

if(isset($_GET['Buscar'])){
$sqlnota=mysql_query("SELECT * FROM `averias` WHERE `Descripcion_Averia` LIKE'%".$_GET['buskrnota']."%'");
$rownota=mysql_fetch_array($sqlnota);
$sqlcliente=mysql_query("SELECT * FROM `cliente` WHERE `idCliente`='".$rownota[5]."'");
$rowcliente=mysql_fetch_array($sqlcliente);

}
include("paginar.php");
echo "<b>Datos del Cliente: </b><br><br>";
echo "<b>Codigo Cliente: </b>".$rowcliente[0]."<br>";
echo "<b>Nombre Fiscal: </b>".$rowcliente[1]."<br>";
echo "<b>Nombre Comercial: </b>".$rowcliente[2]."<br>";
echo "<b>Telefono Cliente: </b>".$rowcliente[3]."<br>";
echo "<b>Direccion Cliente: </b>".$rowcliente[4]."<br>";
echo "<b>Mantenimiento: </b>".$rowcliente[5]."<br>";
echo "<b>Persona de Contacto: </b>".$rowcliente[6]."<br>";
echo "<b>Poblacion Cliente: </b>".$rowcliente[7]."<br>";
echo "<b>Provincia Cliente: </b>".$rowcliente[8]."<br>";
echo "<b>Codigo Postal: </b>".$rowcliente[9]."<br>";
echo "<b>E-Mail: </b>".$rowcliente[10]."<br>";
echo "<b>Fax Cliente: </b>".$rowcliente[11]."<br><br><br>";
echo "<b>Datos de la Averia: </b><br><br>";
echo "<b>Codigo Averia: </b><input type='text' name='codaveria' value='".$rownota[0]."'><br>";
echo "<b>Tipo de Llamada: </b>".$rownota[3]."<br>";
echo "<b>Tipo Averia: </b>".$rownota[1]."<br>";
echo "<b>Averia:</b><br><textarea rows='10' cols='60' name='averia' value=''>".$rownota[2]."</textarea><br>";
echo "<b>Estado Averia: </b>".$rownota[4]." Solucionada<br>";
echo "<b>Averia Solucionada: </b><input type='radio' name='solucionado' value='No'>No";
echo "<input type='radio' name='solucionado' value='Si'>Si<br>";
echo "<br><input type='submit' name='Aceptar' value='Aceptar'>";
echo "<input type='reset' name='Cancelar' value='Cancelar'>";




--------------------------------------------------------------------------------------------------------
y aki les pongo el codigo de paginar.php
--------------------------------------------------------------------------------------------------------

<html>
<head>
<title>Páginación de resultados</title>
</head>
<body bgcolor=#FFFFFF>
<?

$user="root";
$pass="vertrigo";
$con=conecta($user,$pass);
$sqlcliente=mysql_query("SELECT * FROM `cliente` WHERE `idCliente`='".$rownota[5]."'");
$rowcliente=mysql_fetch_array($sqlcliente);
if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=1; // cantidad de resultados por página
$inicial = $pg * $cantidad;
$base="kroot_notas";

$pegar = "SELECT * FROM `averias` ORDER BY `idAverias` LIMIT ".$inicial.",".$cantidad;
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM `averias` ORDER BY `idAverias`";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);

// Imprimiendo los resultados
while($array = mysql_fetch_array($cad)) {
echo $array['idAverias']."<br>";
}

// Cerramos la conexión a la base
$con=mysql_close($con);

// Creando los enlaces de paginación
echo "<p>";
if ($pg <> 0)
{
$url = $pg - 1;
echo "<a href='nota.php?pg=".$url."'>« Anterior</a>*";
}
else {
echo " ";
}

for ($i = 0; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face=Arial size=2 color=ff0000><b>*".$i."*</b></font>";
}
else {
echo "<a href='nota.php?pg=".$i."'>".$i."</a>*";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='nota.php?pg=".$url."'>Siguiente »</a>";
}
else {
echo " ";
}
echo "</p>";
?>
</body>
</html>


--------------------------------------------------------------------------------------------------------
Este codigo lo descargue de este foro (creo recordar que era de este foro pq tb he probado scripts de otros sitios como el "paginator" que se que tb se encuentra en este foro)


weno gracias de antemano y un cordial saludo para todos los usuarios del foro

Gracias de nuevo
  #2 (permalink)  
Antiguo 23/04/2009, 05:46
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Paginacion en MySql y PHP

Hola, proba este que estoy usando yo, y funciona bien.
Espero te sirva.

Saludos, Ricardo !!!

Código PHP:
<?php

//conecto con la base de datos
include('conexion.php');

//Limito la busqueda
$TAMANO_PAGINA 15;

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


//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$rs mysql_query("select * from mano_obra_directa"$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
$rs mysql_query("select * from mano_obra_directa order by codigo " $criterio " limit " $inicio "," $TAMANO_PAGINA);


if (
mysql_num_rows($rs))

  echo 
"<table border = '1'> \n"
  echo 
"<tr><td>CODIGO</td>
            <td>NOMBRE</td>
            <td>UNIDAD</td>
            <td>COSTO $</td> 
            <td>COSTO USD</td></tr> \n"

}

while (
$fila mysql_fetch_array($rs))
{
         echo 
"<tr><td>".$fila['codigo']."</td>";
         echo 
"<td>".$fila['nombre']."</td>";
         echo 
"<td>".$fila['unidad']."</td>";
         echo 
"<td>".$fila['costo_mod_pesos']."</td>";
         echo 
"<td>".$fila['costo_mod_dolar']."</td></tr><br>" ;
 }

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


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


?>
__________________
Mail: [email protected]

Última edición por colote; 23/04/2009 a las 05:47 Razón: .
  #3 (permalink)  
Antiguo 24/04/2009, 03:33
Avatar de cubic  
Fecha de Ingreso: febrero-2007
Mensajes: 51
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Paginacion en MySql y PHP

Colote Gracias Crack
  #4 (permalink)  
Antiguo 09/05/2009, 11:55
Avatar de Vannessa  
Fecha de Ingreso: septiembre-2005
Mensajes: 69
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Paginacion en MySql y PHP

hola Colote.. estoy utilizando tu metodo de paginacion, pero estoy perdida en la seccion de criterio.
por alguna razon me esta enviando a una pagina Not Found.

el $criterio donde se define??
  #5 (permalink)  
Antiguo 19/05/2009, 08:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Paginacion en MySql y PHP

Cita:
Iniciado por Vannessa Ver Mensaje
hola Colote.. estoy utilizando tu metodo de paginacion, pero estoy perdida en la seccion de criterio.
por alguna razon me esta enviando a una pagina Not Found.

el $criterio donde se define??
Este criterio no lo tienes que definir tu si lo quieres poner accedente:
$criterio = "ASC";
o descendente:
$criterio = "DESC";
  #6 (permalink)  
Antiguo 15/02/2013, 10:48
Avatar de futusystem  
Fecha de Ingreso: febrero-2013
Ubicación: barcelona
Mensajes: 57
Antigüedad: 11 años, 2 meses
Puntos: 0
Información Respuesta: Paginacion en MySql y PHP

Cita:
Iniciado por colote Ver Mensaje
Hola, proba este que estoy usando yo, y funciona bien.
Espero te sirva.

Saludos, Ricardo !!!

Código PHP:
<?php

//conecto con la base de datos
include('conexion.php');

//Limito la busqueda
$TAMANO_PAGINA 15;

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


//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$rs mysql_query("select * from mano_obra_directa"$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
$rs mysql_query("select * from mano_obra_directa order by codigo " $criterio " limit " $inicio "," $TAMANO_PAGINA);


if (
mysql_num_rows($rs))

  echo 
"<table border = '1'> \n"
  echo 
"<tr><td>CODIGO</td>
            <td>NOMBRE</td>
            <td>UNIDAD</td>
            <td>COSTO $</td> 
            <td>COSTO USD</td></tr> \n"

}

while (
$fila mysql_fetch_array($rs))
{
         echo 
"<tr><td>".$fila['codigo']."</td>";
         echo 
"<td>".$fila['nombre']."</td>";
         echo 
"<td>".$fila['unidad']."</td>";
         echo 
"<td>".$fila['costo_mod_pesos']."</td>";
         echo 
"<td>".$fila['costo_mod_dolar']."</td></tr><br>" ;
 }

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


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


?>

hola aplique este script php para hacer una paginacion de mi web pero me da unos errores:

* el primero es que cuando es el primer registro que carga me dice que hay un error Notice: Undefined index: pagina in C:\wamp\www\pagina\inicio.php on line 5 en la linea 5 esta este código $pagina =$_GET["pagina"]; una vez voy a la pagina 2, 3 , 4 etc. ese error desaparece.

*el segundo error lo tengo en esta consulta $rs=mysql_query("SELECT * FROM entradas order by fecha DESC" . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA); me da este error Notice: Undefined variable: criterio in C:\wamp\www\pagina\inicio.php on line 24

* y el tercer error lo tengo en la paginacion como tal me lanza el siguiente error Notice: Undefined variable: txt_criterio in C:\wamp\www\pagina\inicio.php on line 59

en la linea 59 tengo esta parte del codigo echo "<a href='index.php?pagina=".$i."&criterio=".$txt_crit erio ."'>" . $i . "</a> ";

si alguien ya a pasado por esto y sabe como solucionarlo le agradecería su ayuda
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:04.