Foros del Web » Programando para Internet » PHP »

paginador sencillo no funciona ??!!

Estas en el tema de paginador sencillo no funciona ??!! en el foro de PHP en Foros del Web. Hola... he logrado localizar un sencillo paginador, pero todo y eso, no me funciona correctamente, os dejo el codigo haber si podeis ayudarme.El problema es ...

  #1 (permalink)  
Antiguo 01/09/2008, 03:56
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
paginador sencillo no funciona ??!!

Hola... he logrado localizar un sencillo paginador, pero todo y eso, no me funciona correctamente, os dejo el codigo haber si podeis ayudarme.El problema es que no me passa las fotos que quiero que se vean al paginar.al poner el raton por encima del paginador, en el acceso si me dice que ira al registro numero 1 o 2 o 3 o al numero que yo le haga click, pero si clico para paginar, no me pagina, me vuenve a cargar pa pagina ta y como estaba.

Informacion, mi base de datos consta asi:
Tabla:fotos
Campos:fotoid/nombreusuario/lugarfoto/descripcion/foto
en este ultimo campo"foto" aqui almaceno el nombre del archibo o foto que quiero que se vea o pagine. Las fotos las tengo en una carpeta remota llamada "subir-fotos-personal/diapositivas/" Y LA PAGINA SE LLAMA: diap-usuarios-provaaaa6.php

<?
// Datos de conexión a la base
$base="mibase";
$con=mysql_connect("localhost","mibase","X");
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 fotos ORDER BY fotoid LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM fotos ORDER BY fotoid";
$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']."<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='diap-usuarios-provaaaa6.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='diap-usuarios-provaaaa6.php?pg=".$i."'>".$i."</a> ";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='diap-usuarios-provaaaa6.php?pg=".$url."'>Siguiente »</a>";
}
else {
echo " ";
}
echo "</p>";
?>
  #2 (permalink)  
Antiguo 01/09/2008, 04:46
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

He modificado alguna cosa del codigo como la $pag y $cantidad si si me muestra los datos, pero me muestras en texto, yo como puedo hacer para que sea imagen ??? es decir, para vincular estos nombres de fotos a las fotos que estan en la carpeta remota "subir-fotos-personal/diapositivas/"
haciendo un:
<img src="subir-fotos-personal/diapositivas/<?php algo asi ???
o como seria ???
  #3 (permalink)  
Antiguo 01/09/2008, 05:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

en ningún momento creas el objeto imagen:

<img src="URL/<?php echo $array['foto']; ?>" ... /> ó
echo '<img src="URL/'.$array['foto'].'" ... />'; sies dentro de un bloque php.

Estás usando una plantilla de paginación, es decir, sólo se encarga de paginarte la consulta, lo que quieras mostrar de la consulta y el cómo hacerlo debes añadirlo tú.

si te fijas bien en tu código usas array['titulo'] el cual no está definidio en la tabla (fotoid/nombreusuario/lugarfoto/descripcion/foto)
  #4 (permalink)  
Antiguo 01/09/2008, 07:06
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

si, , estp es una de las cosas que he modificado anteriormente que vi estaba mal... gracias

pero....
donde debo colocar exactamente este enlace dentro del codigo php ???
al final ??? o despues de los datos de conexion a la Base de Daotso ??


<?
// Datos de conexión a la base
$base="mibase";
$con=mysql_connect("localhost","mibase","X");
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 fotos ORDER BY fotoid LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM fotos ORDER BY fotoid";
$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']."<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='diap-usuarios-provaaaa6.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='diap-usuarios-provaaaa6.php?pg=".$i."'>".$i."</a> ";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='diap-usuarios-provaaaa6.php?pg=".$url."'>Siguiente »</a>";
}
else {
echo " ";
}
echo "</p>";
echo "<img src="subir-fotos-personal/diapositivas/".$array['foto']."
?>

asi seria ???

lo he provado pero no funciona, me sale error en la linea que he creado ( echo '<img src="subir-fotos-personal/diapositivas/".$array['foto'].' )
  #5 (permalink)  
Antiguo 01/09/2008, 07:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

tienes que hacerlo aqui:

Cita:
// Imprimiendo los resultados
while($array = mysql_fetch_array($cad)) {
echo '<img src="URL/'.$array['foto'].'" ... />';
}
donde URL es el PATH precedente a la imagen
  #6 (permalink)  
Antiguo 01/09/2008, 07:27
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

lo he colocado asi,

// Imprimiendo los resultados
while($array = mysql_fetch_array($cad)) {
echo "<img src="subir-fotos-personal/diapositivas/".$array['foto']."
echo $array['foto']."<br>";
}


pero me sale error en la linea del
echo "<img src="subir-fotos-personal/diapositivas/".$array['foto']."


no entiendo porque ??!!
  #7 (permalink)  
Antiguo 01/09/2008, 07:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Lo he provando asi, pero tampoco funciona cambiando la sintaxi del codigo:

