Foros del Web » Programando para Internet » PHP »

Organizar imagenes por categorias

Estas en el tema de Organizar imagenes por categorias en el foro de PHP en Foros del Web. buenas, soy nuevo por aquí y estoy haciendo un modulo simple para organizar proyectos que hacemos en mi web, la cosa es la siguiente, este ...
  #1 (permalink)  
Antiguo 05/12/2007, 06:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 27
Antigüedad: 17 años, 5 meses
Puntos: 1
Organizar imagenes por categorias

buenas, soy nuevo por aquí y estoy haciendo un modulo simple para organizar proyectos que hacemos en mi web, la cosa es la siguiente, este es el código de las llamadas a la db que es necesario
Código:
function pantalla_principal() {
global $db,$prefix;


include("header.php");
opentable();
include("modules/proyectos/diseño/header.html");
$result2 = $db->sql_query("SELECT id,imagen,categoria FROM ver_categorias ");

while(list($pid,$imagen,$categoria) = $db->sql_fetchrow($result2)) {
 
 

$_contenido .= '<a href="modules.php?name=proyectos&accion=ver&pid='.intval($pid).'"><img src="'.$imagen.'" height="150" width="150" hspace="5" align="center"/></a>';
}



$result = $db->sql_query("SELECT Imagen,Descripcion FROM ".$prefix."_categorias");


while(list($_imagen,$_descripcion) = $db->sql_fetchrow($result)) {

$file = "modules/proyectos/diseño/principal.html";
$file1 = implode("", file($file));
$file1 = addslashes($file1);
$file1 = "\$r_file=\"".$file1."\";";
eval($file1);
print $r_file;
 
}
include("modules/proyectos/diseño/footer.html");
closetable();
include("footer.php");

}
el problema es el siguiente, en la admin voy creando diferentes categorías y quiero que dentro de cada una se vean las imágenes que pertenecen a esta, el problema es que no se como asociar la categoría con las imágenes y por ejemplo si tengo 2 categorías llamada actuales y otra cancelados en la categoría actuales se muestran las imágenes que pertenecen a esta pero en cancelados se repite de nuevo las imágenes de la categoría actuales y salen también las imágenes de la categoría cancelados, por si lo necesitais pongo tambien el contenido del archivo principal.html
Código:
<tr>
<td colspan="3" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" align="center" bgcolor="#ffffff" height="10">&nbsp;</td>
              </tr>
              <tr bordercolor="#000000">
                <td colspan="3" bordercolorlight="#000000" bordercolordark="#000000" align="center" bgcolor="#ffffff" height="13">
                  <div align="center"><img src="$_imagen" /></div></td>
              </tr>
          
              <tr>
                <td colspan="3" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" class="Estilo1" bgcolor="#5eacfe" height="12" align="center"><p>$_descripcion</p>
                <p>&nbsp;</p></td>

              </tr>
              <tr>
                <td bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" height="12" width="550"> 
$_contenido
</td></tr><tr>
                <td colspan="3" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" height="12">
                  <div align="center"><img src="modules/proyectos/images/Untitled-3.gif" ></div></td>
              </tr>
os podría poner la url de mi web para que vieran como tengo la versión anterior del modulo porque quiero que salga = la diferencia es que las categorías las tenia que agregar a mano en el código principal en vez de hacerlo desde la admin y cada categoría era una función diferente, así que si alguien me quiere echar un cable y quiere ver mi web que lo diga y se la mando en un pm (ya que aquí no puedo ponerla :P).

Un saludo.
  #2 (permalink)  
Antiguo 05/12/2007, 07:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Organizar imagenes por categorias

Al seleccionar las imágenes de la Base de Datos usa un WHERE para decir de la categoría que las quieres.
  #3 (permalink)  
Antiguo 05/12/2007, 07:45
 
Fecha de Ingreso: noviembre-2006
Mensajes: 27
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Organizar imagenes por categorias

Eso ya lo e intentado con el mismo resultado, las imágenes de la primera categoría salen en la segunda , lo deje asi
Código:
function pantalla_principal() {
global $db,$prefix;


include("header.php");
opentable();
include("modules/proyectos/diseño/header.html");




$result = $db->sql_query("SELECT Nombre,Imagen,Descripcion FROM ".$prefix."_categorias");



while ($row2 = $db->sql_fetchrow($result)) {

$nombre= $row2['Nombre'];
$_imagen= $row2['Imagen'];
$_descripcion= $row2['Descripcion'];

$result2 = $db->sql_query("SELECT id,imagen,categoria FROM ver_categorias where categoria='$nombre'");

while(list($pid,$imagen,$categoria) = $db->sql_fetchrow($result2)) {
 
 

$_contenido .= '<a href="modules.php?name=proyectos&accion=ver&pid='.intval($pid).'"><img src="'.$imagen.'" height="150" width="150" hspace="5" align="center"/></a>';
}

$file = "modules/proyectos/diseño/principal.html";
$file1 = implode("", file($file));
$file1 = addslashes($file1);
$file1 = "\$r_file=\"".$file1."\";";
eval($file1);
print $r_file;
 
}
include("modules/proyectos/diseño/footer.html");
closetable();
include("footer.php");

}
La cosa seria hacer que identificase la categoría y que una vez muestre los resultados no se repita en la siguiente.

