Foros del Web » Programando para Internet » PHP »

Paginacion no me cambia el valor de la primera fila

Estas en el tema de Paginacion no me cambia el valor de la primera fila en el foro de PHP en Foros del Web. Hola. Estoy tratando de paginr los resultados que hago por medio de una consulta a una base de datos. La paginación resulta sin problemas pero ...
  #1 (permalink)  
Antiguo 03/10/2009, 12:02
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 16 años, 9 meses
Puntos: 0
Paginacion no me cambia el valor de la primera fila

Hola.
Estoy tratando de paginr los resultados que hago por medio de una consulta a una base de datos. La paginación resulta sin problemas pero sucede "algo extraño" , debido a que el primer valor siempre me lo imprime en la primera fila de todas las pagina y no me muestra el valor que corresponde en esa pagina y esa fila.
Aqui coloco un ejemplo de comoesta funcionando hasta ahora:

Ejemplo de impresion por pantalla:
Pagina 1: valor 1 --- valor 2--- valor 3
Pagina 2: valor 1 -- valor 5 --- valor 6 (Deberia montrar el valor 4 y no el valor 1)
Pagina 3: valor 1 -- valor 8 --- valor 9 (Deberia montrar el valor 5 y no el valor 1)
Pagina 3: valor 1 -- valor 11 --- N... (Deberia montrar el valor 10 y no el valor 1)

Ojalá se pueda entender lo que trate de explicar y que me puedan ayudar.
Aqui dejo mi codigo:

Código PHP:
<?php
                
//Carga de variables del Servidor de Base de Datos.
                
require ('base_de_datos.php');
                
//Conexion a la Base de Datos.
                
$conexion mysql_connect($host,$usuario,$password) or die ('Error de conexion, el error es: '.mysql_error());
                
//Seleccion de la Base de Datos.
                
mysql_select_db($bd,$conexion) or die ('Error de selecion de Base de Datos, el error es: '.mysql_error());
                
//Confeccion de la consulta SQL.                
                
$consulta 'SELECT id_vehiculo, patente_vehiculo, marca_vehiculo, modelo_vehiculo, ano_vehiculo, descripcion_estado_vehiculo FROM vehiculo JOIN estado_vehiculo USING (id_estado_vehiculo)';    
                
//Ejecucion de la consulta SQL.
                
$resultado mysql_query($consulta,$conexion) or die ('Error en la consulta SQL, el error es : '.mysql_error());
                
//Contar cantidad de registros
                
$num_registros=mysql_num_rows($resultado);
                
//echo"$num_registros";
                //Comprueba existencia de resultado
                
if (mysql_num_rows($resultado))
                {
                    
//Muestra los resultados
                    
for ($i 0;$i <= mysql_num_rows($resultado)-1$i++)
                    {
                        if (!
mysql_data_seek($resultado$i))
                        {
                            echo 
"No se puede mostrar la fila ".$i.", el error es: ".mysql_error();
                            continue;
                        }
                        if (!(
$registro mysql_fetch_row($resultado)))
                        {
                            continue;
                        }
                            
//******PAGINACION*********
                    //cantidad de registros por pagina
                    
$registros=3;
                    
//numero de pagina 
                    
$pagina=$_GET["num"];
                    if (
is_numeric($pagina))
                         
$inicio=(($pagina-1)*$registros);
                    else
                        
$inicio=0;
                    
$resultado mysql_query("SELECT id_vehiculo, patente_vehiculo, marca_vehiculo, modelo_vehiculo, ano_vehiculo, descripcion_estado_vehiculo FROM vehiculo JOIN estado_vehiculo USING (id_estado_vehiculo) limit $inicio,$registros " ,$conexion);
                    
$paginas=ceil($num_registros/$registros);
                        echo 
'<tr bgcolor="#cccccc">';
                        echo 
'<td><div align="center"><form name="buscar" method="post" action="modificar_vehiculo.php"><input type="submit" value="'.$registro[0].'"><input type="hidden" name="id_vehiculo" value="'.$registro[0].'"><input type="hidden" name="enviar" value="Buscar"></form></div></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[1].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[2].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[3].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[4].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[5].'</div></label></td>';
                        echo 
'</tr>';
                    }
                }
                else
                {
                                
?>
                    </table>                    
    
                    <table width="100%" class="Estilo1" align="center">
                        <tr>
                            <td><label style="font-size:20px"><div align="center">No existen registros!</div></label></td>
                        </tr>
                    </table>        
<?php
              
//cierra else
               
}
                
