Foros del Web » Programando para Internet » PHP »

PHP OO Array ordenado

Estas en el tema de Array ordenado en el foro de PHP en Foros del Web. Hola a todos, he creado una galería de imágenes haciendo un array que divide por columnas y he usado el paginator para que me muestre ...
  #1 (permalink)  
Antiguo 02/02/2011, 18:32
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años, 6 meses
Puntos: 11
Array ordenado

Hola a todos, he creado una galería de imágenes haciendo un array que divide por columnas y he usado el paginator para que me muestre los resultados repartiéndolos entre varias páginas.

Ahora el dilema que tengo.

La tabla de la bd, llamada galeria tiene los siguientes campos:

id_foto (autoincrement). nombre (varchar), categoria (varchar), foto (varchar, esta es la ruta a la imagen), descripcion (blob) y fecha (datetime)

Pues bien, creé la tabla desde un principio con el campo categoria, ya con intención de hacer ésto que os comento.

Imaginaos que tengo 10 imágenes subidas, 5 de ellas tienen en el campo categoria: categoria1; y las otras 5: categoria2; ¿De qué forma puedo tomar como referencia ese valor para que divida el array según lo indicado en ese campo?

No sé si me he expresado bien, y tampoco sé si se puede hacer, ya que siempre que he visto casos similares, han creado otra tabla aparte y la asociaban a la de las imágenes, lo cual me parece un lio de 3 pares de... narices.

Esa es la cuestión ^^

Un saludo y gracias.
  #2 (permalink)  
Antiguo 02/02/2011, 18:33
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Array ordenado

Por cierto, este es el array:

Código PHP:
<?php 

//conectamos a la base
 
$connect=mysql_connect("LOCALHOST","USUARIO","CLAVE");
 
//Seleccionamos la base
 
mysql_select_db("BD",$connect);

// armamos la consulta 
$_pagi_sql "SELECT * FROM galeria ORDER BY id_foto DESC"

//cantidad de resultados por página (opcional, por defecto 20) 
$_pagi_cuantos 16

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente 
include("./paginador.inc.php"); 
  

//Incluimos la barra de navegación 
echo '<div class="NewsItem">
                    <h2 class="NewsTitle"><font size="5">GALERIA</font></h2><br><br>
<table id="galeria" border = "0" cellpadding="0" cellspacing = "2">'


  
          
        
$columnes 4# Número de columnas (variable). si quieres que se muestre 8 columnas,  
                       # lo modificas por el numero de colunas que quieres mostrar.  
              
                
for ($i=1$row mysql_fetch_array($_pagi_result); $i++) {  
                    
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos   
                        
if ($resto == 1) {  
                          
    
?>  
<tr>  
      <?php          
                        
# Si es la primera celda, abrimos <tr>   
      
?>  
      <td>  
        <table border="0" cellpadding="0" cellspacing="0">  
          <tr>  
            <td>  
              <div align="center"> 
                    <?php echo "<td align=\"left\"><b>".$row['nombre']."</b><br><a href=\"verfoto.php?id_romero=".$row['id_foto']."\"><img src=\"".$row['foto']."\" width=\"115\" border=\"0\" alt=\"".$row['nombre']."\" /></a><br>".$row['descripcion']."</td>"?>                   
              </div>              
            </td>  
          </tr>   
        </table>            
      </td>  
      <?php        if ($resto == 0) {    ?>  
  </tr>  
    <?php            # 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 2$j $ajust$j++) {      
    
?>  
    <tr>  
      <td>&nbsp;</td>  
      <?php                    }             ?></tr><?php  
                    
# Cerramos la última línea  
                      

                                              
    
?></table><? echo' <div align="center" id=\"paginacion\"><p>'.$_pagi_navegacion.'</p></div></div>'?>
  #3 (permalink)  
Antiguo 02/02/2011, 18:44
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Array ordenado

Aclaro con imágenes lo que tengo y lo que quiero hacer:

Esto es lo que tengo, pero está desordenado, salvo que está por orden de fecha, pero nada más.

[URL="http://img7.imageshack.us/i/galeriafi.jpg"]http://img7.imageshack.us/i/galeriafi.jpg[/URL]

Y ésto es lo que quiero conseguir, a ver si alguien me ilumina de alguna forma:

[URL="http://img585.imageshack.us/i/galeria2.jpg"]http://img585.imageshack.us/i/galeria2.jpg[/URL]

Un saludo
  #4 (permalink)  
Antiguo 02/02/2011, 18:59
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Array ordenado

También se me ha ocurrido que se puede crear un array, el cual agrupe las imagenes cuya celda categoria tenga un valor específico.

De esta forma, puedo crear hacer varios archivos .php con un array que seleccione un valor distinto en el mismo campo y recopile exclusivamente las entradas que tengan esos valores.

Un saludo
  #5 (permalink)  
Antiguo 02/02/2011, 20:37
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Array ordenado

Creo haber encontrado la solución.

En el SELECT, uso una búsqueda concreta y me limito a mostrar los resultados... lo cierto es que parece muy simple pero no se me había pasado por la cabeza antes ^^.

Código PHP:
$_pagi_sql "SELECT * FROM galeria WHERE categoria LIKE 'CATEGORIA A MOSTRAR' ORDER BY id_foto DESC"
¿Qué os parece?

Me parece una opción de crear categorías para las imágenes bastante simple y jugando con 1 sola tabla.

Si le sirve a alguien perfecto ;), por hoy aporté mi granito de arena.

Etiquetas: ordenado
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 11:07.