Foros del Web » Programando para Internet » PHP »

resuelto un problema, ahora tengo otro.

Estas en el tema de resuelto un problema, ahora tengo otro. en el foro de PHP en Foros del Web. bueno, pues poco a poco y rompiendome la cabeza, y con la ayuda de vosotros, voy resolviendo problemas. el problema que tenía era que quería ...
  #1 (permalink)  
Antiguo 18/10/2006, 09:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 91
Antigüedad: 17 años, 8 meses
Puntos: 0
resuelto un problema, ahora tengo otro.

bueno, pues poco a poco y rompiendome la cabeza, y con la ayuda de vosotros, voy resolviendo problemas.
el problema que tenía era que quería paginar por columnas, es decir, que los resultados me los diera en columnas y a su vez, me paginara. bien. esto lo he conseguido. os dejo el código pues seguro que a más de una (o uno) le vendrá bien:

conectamos con la base de datos:

****************
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("basededatos", $link);
*************
///////decimos los resultados que queremos por página:
***********
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$result = mysql_query("SELECT COUNT(*) FROM tabla", $link);
list($total) = mysql_fetch_row($result);
$tampag = 3;
$reg1 = ($pag-1) * $tampag;
******************
///////hacemos la consulta y mostramos los resultados
**********************
$result = mysql_query("SELECT * FROM galeria LIMIT $reg1, $tampag", $link);
if (mysql_num_rows($result)){
echo "<table border = '1'> \n";
while ($row = @mysql_fetch_array($result)) {
echo "<tr><td>".$row["titulo"].
"<BR> <img alt=".$row["titulo"]." src=".$row['imagen']." width=150 height=80></td></tr> \n";
}
echo "</table> \n";
}
else
echo "¡ No se ha encontrado ningún registro !";
*******************
///////por último, metemos la función paginar
*******************
/************************************************** ****/
/* 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 = "<a href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto = "<b>&laquo;</b> ";
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 .= "<a href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return $texto;
}

echo paginar($pag, $total, $tampag, "prueba.php?pag=");
************

bien. como digo, esto lo que hace es que muestra los resultados en columnas y como le he dicho que me muestre 3, pues cuando si yo tengo 6 imágenes en la base de datos, me aparece la paginación, con un enlace a la página dos para mostrar las otras 3 imágenes.
el tema está en que yo quiero que me aparezcan dos columnas en lugar de una. es decir, suponiendo que yo le diga que me muestre 3 y yo tenga 9 imágenes, me aparezcan en la página 1 dos columnas con tres imágenes cada una y las otras tres que quedan las mande a la página dos. no sé si me he explicado. por favor, a ver si ahora podéis ayudarme. cluster, anda, échame un cablecito. te lo agradecería...
  #2 (permalink)  
Antiguo 18/10/2006, 10:10
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Saludos,

Si te entiendo, para eso existen diversas vias tratare de explicarte una que te sea util siempre.

Comenzemos anidando las imagenes que mostraras con sus detalles y titulos dentro de una tabla.

Te explico que deseo hacer:
1- Creas un tabla antes de recorrer los rows con el while:
<table>
<tr><td>
while aqui
</td></tr>
</table>
Esta tabla tendra una medida fija puedes ponerle la que desees ya que dentro del td meteremos varias tablas cada una con 1 imagen y nos encargaremos de alinear las tablas para que se muestren 2 o 3 por linea.

2- Trabajaremos dentro del while para crear una tabla por imagen
while(){
<table>
<tr><td>
$row["titulo"]<br>
$row["imagen"]
</td></tr>
<table>
}

si lo haces asi te dara 1 imagen por linea para poder que muestre mas se debe jugar un poco con el atributo align="left" de la tabla y controlaremos la cantidad de tablas por linea por medio de una variable que se sume 1, podria verse algo asi:

$i = 0;
while(){

if($i==2){
$align = "";
$i = 0;
}
else{
$align = "align='left'";
}

<table $align>
<tr><td>
$row["titulo"]<br>
$row["imagen"]
</td></tr>
<table>

i++;
}

de esta forma te mostrara 2 por linea, es una filosofia existen vias de controlar los td que se muestren.

Cualquier fallo a ese codigo de ejemplo seria minimo, pero no es para que hagas copy and paste, es para que entiendas la via que uso y la puedas usar siempre que necesites hacer algo similar.

Saludos,
Marco
  #3 (permalink)  
Antiguo 18/10/2006, 10:22
 
Fecha de Ingreso: agosto-2006
Mensajes: 91
Antigüedad: 17 años, 8 meses
Puntos: 0
ante todo, gracias por tu rápida respuesta. voy a estudiar la solución que me planteas y ya te contaré. saludos y gracias....

una que ya está menos desesperada por encontrar solución...
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:27.