?>        
   
<?php
   
                
//Imprimir numeros de paginas
            
if ($pagina>1)
                     echo 
"<a href='maestro_vehiculos.php ?num=" . ($pagina-1) ."' > Anterior</a> " ;    
                     for (
$cont=1;$cont<=$paginas;$cont++)
                       {
                         if (
$cont==$pagina)
                            echo 
$cont " " ;
                         else
                             echo 
"<a href='maestro_vehiculos.php?num=".$cont ."'>$cont</a> " ;
                       }
            if (
$pagina<$paginas)
                   echo 
"<a href='maestro_vehiculos.php ?num=" . ($pagina+1) ."'> Siguiente</a> " ;
     echo
"</table>";
?>
    
      <?php
      
 
//cierra funcion
    
}
    
?>
  #2 (permalink)  
Antiguo 03/10/2009, 12:29
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Paginacion no me cambia el valor de la primera fila

No copiaste el codigo completo, o te falta algo...

A que pertenece esto?
Código php:
Ver original
  1. //cierra funcion
  2.     }
  #3 (permalink)  
Antiguo 03/10/2009, 12:48
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Paginacion no me cambia el valor de la primera fila

Yo de casualidad justo estaba probando hacer uno ya que nunca habia hecoh xD Te lo dejo para que lo veas, cambias las queries y el fetch segun tus necesidaes y te va a funionar, tiene hasta el CSS armado jeje saludos!


Si ves esto en el codigo: & #37 ; (sin espacios) reemplazalo por esto %

