Foros del Web » Programando para Internet » PHP »

Paginar resultado en 2 columnas

Estas en el tema de Paginar resultado en 2 columnas en el foro de PHP en Foros del Web. Este codigo te permite paginar el dos columnas pero tengo un problema, el codigo anda pero quiero que cuando no encuentre datos lo complete con ...
  #1 (permalink)  
Antiguo 19/02/2006, 18:07
 
Fecha de Ingreso: noviembre-2004
Mensajes: 35
Antigüedad: 13 años
Puntos: 1
Paginar resultado en 2 columnas

Este codigo te permite paginar el dos columnas pero tengo un problema, el codigo anda pero quiero que cuando no encuentre datos lo complete con una pequeña tabla que diga datos predefinido por mi. Si alguien puede decirme como terminarlo les agradezco.


<?php

// Este código debes de MODIFICAR: Te conectas a la Base de Datos
$hostname_connBlog = ""; // host de la base de datos
$database_connBlog = ""; // nombre de la base de datos
$username_connBlog = ""; // nombre de usuario
$password_connBlog = ""; // contraseña


$connBlog = mysql_pconnect($hostname_connBlog, $username_connBlog, $password_connBlog) or trigger_error(mysql_error(),E_USER_ERROR);
?>

<?php
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1

//Cuenta cuantas noticias existen en la consulta

mysql_select_db($database_connBlog, $connBlog);
$consulta_hot = ("SELECT COUNT(*) FROM tabla1,tabla2,tabla3 WHERE tabla.zona_id = tabla2.zona_id AND tabla2.id_pais = tabla3.id_pais ORDER BY nombre ASC");
$consulta_reg = mysql_query($consulta_hot, $connBlog) or die(mysql_error());

list($total) = mysql_fetch_row($consulta_reg);
$tampag = 12; (es la cantidad de consultas que se presenta por pagina)
$reg1 = ($pag-1) * $tampag;

mysql_select_db($database_connBlog, $connBlog);
$query_hot = "SELECT * FROM tabla1,tabla2,tabla3 WHERE tabla.zona_id = tabla2.zona_id AND tabla2.id_pais = tabla3.id_pais ORDER BY nombre ASC LIMIT $reg1, $tampag";
$reg = mysql_query($query_hoteles, $connBlog) or die(mysql_error());

if (mysql_num_rows($reg)){ ?>

<?php
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;

if ($actual>1)
$texto = "&nbsp;<a href=\"$enlace$anterior\"><img src='/Images/atras_on.gif' border=0 /></a>&nbsp; Pagina: ";
else
$texto = "&nbsp;<img src='/Images/atras_off.gif' border=0 />&nbsp; Pagina: ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if ($actual<$total_paginas)
$texto .= "&nbsp;<a href=\"$enlace$posterior\"><img src='/Images/siguiente_on.gif' border=0 /></a>";
else
$texto .= "&nbsp;<img src='/Images/siguiente_off.gif' border=0 />";
return $texto;
}

echo paginar($pag, $total, $tampag, "index.php?pag=");
?>

<?php $counter = 0;
while ($row = @mysql_fetch_array($reg)) {
if ($counter != 2) (se cambia por la cantidad de columnas que quiera mostrar)
{
echo "<td width=298 height=98 valign=middle>
<TABLE width=298 cellPadding=3 cellSpacing=1 bgColor=#cccccc class=bodytext>
<!--DWLayoutTable-->
<TBODY>
<TR>
<TD width=298 height=15 align=left valign=top bgColor=#418aa6 class=bodytext>
<div align=left><font color=#FFFFFF><STRONG>".$row['nombre']."</STRONG></font></div></TD>
</TR>
<TR>
<TD height=65 align=middle vAlign=top bgColor=#eaf4ff >
<DIV align=left><IMG height=44 alt='".$row['nombre']."' src='Hotel/".$row['logo']."' width=80 align=left border=1>
<span class=hotel><STRONG>&nbsp;".$row['direccion']."</STRONG><BR>
&nbsp;".$row['ciudad']." - ".$row['zona']." <br>
&nbsp;Te.: ".$row['telefono']."</span></DIV></TD>
</TR></TBODY>
</TABLE></td>"; //aqui se ve el id, tu agrega mas campos
$counter++;
?>
<?php }
if ($counter == 2) (no olvidar cambiar aca tambien)
{echo "</tr>"; $counter = 0;}
}
}
else
echo "¡ No se ha encontrado ningún registro !"; ?>
  #2 (permalink)  
