Foros del Web » Programando para Internet » PHP »

problema con paginacion

Estas en el tema de problema con paginacion en el foro de PHP en Foros del Web. Hola, he conseguido este codigo de paginacion, pero me sale un error se sintaxi, haber si alguien sabe decirme donde esta: <? // Datos de ...
  #1 (permalink)  
Antiguo 27/08/2008, 04:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
problema con paginacion

Hola, he conseguido este codigo de paginacion, pero me sale un error se sintaxi, haber si alguien sabe decirme donde esta:

<?
// Datos de conexión a la base
$base="mibassededatos";
$con=mysql_connect(localhost,root,);
mysql_select_db($base,$con);

if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=10; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT * FROM tabla ORDER BY titulo LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM tabla ORDER BY titulo";
$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['titulo'].;
}

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

// Creando los enlaces de paginación
echo "<p class=fonty>";
if ($pg != 0) {
$url = $pg - 1;
echo "<a href='$PHP_SELF?pg=".$url."'>&laquo; Anterior</a>&nbsp;";
} else {
echo " ";
}
for ($i = 0; $i <= $pages; $i++) {
if ($i == $pg) {
if ($i == "0") {
echo "<b> 1 </b>";
} else {
$i = $i+1;
echo "<b> ".$i." </b>";
}
} else {
if ($i == "0") {
echo "<a href=$PHP_SELF?pg=".$i.">1</a> ";
} else {
echo "<a href='$PHP_SELF?pg=".$i."'>";
$i = $i+1;
echo $i."</a>&nbsp;";
}
}
}
if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='$PHP_SELF?pg=".$url."'>Siguiente &raquo;</a>";
} else {
echo " ";
}
echo "</p>";
?>

Si hago un visualizacion de prueva en el navegador, me sale lo siguiente:

« Anterior "; } else { echo " "; } for ($i = 0; $i <= $pages; $i++) { if ($i == $pg) { if ($i == "0") { echo " 1 "; } else { $i = $i+1; echo " ".$i." "; } } else { if ($i == "0") { echo "1 "; } else { echo ""; $i = $i+1; echo $i." "; } } } if ($pg < $pages) { $url = $pg + 1; echo "Siguiente »"; } else { echo " "; } echo "

"; ?>

Imagino que el error se sintaxi esta despues del "« Anterior " ????!!!!

Alguien sabe decirme donde esta el error ??????

Última edición por jonysi_d; 27/08/2008 a las 04:21
  #2 (permalink)  
Antiguo 27/08/2008, 04:44
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: problema con paginacion

Prueba a poner el <a href> así:

Código PHP:
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$url.">&laquo; Anterior</a>&nbsp;"
  #3 (permalink)  
Antiguo 27/08/2008, 06:52
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Sigue saliendo lo mismo.
Lo curioso es que si fuerzo algun error de conexion a la base de datos( por ejemplo poniendo como contraseña una errornea ) , no me da ningun error tampoco, me sigue saliendo igual al hacer la previsualizacion en el explorador.
He cambiado el codigo asi, sigue saliendo mal, como puedo hacerlo???:Lo que esta en negrita es lo que el compañero LEGOLTAZ me he recomendado que hiciera.
Codigo:

<?
// Datos de conexión a la base
$base = "mibasededatos";
$con = mysql_connect("localhost","root","") or die('Error mysql: '.mysql_error());
mysql_select_db($base,$con);

if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=10; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT * FROM tabla ORDER BY titulo LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM tabla ORDER BY titulo";
$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['titulo'].;
}

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

// Creando los enlaces de paginación
echo "<p class=fonty>";
if ($pg != 0) {
$url = $pg - 1;
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$url.">&laquo; Anterior</a>&nbsp;";
} else {
echo " ";
}
for ($i = 0; $i <= $pages; $i++) {
if ($i == $pg) {
if ($i == "0") {
echo "<b> 1 </b>";
} else {
$i = $i+1;
echo "<b> ".$i." </b>";
}
} else {
if ($i == "0") {
echo "<a href=$PHP_SELF?pg=".$i.">1</a> ";
} else {
echo "<a href='$PHP_SELF?pg=".$i."'>";
$i = $i+1;
echo $i."</a>&nbsp;";
}
}
}
if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='$PHP_SELF?pg=".$url."'>Siguiente &raquo;</a>";
} else {
echo " ";
}
echo "</p>";
?>

Al previsualizar en el explorador me sale asi otra vez:

« Anterior "; } else { echo " "; } for ($i = 0; $i <= $pages; $i++) { if ($i == $pg) { if ($i == "0") { echo " 1 "; } else { $i = $i+1; echo " ".$i." "; } } else { if ($i == "0") { echo "1 "; } else { echo ""; $i = $i+1; echo $i." "; } } } if ($pg < $pages) { $url = $pg + 1; echo "Siguiente »"; } else { echo " "; } echo "

"; ?>

Última edición por jonysi_d; 27/08/2008 a las 07:07
  #4 (permalink)  
Antiguo 27/08/2008, 06:57
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: problema con paginacion

Cita:
Iniciado por jonysi_d Ver Mensaje
Sigue saliendo lo mismo
Has corregido todos los <a href> como el anterior?
  #5 (permalink)  
Antiguo 27/08/2008, 07:09
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

no,
ahora voy a provar, disculpa pero mi ignorancia en programacion hace que algo tan elemental yo lo ignore.
  #6 (permalink)  
Antiguo 27/08/2008, 07:13
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Ya los he cambiado y sigue igual, el codigo me quedo asi:

<?
// Datos de conexión a la base
$base = "mibasededatos";
$con = mysql_connect("localhost","root","") or die('Error mysql: '.mysql_error());
mysql_select_db($base,$con);

if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=10; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT * FROM tabla ORDER BY titulo LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM tabla ORDER BY titulo";
$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['titulo'].;
}

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

// Creando los enlaces de paginación
echo "<p class=fonty>";
if ($pg != 0) {
$url = $pg - 1;
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$url.">&laquo; Anterior</a>&nbsp;";
} else {
echo " ";
}
for ($i = 0; $i <= $pages; $i++) {
if ($i == $pg) {
if ($i == "0") {
echo "<b> 1 </b>";
} else {
$i = $i+1;
echo "<b> ".$i." </b>";
}
} else {
if ($i == "0") {
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$i.">1</a> ";
} else {
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$i."'>";
$i = $i+1;
echo $i."</a>&nbsp;";
}
}
}
if ($pg < $pages) {
$url = $pg + 1;
echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$url.">&laquo; Anterior</a>&nbsp;";

} else {
echo " ";
}
echo "</p>";
?>

Última edición por jonysi_d; 27/08/2008 a las 07:18
  #7 (permalink)  
Antiguo 27/08/2008, 07:16
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: problema con paginacion

echo $array['titulo'].;

Ahí sobra ese punto al final, ya que no estás concatenando nada.

He copiado tal cual tu código en mi PC, y corregido esto te acabo de decir, no me dá ningún fallo.
  #8 (permalink)  
Antiguo 27/08/2008, 07:23
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

He quitado el punto"." pero sigue saliendo lo mismo al previsualizar.
  #9 (permalink)  
Antiguo 27/08/2008, 07:33
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: problema con paginacion

echo "<a href=".$_SERVER[PHP_SELF]."?pg=".$i."'>";

Ahí quítale la comilla simple que pusiste antes del >
  #10 (permalink)  
Antiguo 27/08/2008, 08:05
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

lo modifique, pero sigue igual
  #11 (permalink)  
Antiguo 27/08/2008, 08:09
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: problema con paginacion

Cita:
Iniciado por jonysi_d Ver Mensaje
lo modifique, pero sigue igual
Pero qué error te dá?
Y en qué línea?
  #12 (permalink)  
Antiguo 27/08/2008, 08:29
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

NO ME SALE NINGUN ERROR DE LINEA,
yo trabajo con dreamweaver, y con el codigo este, si previsualizo la pagina en el explorador ( explorer ) ( siempre con conexion local ) me sale lo siguiente :


« Anterior "; } else { echo " "; } for ($i = 0; $i <= $pages; $i++) { if ($i == $pg) { if ($i == "0") { echo " 1 "; } else { $i = $i+1; echo " ".$i." "; } } else { if ($i == "0") { echo "1 "; } else { echo ""; $i = $i+1; echo $i." "; } } } if ($pg < $pages) { $url = $pg + 1; echo "« Anterior "; } else { echo " "; } echo "

"; ?>

es decir, esto es lo que veo ( localmente )o veria en internet .


solo me sales estos codigos, nada mas. No se si me explico bien !!!!
  #13 (permalink)  
Antiguo 27/08/2008, 08:30
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema con paginacion

buenas!!

ten en cuenta que para confirmarlo es necesario correrlo en el servidor
hay scripts que por alguna razon tienes que correrlos para poder ver el resultado correcto

