problema codigo paginacion

Iniciado por soru13, 21 Julio 2010, 15:48 PM

0 Miembros y 4 Visitantes están viendo este tema.

soru13

hola,pues resulta que estoy intentando personalizar mi código de paginación,es este:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body><? include ("config.php");
$sql = "select * from videos order by id desc limit 25";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$url = $row['id']
?>
<?
// Datos de conexión a la base
$base="bd";
$con=mysql_connect(localhost,user,pass);
mysql_select_db($base,$con);
if (!isset($_GET['pg'])) //para el inicio
$pg = 0;
else $pg=$_GET['pg']; //cuando haces click sobre el siguiente link del paginador
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT img, nombre FROM videos  LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM videos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);





while ($registro = mysql_fetch_row($cad)){

# insertamos un salto de línea en la tabla HTML

      echo "<tr align=center height= 45px>";

      # establecemos el bucle de lectura del ARRAY
      # con los resultados de cada LINEA
      # y encerramos cada valor en etiquetas <td></td>
      # para que aparezcan en celdas distintas de la tabla

      foreach($registro  as $clave){
      echo "<div style='float: left;'><a href='videos/$url' style='border:0'>".$clave."</a></div>&nbsp;" ;


}
}

echo "<br>";

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

// Creando los enlaces de paginación
echo "<br><br><br><br><br><br><p class=fonty align='center'>";
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>";
?>
</body>
</html>


el caso es que me da un error en la linea 100,
Parse error: syntax error, unexpected $end in /home2/rapmadri/public_html/tupixxx/paginar.php  on line 100

y la linea 100 es esta:

</html>

me salta este error cuando encima del código de paginación le pongo éste para obtener la id

<? include ("config.php");
$sql = "select * from videos order by id desc limit 25";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$url = $row['id']
?>


¿porqué me sale éste error? gracias

Shell Root