Código php:
Ver original
  1. <html>
  2. <head>
  3.     <title>MySQL Test</title>
  4.     <style type="text/css">
  5.         <!--
  6.         body
  7.         {
  8.             font-family: 'Lucida Grande', 'Lucida Sans', 'Lucida Sans Unicode', 'Verdana', sans-serif;
  9.             font-size: 12px;
  10.         }
  11.        
  12.         .page,
  13.         .page:active,
  14.         .page:link,
  15.         .page:visited
  16.         {
  17.             background: #F0F0F0;
  18.             border: 1px solid #CCC;
  19.             margin: 0 2px 0 2px;
  20.             padding: 4px 8px 4px 8px;
  21.             text-decoration: none;
  22.             color: #990000;
  23.             display: block;
  24.             float: left;
  25.         }
  26.        
  27.         .page:hover
  28.         {
  29.             background: #FFF;
  30.             border: 1px solid #AAA;
  31.         }
  32.        
  33.         .active
  34.         {
  35.             background: #FFF;
  36.             border: 1px solid #AAA;
  37.             margin-top: -2px;
  38.             padding: 6px 10px 6px 10px;
  39.             font-weight: bold;
  40.             color: #161616;
  41.         }
  42.        
  43.         .page.below,
  44.         .page.above
  45.         {
  46.             margin-top: -1px;
  47.             padding: 5px 9px 5px 9px;
  48.         }
  49.         -->
  50.     </style>
  51. </head>
  52. <body>
  53. <?php
  54.  
  55. $link = mysql_connect('localhost','root','',true);
  56. $connected = mysql_select_db('test',$link) ? true : false;
  57.  
  58. // Get page
  59. $page = $_GET['page'] ? $_GET['page'] : 1;
  60.  
  61. // Results per page
  62. $rpp = 2;
  63.  
  64. // Get total news
  65. $query = "SELECT * FROM news";
  66. $result = mysql_query($query,$link);
  67. $total_news = mysql_num_rows($result);
  68.  
  69. if ($total_news < 1) return print 'No results found. ';
  70.  
  71. if (($total_news % $rpp) != 0)
  72. {
  73.     $last_page_results = $total_news % $rpp;
  74.     $total_pages = ($total_news - $last_page_results) / $rpp + 1;
  75. }
  76. else $total_pages = $total_news / $rpp;
  77.  
  78. $pages = array();
  79. $cp = 0;
  80.  
  81. for ($i = 1; $i <= $total_pages; $i++)
  82. {
  83.     if ($last_page_results and $i == $total_pages)
  84.     {
  85.         $pages[$i] = $cp. ','. $last_page_results;
  86.         break;
  87.     }
  88.     $pages[$i] = $cp. ','. $rpp;
  89.     $cp+= $rpp;
  90. }
  91.  
  92. if ($page > $total_pages) print 'No more pages after page '. $total_pages. '! ';
  93. else
  94. {
  95.     $_query = "SELECT id,title,content,date FROM news LIMIT ". $pages[$page];
  96.    
  97.     $_result = mysql_query($_query,$link);
  98.    
  99.     while ($row = mysql_fetch_assoc($_result))
  100.     {
  101.         print '<h4>' .$row['title']. ' (' .$row['date']. ')</h4>'."\r\n";
  102.         print '<p>' .$row['content']. '</p>'."\r\n";
  103.     }
  104.    
  105.     if ($total_pages > 1) {
  106.        
  107.         $back = ($page == 1) ? '' : ('<a href="?page=' .($page - 1). '" class="page">&laquo; Anterior</a>');
  108.         $first = ($page == 1 or $page == 2) ? '' : ('<a href="?page=1" title="Go to first page..." class="page">...</a>');
  109.         $below = ($page == 1) ? '' : ('<a href="?page=' .($page - 1). '" class="page below">' .($page - 1). '</a>');
  110.         $current = '<span class="page active">' .$page. '</span>';
  111.         $above = ($page == $total_pages) ? '' : ('<a href="?page=' .($page + 1). '" class="page above">' .($page + 1). '</a>');
  112.         $last = ($page == ($total_pages - 1) or $page == $total_pages) ? '' : ('<a href="?page=' .$total_pages. '" title="Go to last page..." class="page">...</a>');
  113.         $next = ($page == $total_pages) ? '' : ('<a href="?page=' .($page + 1). '" class="page">Siguiente &raquo;</a>');
  114.        
  115.         print $back.$first.$below.$current.$above.$last.$next;
  116.     }
  117. }
  118.  
  119. ?>
  120. </body>
  121. </html>

Última edición por Nisrokh; 03/10/2009 a las 12:54
  #4 (permalink)  
Antiguo 03/10/2009, 13:10
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Paginacion no me cambia el valor de la primera fila

Cita:
Iniciado por Nisrokh Ver Mensaje
No copiaste el codigo completo, o te falta algo...

A que pertenece esto?
Código php:
Ver original
  1. //cierra funcion
  2.     }
Claro, no copie todo el codigo, eso pertenece ah la funcion que me permite crear una pagina nueva. Aqui esta completo


Código PHP:
<?php
    $estado 
0;
    function 
pagina_nueva()
    
//Abre funcion
       