eh corrido tu codigo y funciona bien a excepcion que no me pagina realmente, me aparecen los primeros 10 pero al picar en siguiente o el numero muestra siempre los primeros 10

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #14 (permalink)  
Antiguo 27/08/2008, 08:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Lo prove en remoto y si funciona...

Gracias
  #15 (permalink)  
Antiguo 27/08/2008, 09:25
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema con paginacion

buenas...

pues... no veo el error que no pagina, solo muestra los primeros 10

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #16 (permalink)  
Antiguo 27/08/2008, 09:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Tienes razon, no pagina...
He buscado otra solucion buscando otro script de paginacion, este si me funciona en remoto, te lo posteo porque quiero modificar alguna cosilla haber si puedes aiudarme:


<?php

$base = "mi base de datos";
$con = mysql_connect("localhost","mi base de datos","contraseña") or die('Error mysql: '.mysql_error());
mysql_select_db($base,$con);

$tbl_name="fotos"; //your table name
// How many adjacent pages should be shown on each side?
$adjacents = 3;

/*
First get total number of rows in data table.
If you have a WHERE clause in your query, make sure you mirror it here.
*/
$query = "SELECT COUNT(*) as num FROM $tbl_name";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

/* Setup vars for query. */
$targetpage = "diap-usuarios-provaaaa5.php"; //your file name (the name of this file)
$limit = 2; //how many items to show per page
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit; //first item to display on this page
else
$start = 0; //if no page var is given, set start to 0

/* Get data. */
$sql = "SELECT column_name FROM $tbl_name LIMIT $start, $limit";
$result = mysql_query($sql);

/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1

/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";
//previous button
if ($page > 1)
$pagination.= "<a href=\"$targetpage?page=$prev\">« Anterior</a>";
else
$pagination.= "<span class=\"disabled\">« Anterior</span>";

//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
}

//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next\">Siguiente »</a>";
else
$pagination.= "<span class=\"disabled\">Siguiente »</span>";
$pagination.= "</div>\n";
}
?>
<?php
while($row = mysql_fetch_array($result))
{

// Your while loop here

}
?>




<?=$pagination?>

Una de las cosas que quiero modificar es que a la base de datos que está conectodo consta de la siguiente manera:

Tabla: fotos
Campos: fotoid (int/not null/autoincrement ) nombre ( varchar/not null ) usuario ( varchar/not null ) lugarfoto ( varchar/not null ) descripcion (varchar/not null ) foto ( varchar/null ).

y al ser un script copiado de la web pues los campos son completamente distintos de la base de datos a la que esta generado inicialmente el script.
La finalidad de mi script de paginacion es que se visualizen las fotos que tengo en una carpeta remota del servidor las cuales el nombre de cada una de ellas ( las fotos ) se quedan registradas en la base de datos en el campo ( foto ).
Mi pregunta primera que debo modificar del script para que vincule la paginacion con las fotos de la base de datos ???

Última edición por jonysi_d; 27/08/2008 a las 10:01
  #17 (permalink)  
Antiguo 27/08/2008, 10:08
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema con paginacion

buenas!!

lo unico que tienes que hacer es cambiar a los campos que estes utilizando para poder ajustarlos si es como dices que este script si te esta funcionando

lo estoy probando tambien pero.. aparentemente este tiene muchos errores partiendo desde la conecion a la base que esta mal definida

$con = mysql_connect("localhost","mi base de datos","contraseña") or die('Error mysql: '.mysql_error());

aqui deveria ser:

$con = mysql_connect("localhost","usuario","contraseña") or die('Error mysql: '.mysql_error());

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #18 (permalink)  
Antiguo 27/08/2008, 10:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Lo de "mi base de datos" es un texto que he puesto yo para que no se vea el nombre original de mi base de datos remota..
  #19 (permalink)  
Antiguo 27/08/2008, 10:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

$query = "SELECT COUNT(*) as num FROM $tbl_name";

SELECT COUNT(*) as num FROM ........ que dice que seleccione de la variable del query ???????

En el navejador si me pagina
www.miweb/diap-usuarios-provaaaa5.php?page=4 o 5 o 6 depende del numero que seleccione en el paginador, pero la foto no me la pagina, siempre sale la misma las del primer registro

Última edición por jonysi_d; 27/08/2008 a las 11:00
  #20 (permalink)  
Antiguo 28/08/2008, 02:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con paginacion

Alguna sugerencia ???
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 15:57.