Debes de mejorar la estructura de tú código. Te falta un cerrar un {. Creo que es en la siguiente linea:
Código (php-brief) [Seleccionar]
include ("config.php");
$sql = "select * from videos order by id desc limit 25";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){{
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Carluís

El mismo texto de error generado te está diciendo la respuesta.


Parse error: syntax error, unexpected $end in

+1 con el comentario de shell root.
Desarrollo Web, Blogging, Diseño: http://onsoni.blogspot.com

soru13

#3
aver lo conseguí arreglar un poquillo y ahora me muestra las imagenes y el texto,pero el problema es que carga primero todas las imagenes y luego todo el texto,yo lo que necesito es que me carge 1 imagen y debajo esté su texto correspondiente por id,y así sucesivamente,aver si me podeis ayudar,aqui os dejo el codigo tal cual lo tengo ahora:

Código (php) [Seleccionar]
<?
// Datos de conexión a la base
$base="rapmadri_graffitiongirls";
$con=mysql_connect(localhost,rapmadri_general,181302);
mysql_select_db($base,$con);
if (!isset($_GET['pg'])) //para el inicio
$pg = 0;
else $pg=$_GET['pg']; //cuando haces click sobre el siguiente link del paginador
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT img FROM videos order by id desc LIMIT $inicial,$cantidad";
$pegar2 = "SELECT nombre FROM videos order by id desc LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());
$cad2 = mysql_db_query($base,$pegar2) or die (mysql_error());

$contar = "SELECT * FROM videos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
$squery = mysql_query($pegar2);




while ($registro = mysql_fetch_row($cad)){

# insertamos un salto de línea en la tabla HTML

      echo "<table align='center' border='0' width='100%'>";
  echo "<tr align=center height= 45px><td>";

      # establecemos el bucle de lectura del ARRAY
      # con los resultados de cada LINEA
      # y encerramos cada valor en etiquetas <td></td>
      # para que aparezcan en celdas distintas de la tabla

      foreach($registro  as $clave){
      echo "<div style='float: left;'>".$clave."&nbsp&nbsp;</td></tr>" ;


}
}
while ($registro2 = mysql_fetch_row($cad2)){

# insertamos un salto de línea en la tabla HTML

 

      # establecemos el bucle de lectura del ARRAY
      # con los resultados de cada LINEA
      # y encerramos cada valor en etiquetas <td></td>
      # para que aparezcan en celdas distintas de la tabla

      foreach($registro2  as $clave2){
  echo "<tr align=center height= 45px><td>";
      echo "<div style='float: left;'>".$clave2."&nbsp&nbsp;</td></tr>" ;


}
}
echo "</table></div>";

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

// Creando los enlaces de paginación
echo "<br><br><br><br><br><br><p class=fonty align='center'>";
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>";
?>


como puedo hacer eso? gracias a todos por la ayuda  ;)

~ Yoya ~

xD, esta facir man y usa un poco la lógica...

Bueno te explico lo que pasa.

Haces esto:
Código (php) [Seleccionar]
while ($registro = mysql_fetch_row($cad)){

# insertamos un salto de línea en la tabla HTML

       echo "<table align='center' border='0' width='100%'>";
   echo "<tr align=center height= 45px><td>";

       # establecemos el bucle de lectura del ARRAY
       # con los resultados de cada LINEA
       # y encerramos cada valor en etiquetas <td></td>
       # para que aparezcan en celdas distintas de la tabla

       foreach($registro  as $clave){
       echo "<div style='float: left;'>".$clave."&nbsp&nbsp;</td></tr>" ;


}
}
while ($registro2 = mysql_fetch_row($cad2)){

# insertamos un salto de línea en la tabla HTML

   

       # establecemos el bucle de lectura del ARRAY
       # con los resultados de cada LINEA
       # y encerramos cada valor en etiquetas <td></td>
       # para que aparezcan en celdas distintas de la tabla

       foreach($registro2  as $clave2){
   echo "<tr align=center height= 45px><td>";
       echo "<div style='float: left;'>".$clave2."&nbsp&nbsp;</td></tr>" ;


}
}


Osea, en el primer while muestra la imágenes y hasta que no termine el primer bucle infinito while no pasa al otro... Osea El bucle se repite, se repite, se repite y hasta que llegue al fin y luego se termina el bucle while y luego pasa la otra parte del source...

Hasta que no termine el primer while de mostrar la imágenes no pasa al otro bucle y por lo tanto primero carga la imágenes y luego de terminar de cargar las imágenes pasa al otro bucle que es el que muestra los texto...

Ahora te explico como hacerlo para que salga una imagen y luego el texto...
Código (php) [Seleccionar]

<?php

$connect 
mysql_connect('127.0.0.1','root''passs');
mysql_select_db('lol',$connect);

$sql "Select id, nombre from lol";//Aqui lo que hago es seleccionar dos campos en vez de uno.
$result mysql_query($sql,$connect);
while (
$row mysql_fetch_assoc($result)) {
echo 
$row['id'];//Aqui muestro la id
echo $row['nombre'];//Aqui el nombre
//Luego vuelve si existe mas datos y si no hay mas ps se termina
}

?>


De esta forma sale de esta manera los datos:
Código (php) [Seleccionar]
1jesus
2edwin
3jose


Pero si lo hago de la manera que lo haces, sale asi:
Código (php) [Seleccionar]

<?php

$connect 
mysql_connect('127.0.0.1','root''pass');
mysql_select_db('lol',$connect);

$sql "Select id from lol";
$sql2 "Select nombre from lol";

$result mysql_query($sql,$connect);
$result2 mysql_query($sql2,$connect);

while (
$row mysql_fetch_assoc($result)) {
echo 
$row['id'];
}
echo 
'<br>';
while (
$row mysql_fetch_assoc($result2)) {
echo 
$row['nombre'];
}

?>


Salida
123
jesusedwinjose


Saludos! ;D
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

soru13

#5
~ Yoya ~  probé los dos códigos que me facilitaste y no es exactamente lo que quiero,aver yo tengo ya un código que me muestra el contenido bien y querría ponerle a ese código un paginador,ya que el código de paginador que puse al principio del post no consigo ponerlo bien ya que debería quedar así

y no lo consigo,el codigo de esa pagina es:

Código (php) [Seleccionar]
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" charset="utf-8"; />

</head>





<body>
<p><? include ("config.php");
$sql = "select * from videos order by id desc limit 25";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$url = $row['id']
?>
</p>
<div style="float: left;"><?php echo "<a href='videos/$url' style='border:0'>".$row['img']."</a>&nbsp;";; ?><br /><?php echo "<a href='videos/$url'>".$row['nombre']."</a>" ?></div>
<? } ?>
<div style="clear: both;">
<br>
</body>

</html>


pero no consigo ponerle el código de paginación,como sería?

el código de paginación que de momento tengo es éste