Un saludo


PD: e encontrado el "problema", si el contenido del archivo principal.html lo pongo junto al php funciona bien con lo cual el problema es del $contenido .= se supone que el . que se le agrega delante del = es para que se repita, hay alguna otra forma para que se repita pero que no se mezcle con la otra categoría, si el html lo pongo junto con el php cambie el $contenido .= por un echo y funciona perfecto...

Última edición por djmourino; 05/12/2007 a las 08:56
  #4 (permalink)  
Antiguo 05/12/2007, 08:54
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Organizar imagenes por categorias

Resetea el contenido en cada categoría, después de $result2 pon $_contenido = '';
  #5 (permalink)  
Antiguo 05/12/2007, 09:08
 
Fecha de Ingreso: noviembre-2006
Mensajes: 27
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Organizar imagenes por categorias

Perfectisimo ya me funciona bien, eres un genio Sanubrio, muchas gracias por tu ayuda, una ultima cosa, tu tal cual ves el código crees que me puede dar problemas ? ,me refiero en aspectos de seguridad y sobrecarga de la web por poner muchas imágenes, el código se quedaría así entonces
Código:
function pantalla_principal() {
global $db,$prefix;

include("header.php");
opentable();
include("modules/proyectos/diseño/header.html");

$result = $db->sql_query("SELECT Nombre,Imagen,Descripcion FROM ".$prefix."_categorias");

while ($row2 = $db->sql_fetchrow($result)) {

$nombre= $row2['Nombre'];
$_imagen= $row2['Imagen'];
$_descripcion= $row2['Descripcion'];

$result2 = $db->sql_query("SELECT id,imagen,categoria FROM ver_categorias where categoria='$nombre'");
$_contenido = '';
while(list($pid,$imagen,$categoria) = $db->sql_fetchrow($result2)) {
 
$_contenido .= '<a href="modules.php?name=proyectos&accion=ver&pid='.intval($pid).'"><img src="'.$imagen.'" height="150" width="150" hspace="5" align="center"/></a>';
}

$file = "modules/proyectos/diseño/principal.html";
$file1 = implode("", file($file));
$file1 = addslashes($file1);
$file1 = "\$r_file=\"".$file1."\";";
eval($file1);
print $r_file;
 
}
include("modules/proyectos/diseño/footer.html");
closetable();
include("footer.php");
}
.


Un saludo y muchas gracias, cada día se aprenden nuevas cosas gracias a usuarios como tu :P.
  #6 (permalink)  
Antiguo 05/12/2007, 09:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Organizar imagenes por categorias

En cuando a seguridad no veo problemas porque no se reciben datos del usuario para las consultas.

En cuanto a optimización, lo que haría sería seleccionar categorías, seleccionar imágenes y agruparlas, así te ahorras unas cuantas consultas.

Código PHP:
$resultado mysql_query("SELECT categorias...");
$categorias = array();
while (
$fila mysql_fetch_array($resultado))
{
    
$categorias[$fila['nombre']] = $categoria;
    
$categorias[$fila['nombre']]['imagenes'] = array();
}

$resultado mysql_query("SELECT imagenes...");
$categorias = array();
while (
$fila mysql_fetch_array($resultado))
{
    if (isset(
$categorias[$fila['categoria_nombre']]['imagenes']))
    {
        
$categorias[$fila['categoria_nombre']]['imagenes'] = $fila;
    }

Y luego al mostrarlas no incluir un archivo cada vez, puedes hacerlo tal cual o con el sistema de plantillas que uses:

Código PHP:
$plantilla_categoria '
<div>
  <strong>%s</strong>
  <p>%s</p>
  <div>
    %s
  </div>
</div>
'
;

$plantilla_imagen '
<div>
  <img src="%s" />
</div>
'
;

foreach (
$categorias as $categoria)
{
  
$imagenes '';
  foreach (
$categoria['imagenes'] as $imagen)
  {
      
$imagenes sprintf($plantilla_imagen,
        
$imagen['ruta']
      );
  }
  
    echo 
sprintf($plantilla_categoria,
      
$categoria['nombre'],
      
$categoria['description'],
      
$imagenes
    
);

Y si son muchas categorías e imágenes por categoría quizás sea más cómodo mostrar en páginas separadas las categorías con sus imágenes.
  #7 (permalink)  
Antiguo 05/12/2007, 09:34
 
Fecha de Ingreso: noviembre-2006
Mensajes: 27
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Organizar imagenes por categorias

ok, me voy a poner a investigar tu codigo porque estoy aun verde en php xD, las imagenes tengo pensado en limitarlas, osea poner por ejemplo 5 por categoría y poner un enlace que ponga "mas" para que te lleve a otra pagina con todas las imágenes.

Muchas gracias por la ayuda.


PD: mmm sigo sin entender el funcionamiento de tu código xD, me es muy complicado para mi nivel, me complico con la forma que hay en el código, por ejemplo $categorias[$fila['nombre']] = $categoria; , no tendría que ser al revés ? , osea $categoria = $categorias[xx]; ya que donde lo pones esa variable no tiene ningún valor :S.

Última edición por djmourino; 05/12/2007 a las 10:36
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:43.