echo "<img src="subir-fotos-personal/diapositivas/"".$array['foto'].

No se que hacer ya ....
  #8 (permalink)  
Antiguo 01/09/2008, 07:45
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Lo he provado asi y tampoco:


echo '<img src="subir-fotos-personal/diapositivas/'.$array['foto'].""
  #9 (permalink)  
Antiguo 01/09/2008, 07:46
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Asi tampoco:

echo <img src="subir-fotos-personal/diapositivas/'.$array['foto']."

Estoy desesperado, no se que hacer ya...
  #10 (permalink)  
Antiguo 01/09/2008, 08:09
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: paginador sencillo no funciona ??!!

Que tal jonysi_d, paciencia para que alguien te pueda ayudar, prueba así:
Código PHP:
echo "<img src='subir-fotos-personal/diapositivas/$array[foto]'/>"
Suponiendo que la ruta a la imagen es correcta.



Saludos.
  #11 (permalink)  
Antiguo 01/09/2008, 09:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

perfecto amigo Carlojas, ahora si...ahora bien tengo otro problema con este script:
es que no me pagina los resultados, es decir, en el explorador si me dice que estoy en el "fotoid=2" pero en realidad la foto que se ve siempre el la "fotoid=1"

es decir, siempre me tiene seleccionado el "fotoid=1" o mejor dicho en

anterior 1 2 3 4 5 6 7 8 9 siguiente
aunque haga click en el numero 4 , el navegador me sale el "fotoid=4", pero en la pagina, siempre me da como seleccionado el 1

Espero haberme explicado bien..

Última edición por jonysi_d; 01/09/2008 a las 09:38
  #12 (permalink)  
Antiguo 01/09/2008, 09:46
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

He hecho alguna prueba y he visto que si modifico este valor, me sale solo el valor que introduzco:

$pg = 2; // // cantidad de resultados ( fotos) por página

si cambio el 2 por el 1 solo veo la fotoid=1 si cambio y pongo 3 me veo solo la fotoid=3
  #13 (permalink)  
Antiguo 02/09/2008, 01:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Alguna sugerencia ????
  #14 (permalink)  
Antiguo 02/09/2008, 01:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

Buenas jonysi_d,

según explicas el problema es que en el paginador siempre te marca la misma página, pero el resto esta correcto ¿no es así?¿se te sitúa en la página correcta pero el paginador no?

si es eso es por varios motivos:


$pages = intval($total_records / $cantidad); //haces $pages = intval(10/ 10) esto es 1
por eso te sale siempre el 1.

para saber el nº de páginas existentes sólo haz una pequeña consulta:

$result = mysql_query("select count(fotoid) as paginas from fotos", $conexoin);
$row= mysql_fetch_assoc($result);
if($row['paginas']%10){$nPag = $row['paginas']/10 +1;}
else {$nPag = $row['paginas']/10;}

esto te devolverá el número de páginas en $nPag que es el que debes usar en el bucle for
for($i=1; $i < $nPag+1; $i++)
  #15 (permalink)  
Antiguo 02/09/2008, 02:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

La cantidad de registros si me los detecta, porque me salen tantos numero como registros tengo, numeros me refiero a esto:
anterior 1 2 3 4 5 6 7 8 9 siguiente
  #16 (permalink)  
Antiguo 02/09/2008, 02:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

Las consultas te devuleven bien el valor??
Es decir si estas en pg=2 te salen las fotos desde la 20 a la 30??
  #17 (permalink)  
Antiguo 02/09/2008, 02:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

las fotos no puedo verlas, pero los numeros para poder seleccionarlas como te dije si,( lo del

anterior 1 2 3 4 5 6 7 8 9 siguiente )
siempre tengo seleccionado el numero 2 ( el registro o fotoid=2), porque el cogigo esta asi:

$pg = 2; // // cantidad de resultados ( fotos) por página

pero si clico en el 3 del ( anterior 1 2 3 4 5 6 7 8 9 siguiente ) sigo viendo la foto del 2 aunque en el navejador me salga:

http://www.miweb/diap-usuarios-provaaaa6.php?pg=3

Tengo un total de 22 registros, y me salen 22 numeros para paginar.
  #18 (permalink)  
Antiguo 02/09/2008, 02:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

en
if (!isset($pg))
$pg = 0; // $pg es la pagina actual

ponle llaves
if (!isset($pg)) {$pg = 0;} // $pg es la pagina actual
  #19 (permalink)  
Antiguo 02/09/2008, 03:10
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

sigue igual, sigue con el mismo problema
me pagina en el navegador, pero las fotos no me las pagina
  #20 (permalink)  
Antiguo 02/09/2008, 03:29
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

yo diria que el error esta vinculado a este apartado, lo que no se donde ¿¿¿ no crees ???