{
?>
        <table width="70%" bordercolor="#000000" class="Estilo1" align="center">
            <tr>
                <td align="center" bgcolor="#E6EFF9"><strong>Vehiculos</strong></td>
            </tr>
        </table>
        <table width="75%" border="1" class="Estilo1" font color="#FFFFFF" align="center">
            <tr bgcolor="#999999">
                <td width="120px"><div align="center"><strong><font color="#FFFFFF"><strong>Id</strong></font></div></td>
                <td ><div align="center"><strong><font color="#FFFFFF">Patente</font></strong></div></td>
                <td><div align="center"><strong><font color="#FFFFFF">Marca</font></strong></div></td>
                <td><div align="center"><strong><font color="#FFFFFF">Modelo</font></strong></div></td>
                <td><div align="center"><strong><font color="#FFFFFF">Año</font></strong></div></td>
                <td><div align="center"><strong><font color="#FFFFFF">Estado del Vehiculo</font></strong></div></td>
            </tr>
<?php
                
//Carga de variables del Servidor de Base de Datos.
                
require ('base_de_datos.php');
                
//Conexion a la Base de Datos.
                
$conexion mysql_connect($host,$usuario,$password) or die ('Error de conexion, el error es: '.mysql_error());
                
//Seleccion de la Base de Datos.
                
mysql_select_db($bd,$conexion) or die ('Error de selecion de Base de Datos, el error es: '.mysql_error());
                
//Confeccion de la consulta SQL.                
                
$consulta 'SELECT id_vehiculo, patente_vehiculo, marca_vehiculo, modelo_vehiculo, ano_vehiculo, descripcion_estado_vehiculo FROM vehiculo JOIN estado_vehiculo USING (id_estado_vehiculo)';    
                
//Ejecucion de la consulta SQL.
                
$resultado mysql_query($consulta,$conexion) or die ('Error en la consulta SQL, el error es : '.mysql_error());
                
//Contar cantidad de registros
                
$num_registros=mysql_num_rows($resultado);
                
//echo"$num_registros";
                //Comprueba existencia de resultado
                
if (mysql_num_rows($resultado))
                {
                    
//Muestra los resultados
                    
for ($i 0;$i <= mysql_num_rows($resultado)-1$i++)
                    {
                        if (!
mysql_data_seek($resultado$i))
                        {
                            echo 
"No se puede mostrar la fila ".$i.", el error es: ".mysql_error();
                            continue;
                        }
                        if (!(
$registro mysql_fetch_row($resultado)))
                        {
                            continue;
                        }
                            
//******PAGINACION*********
                    //cantidad de registros por pagina
                    
$registros=3;
                    
//numero de pagina 
                    
$pagina=$_GET["num"];
                    if (
is_numeric($pagina))
                         
$inicio=(($pagina-1)*$registros);
                    else
                        
$inicio=0;
                    
$resultado mysql_query("SELECT id_vehiculo, patente_vehiculo, marca_vehiculo, modelo_vehiculo, ano_vehiculo, descripcion_estado_vehiculo FROM vehiculo JOIN estado_vehiculo USING (id_estado_vehiculo) limit $inicio,$registros " ,$conexion);
                    
$paginas=ceil($num_registros/$registros);
                        echo 
'<tr bgcolor="#cccccc">';
                        echo 
'<td><div align="center"><form name="buscar" method="post" action="modificar_vehiculo.php"><input type="submit" value="'.$registro[0].'"><input type="hidden" name="id_vehiculo" value="'.$registro[0].'"><input type="hidden" name="enviar" value="Buscar"></form></div></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[1].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[2].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[3].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[4].'</div></label></td>';
                        echo 
'<td><label style="font-size:12px"><div align="center">'.$registro[5].'</div></label></td>';
                        echo 
'</tr>';
                    }
                }
                else
                {
                                
?>
                    </table>                    
    
                    <table width="100%" class="Estilo1" align="center">
                        <tr>
                            <td><label style="font-size:20px"><div align="center">No existen registros!</div></label></td>
                        </tr>
                    </table>        
<?php
              
//cierra else
               
}
                
?>        
   
<?php
   
                
//Imprimir numeros de paginas
            
if ($pagina>1)
                     echo 
"<a href='maestro_vehiculos.php ?num=" . ($pagina-1) ."' > Anterior</a> " ;    
                     for (
$cont=1;$cont<=$paginas;$cont++)
                       {
                         if (
$cont==$pagina)
                            echo 
$cont " " ;
                         else
                             echo 
"<a href='maestro_vehiculos.php?num=".$cont ."'>$cont</a> " ;
                       }
            if (
$pagina<$paginas)
                   echo 
"<a href='maestro_vehiculos.php ?num=" . ($pagina+1) ."'> Siguiente</a> " ;
     echo
"</table>";
?>
    
      <?php
      
 
//cierra funcion
    
}
    
?>
Alguna sugerencia?

Muchas gracias!

Última edición por Capote; 03/10/2009 a las 13:29
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 08:17.