Antiguo 21/02/2006, 10:33
 
Fecha de Ingreso: noviembre-2004
Mensajes: 35
Antigüedad: 13 años
Puntos: 1
Nadie me puede ayudar con esto. Gracias
  #3 (permalink)  
Antiguo 21/02/2006, 11:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Has visto ya esta FAQ:?

http://www.forosdelweb.com/showthrea...669#post240669

Un saludo,
  #4 (permalink)  
Antiguo 21/02/2006, 14:16
 
Fecha de Ingreso: noviembre-2004
Mensajes: 35
Antigüedad: 13 años
Puntos: 1
Gracias por responder y es lo que buscaba pero se me crea un problema. Pagina bien pero cuando lee los resgitro no me publica el Id "1" empieza por el "2" de la base de datos y al final me publica la imagen fija que prediseñe, es decir que no me pone el id "13" de la base. tal parece que cuando saque el termino $rows=mysql_num_rows($result) y lo cambie por el $row = mysql_fetch_array($reg).

si me podes decir por que

Este es la coneccion:
Código PHP:
<?php
// Este código debes de MODIFICAR: Te conectas a la Base de Datos
$hostname_connBlog "";         // host de la base de datos
$database_connBlog "";         // nombre de la base de datos
$username_connBlog "";         // nombre de usuario
$password_connBlog "";         // contraseña
///////////////////////////////////////////////////////////////////////////////
$connBlog mysql_pconnect($hostname_connBlog$username_connBlog$password_connBlog) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

<?php
if (!isset($pag)) $pag 1// Por defecto, pagina 1
//Cuenta cuantas noticias existen en la consulta
mysql_select_db($database_connBlog$connBlog);
$consulta_ho = ("SELECT COUNT(*) FROM tabla,tabla1,tabla2 WHERE tabla.zona_id = tabla1.id_zona AND tabla2.pais = tabla3.id_pais ORDER BY nombre ASC");
$consulta_reg mysql_query($consulta_ho$connBlog) or die(mysql_error());

list(
$total) = mysql_fetch_row($consulta_reg);
$tampag 12;
$reg1 = ($pag-1) * $tampag;
///////////////////////////////////////////////////////////////////
mysql_select_db($database_connBlog$connBlog);
$query_ho "SELECT * FROM tabla,tabla1,tabla2 WHERE tabla.zona_id = tabla1.id_zona AND tabla2.pais = tabla3.id_pais  ORDER BY nombre ASC LIMIT $reg1, $tampag";
$reg mysql_query($query_ho$connBlog) or die(mysql_error());