// Creando los enlaces de paginación
echo "<p>";
if ($pg <> 0)
{
$url = $pg - 1;
echo "<a href='diap-usuarios-provaaaa6.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='diap-usuarios-provaaaa6.php?pg=".$i."'>".$i."</a> ";
}
}

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



o aqui ???

// Imprimiendo los resultados
while($array = mysql_fetch_array($cad)) {
echo "<img src='subir-fotos-personal/diapositivas/$array[foto]'/>";
echo $array[[COLOR="Red"]'foto'[/COLOR]]."<br>";

Última edición por jonysi_d; 02/09/2008 a las 03:40
  #21 (permalink)  
Antiguo 02/09/2008, 03:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

haz un echo con $pg justo antes de realizar la consulta y con $pages después de inicializarla.

si las fotos no se muestran es porque algo sucede con $pg o con $pages ya que como indicas en el querystring aparece correctamente.

puede ser que tengas desbilitadas la variables globales y por lo tanto tengas que poner $_GET['pg']
  #22 (permalink)  
Antiguo 02/09/2008, 03:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

si, las globales estan deshavilitadas, eso puede producir error ???
  #23 (permalink)  
Antiguo 02/09/2008, 03:45
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

te refieres a ponerlo asi ??

$_GET['pg']$pg = 2; // $pg es la pagina actual

Lo he provado asi, pero sigue igual sin funcionar
  #24 (permalink)  
Antiguo 02/09/2008, 03:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

si están desabilitadas (cosa que es correcta) tienes que poner $pg como $_GET['pg'] ya que si no, cuando la llames la tomará como una nueva ($_GET['pg'] no es lo mismo que $pg) por lo que en la línea donde compruebas si está creada:

if (!isset($pg)) $pg = 0;

te igualará siempre a '0'. De ahí que independientemente de la página que tomes no te muestre fotos correctas ya que la query quedaría:

SELECT * FROM fotos ORDER BY fotoid LIMIT 0,10 //mostrándote siempre las primera 10 fotos

prueba a ponerlo de esa manera.
  #25 (permalink)  
Antiguo 02/09/2008, 03:52
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Lo he provado asi, pero tampoco funciona:

if (isset($_GET['pg'))]
$pg = 2; // $pg es la pagina actual
$cantidad=1; // cantidad de resultados (fotos )por página
$inicial = $pg * $cantidad;
  #26 (permalink)  
Antiguo 02/09/2008, 03:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

haz lo siguiente:

if (!isset($_GET['pg'])) $pg=0;
else $pg =$_GET['pg'];
  #27 (permalink)  
Antiguo 02/09/2008, 04:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

Amigo ilie problema solucionado
el correcto era
if (!isset($_GET['pg'])) $pg=0;
else $pg =$_GET['pg'];

Muchas gracias por toda tu ayuda....

Puedo plantearte otra pregunta del mismo script ???
  #28 (permalink)  
Antiguo 02/09/2008, 04:19
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

por que no??
  #29 (permalink)  
Antiguo 02/09/2008, 04:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: paginador sencillo no funciona ??!!

creo que es ya complicado lo que quiero preguntar, pero bueno.lo intentare:

Queria hacer lo de que envez de que me salgan todos los registros, solo me salgan 10 y despues ponga ultimo, lo expondre graficamente:

Si tengo 20 registros 8 que me salga lo siguiente:

anterior 1 2 3 4 5 6 7 8 9 siguiente ultimo

si clico en el 9, que me salga:

primero anterior 9 10 11 12 13 14 15 16 siguiente ultimo
  #30 (permalink)  
Antiguo 02/09/2008, 05:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: paginador sencillo no funciona ??!!

para ello sólo tienes que definir el inicio ($pg ya lo tienes) y la cantidad de páginas a mostrar. Tienes que tener en cuenta que puede darse el caso de que inicio + cantidad sobrepase el nº de páginas (estés en la página 18 y haya 20 ->18 +10 =28)

Por lo que mejor es hallar la primera y la última a mostrar ($pg y $nPag).

Para ello sólo tienes que calcular el nº total de páginas:

Cita:
$result = mysql_query("select count(fotoid) as paginas from fotos", $conexoin);
$row= mysql_fetch_assoc($result);
if($row['paginas']%10){$nPag = $row['paginas']/$Cantidad +1;}
else {$nPag = $row['paginas']/$cantidad;}
en $nPag tendrás el nº de páginas total

el número de páginas a mostrar lo defines tú:

Cita:
$nPgs = 10 //por ejemplo
y luego comprobar si $inicio + $nPgs > $nPag

Cita:
if(($inicio + $nPgs) > $nPag) $nPgs = $nPag;
en el bucle for:

Cita:
for($i=$pg; $i < $nPgs; $i++){...}
Ten en cuenta en "siguiente" si te encuentras en la última página

Cita:
if($pg != $nPag) {$url=$pg+1; echo "<a href='path/page.php?pg=$url'>siguiente</a>";}
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 17:25.