lista.php
Código (php) [Seleccionar]
<?
// Datos de conexión a la base
$base="rapmadri_graffitiongirls";
$con=mysql_connect(localhost,rapmadri_general,181302);
mysql_select_db($base,$con);
if (!isset($_GET['pg'])) //para el inicio
$pg = 0;
else $pg=$_GET['pg']; //cuando haces click sobre el siguiente link del paginador
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT img FROM videos order by id desc LIMIT $inicial,$cantidad";
$pegar2 = "SELECT nombre FROM videos order by id desc LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());
$cad2 = mysql_db_query($base,$pegar2) or die (mysql_error());

$contar = "SELECT * FROM videos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
$squery = mysql_query($pegar2);




while ($registro = mysql_fetch_row($cad)){

# insertamos un salto de línea en la tabla HTML

      echo "<table align='center' border='0' width='100%'>";
  echo "<tr align=center height= 45px><td>";

      # establecemos el bucle de lectura del ARRAY
      # con los resultados de cada LINEA
      # y encerramos cada valor en etiquetas <td></td>
      # para que aparezcan en celdas distintas de la tabla

      foreach($registro  as $clave){
      echo "<div style='float: left;'>".$clave."&nbsp&nbsp;</td></tr>" ;


}
}
while ($registro2 = mysql_fetch_row($cad2)){

# insertamos un salto de línea en la tabla HTML

 

      # establecemos el bucle de lectura del ARRAY
      # con los resultados de cada LINEA
      # y encerramos cada valor en etiquetas <td></td>
      # para que aparezcan en celdas distintas de la tabla

      foreach($registro2  as $clave2){
  echo "<tr align=center height= 45px><td>";
      echo "<div style='float: left;'>".$clave2."&nbsp&nbsp;</td></tr>" ;


}
}
echo "</table></div>";

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

// Creando los enlaces de paginación
echo "<br><br><br><br><br><br><p class=fonty align='center'>";
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>";
?>


pero no consigo incrustar en este el código de lista.php

gracias por la ayuda

~ Yoya ~

Código (php) [Seleccionar]

$contar = "SELECT * FROM videos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
$squery = mysql_query($pegar2);

No puedes hacer eso, porque estarias seleccionando todos los campos que existen para luego contarlos, osea que irian texto, img, etc... Debes seleccionar mejor el campo id (Si lo tienes) que tiene el numero de registro...

Hacer esto, crea un archivo PHP para solo maquetear el paginador, osea crearas un paginador(Sin imagenes tablas nada de eso) y cuando lo hagas se lo adaptas a tu source...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

soru13

#7
ok lo intentaré

soru13

#8
aver,ya conseguí juntar los dos códigos y me quedó esto:

pero no funciona bien el paginador,ya que si le das a siguiente no cambia

este es el code

Código (php) [Seleccionar]
<?
// Datos de conexión a la base
$base="bd";
$con=mysql_connect(localhost,user,pass);
mysql_select_db($base,$con);
if (!isset($_GET['pg'])) //para el inicio
$pg = 0;
else $pg=$_GET['pg']; //cuando haces click sobre el siguiente link del paginador
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT * FROM videos order by id desc LIMIT $inicial,$cantidad";
$pegar2 = "SELECT * FROM videos order by id desc LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());
$cad2 = mysql_db_query($base,$pegar2) or die (mysql_error());

$contar = "SELECT * FROM videos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
$squery = mysql_query($pegar2);
include ("config.php");
$sql = "select * from videos order by id desc limit 25";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$url = $row['id']
?>
</p>
<div style="float: left;">
<?php 
echo "<table width='80%' border='0'>";
echo 
"<a href='videos/$url' style='border:0'>".$row['img']."</a>&nbsp;";
echo 
"<br />";
echo 
"<tr><td align='center'><a href='videos/$url'>".$row['nombre']."</a></td></tr>" ;
echo 
"<tr><td align='center'>".$row['dur']."</td></tr>";
echo 
"</table>";
?>
</div>
<?
}
// Cerramos la conexión a la base
$con=mysql_close($con);

// Creando los enlaces de paginación
echo "<br><br><br><br><br><br><br><br><br><br><br><br><p class=fonty align='center'>";
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>";
?>

<div style="clear: both;">


porque no funciona? gracias

~ Yoya ~

Normal, porque creas el paginador pero no adapta la consulta sql con el paginador...

Ej:
Código (php) [Seleccionar]

$cantidad=4; // cantidad de resultados por página

Lo maximo pero si te fijas tienes 6 resultados, osea no usas el paginador junto a la consulta

Maquetearlo de nuevo pero crea un campo que contenga 4 registro y muestre 2 máximo por pagina, cuando lo logres ya sabrás como combinar el paginador junto a la consulta...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.