if (
mysql_num_rows($reg)){ ?>
Este es el paginador:
Código PHP:
<?php 
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual$total$por_pagina$enlace) {
$total_paginas ceil($total/$por_pagina);
$anterior $actual 1;
$posterior $actual 1;

if (
$actual>1)
$texto "&nbsp;<a href=\"$enlace$anterior\"><img src='/Images/atras_on.gif' border=0 /></a>&nbsp; Pagina: ";
else
$texto "&nbsp;<img src='/Images/atras_off.gif' border=0 />&nbsp; Pagina: ";
for (
$i=1$i<$actual$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for (
$i=$actual+1$i<=$total_paginas$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if (
$actual<$total_paginas)
$texto .= "&nbsp;<a href=\"$enlace$posterior\"><img src='/Images/siguiente_on.gif' border=0 /></a>";
else
$texto .= "&nbsp;<img src='/Images/siguiente_off.gif' border=0 />";
return 
$texto;
}

echo 
paginar($pag$total$tampag"index2.php?pag=");
?>
Este es el codigo para publicar:
Código PHP:
<?php 

$columnes 
2# Número de columnas (variable) 

if (($row mysql_fetch_array($reg))==0) { 
  echo 
"<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> "
} else { 
  echo 
"<tr><td colspan=$columnes>".$row['id']." Resultados </td></tr>";  


for (
$i=1$row mysql_fetch_array($reg); $i++) { 
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos 
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr> 
    
echo "<td width=298 height=98 valign=middle>
        <TABLE width=298 cellPadding=3 cellSpacing=1 bgColor=#cccccc class=bodytext>
  <!--DWLayoutTable-->
  <TBODY>
    <TR>
      <TD width=298 height=15 align=left valign=top bgColor=#418aa6 class=bodytext>
        <div align=left><font color=#FFFFFF><STRONG>"
.$row['nombre']."</STRONG></font></div></TD>
        </TR>
    <TR>
      <TD height=65 align=middle vAlign=top bgColor=#eaf4ff >
        <DIV align=left><IMG height=44 alt='"
.$row['nombre']."' src='Hotel/".$row['logo']."' width=80 align=left border=1>
        <span class=hotel><STRONG>&nbsp;"
.$row['direccion']."</STRONG><BR>
        &nbsp;"
.$row['ciudad']." - ".$row['zona']." <br>
        &nbsp;Te.: "
.$row['telefono']."</span></DIV></TD>
        </TR></TBODY>
</TABLE></td>"
;  
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr> 

if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos 
$ajust $columnes $resto# Número de huecos necesarios 
for ($j 0$j $ajust$j++) {echo "<td width=298 height=98 valign=middle>
        <TABLE width=298 cellPadding=3 cellSpacing=1 bgColor=#cccccc class=bodytext>
  <!--DWLayoutTable-->
  <TBODY>
    <TR>
      <TD width=298 height=15 align=left valign=top bgColor=#418aa6 class=bodytext>
        <div align=left><font color=#FFFFFF><STRONG>Publica</STRONG></font></div></TD>
        </TR>
    <TR>
      <TD height=65 align=middle vAlign=top bgColor=#eaf4ff >
        <DIV align=left><IMG height=44 src='publica.gif' width=80 align=left border=1>
        <span class=hotel><STRONG>&nbsp;Publica<br>
        Contactate con nosotros. </STRONG></span></DIV></TD>
        </TR></TBODY>
</TABLE></td>"
;} 
echo 
"</tr>"# Cerramos la última línea </tr> 

}

?>
  #5 (permalink)  
Antiguo 23/02/2006, 09:34
 
Fecha de Ingreso: noviembre-2004
Mensajes: 35
Antigüedad: 13 años
Puntos: 1
alguna ayuda con el ultimo mensaje. gracias
  #6 (permalink)  
Antiguo 23/02/2006, 12:24
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Te toma desde el segundo valor porque al principio haces
if(row = mysql_fetch_array($reg))...

Con eso te "comes" el primer resultado y la siguiente vez que lo usas ya toma el segundo valor.

Pregunta: ¿Tienes idea de lo que hace tu código línea a línea?¿Lo escribiste tú?
  #7 (permalink)  
Antiguo 23/02/2006, 15:00
 
Fecha de Ingreso: noviembre-2004
Mensajes: 35
Antigüedad: 13 años
Puntos: 1
Perdon por joder pero ya me di cuenta donde esta el error. Gracias jpinedo la correcion es la siguiente:

Código PHP:
if (($rows=mysql_num_rows($reg))==0) { 
  echo 
"<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> "
} else { 
  echo 
"<tr><td colspan=$columnes>".$row['id']." Resultados </td></tr>";  


for (
$i=1$row mysql_fetch_array($reg); $i++) { 
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos 
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr> 
  #8 (permalink)  
Antiguo 23/02/2006, 15:36
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
jpinedo con tu script se puede?

hola jpinedo con tu script se puede hacer que el resultado lo puedas poner en mas columnas?

saludos

muy bueno tu script de echo lo uso en el tagboard de mi web
__________________
DJJJ
  #9 (permalink)  
Antiguo 23/02/2006, 16:03
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Hola DJJJ:

El tema de mostrar los resultados no es tarea de Paginator.

Paginator te devuelve la cantidad de registros que se mostrarán en la página actual. Pero depende de tí el cómo los vas a mostrar (en línea, en columnas, en una tabla, en una lista, etc..).

Si quieres mostrarlos en una tabla de dos columnas (o más) usa una rutina como la que está en la FAQ que cita Cluster.

Saludos
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 16:13.