Foros del Web » Programando para Internet » PHP »

Recursividad?

Estas en el tema de Recursividad? en el foro de PHP en Foros del Web. Hola, estoy intentando hacer con Php una página en la que se muestre una descripción sobre una foto y al pinchar sobre ella se abra ...
  #1 (permalink)  
Antiguo 30/01/2012, 10:53
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Pregunta Recursividad?

Hola, estoy intentando hacer con Php una página en la que se muestre una descripción sobre una foto y al pinchar sobre ella se abra un lightview con fotos relacionadas. El caso es que debo subir las fotos y las descripciones y mostrar en forma de lista la descripción y al lado la foto donde pinchar y a medida que añada más descripciones y fotos se vayan poniendo debajo con la forma antes comentada
descripción-->foto
descripción-->foto
descripción-->foto
y así sucesivamente, tenuendo en cuenta lo dicho de que al pinchar en la foto seabra el lightview. ¿Podéis ayudarme?. Gracias de antemano. Saludos.
  #2 (permalink)  
Antiguo 30/01/2012, 10:59
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: Recursividad?

Lo que precisas es hacer una query y meterlo dentro de un bluce while luego con html encierras la imagen dentro una etiqueta <a href=""> es todo

;)
  #3 (permalink)  
Antiguo 30/01/2012, 23:40
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Pregunta Respuesta: Recursividad?

Gracias pero, ¿No habría otra forma de hacerlo sin MySQL?, es decir, ir subiendo las carpetas al servidor con las imágenes y el txt de la descripción y luego capturar el txt y ponerlo en una línea y, por otro lado, capturar la primera foto y ponerla al lado del texto, para que al pinchar sobre ella se abra el lightview.
Yo había pensado en una tabla que se crease de forma dinámica en PHP, con la descripción en la izquierda y la imagen a la derecha, en fin, espero que me podáis ayudar, os lo agradecería. Gracias. Saludos
  #4 (permalink)  
Antiguo 31/01/2012, 06:05
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: Recursividad?

si claro consulta fopen en el manual de php
  #5 (permalink)  
Antiguo 31/01/2012, 06:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Recursividad?

no es necesario usar fopen, con usar solamente file_get_contents logras el mismo cometido con menos lineas y complejidad, o incluso mejor, con un XML y simplexml...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 31/01/2012, 09:09
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Recursividad?

Ja me ganaron a hacer el comentario. La forma mas sencilla y facil es hacerlo con un xml. De esa manera se puede ir aumentando a medida que se suban mas carpetas y registros.

Me llamo la atención el titulo de recursividad, creo que no refleja para nada lo preguntado.
__________________
Blog de humor http://elcuasatar.net63.net/
  #7 (permalink)  
Antiguo 31/01/2012, 12:17
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Exclamación Respuesta: Recursividad?

Gracias por los comentarios, en primer lugar decir que lo de recursividad? es porque me dijeron que tendría que hacer una función recursiva, ¡¡Error!! por lo que me contáis. En segundo lugar, no sé cómo hacer el Xml para que haga eso, no tengo ni idea de Xml. ¿Me podéis echar una mano, por favor?, os lo agradecería enormemente. Gracias por vuestra ayuda. Espero vuestra respuesta.
  #8 (permalink)  
Antiguo 31/01/2012, 13:11
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Recursividad?

Bueno para no entrar en detalles largos el xml es un lenguaje de etiquetado extensible que se parece al html solo en su apariencia. La idea es que uno puede elegir el nombre de las etiquetas e introducirle en ella los valores deseados (en este caso las descripciones de las fotos y me imagino que las rutas de los mismos).

http://www.w3schools.com/xml/

En este manual te explican en mayor detalle en que consiste el xml. Una vez que lo entiendas lo que debes hacer es crear un archivo xml e irle añadiendo los atributos que necesites cada vez que se sube una nueva foto.

Una vez tengas claro el concepto te recomiendo que hagas esta lectura

http://www.microplagio.com/articulos...s-xml-con-php/

Es bueno que mires el manual de php para saber el uso de simple_xml, con esta utilidad se pueden crear facilmente xml, añadir atributos y leer los ficheros.
__________________
Blog de humor http://elcuasatar.net63.net/
  #9 (permalink)  
Antiguo 01/02/2012, 00:21
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Exclamación Respuesta: Recursividad?

Perdonad mi ignorancia pero por lo poco que he leído, tú construyes la galería de la forma:
<galeria>fotos1
<foto>nombre.jpg</foto>
<foto>...</foto>
</galeria>
Es más o menos lo que creo entender, pero ¿Cómo genero dinámicamente la galería al agregar una carpeta al directorio y después, como muestro esa galería de la forma:
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
...
y al pinchar en la foto abrir un lightview con el resto de fotografías de la carpeta.
cada vez estoy más confuso/desorientado. Podéis aclararme el tema. Gracias.
  #10 (permalink)  
Antiguo 01/02/2012, 10:23
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Recursividad?

Pues que te genera duda? Veo que no has entendido bien el concepto de xml. El xml basico podria ser:
<galeria>
<imagen>
<descripcion>aqui va descripcion1</descripcion>
<url>direccion imagen 1</url>
</imagen>
<imagen>
<descripcion>aqui va descripcion2</descripcion>
<url>direccion imagen 2</url>
</imagen>
<imagen>
<descripcion>aqui va descripcion3</descripcion>
<url>direccion imagen 3</url>
</imagen>
etc
</galeria>

Entonces lo que se debe hacer es buscar por cada etiqueta imagen la lectura de la url de la imagen y la descripción.

Un sistema muy sencillo es crear un formulario donde se recoja la dirección de la imagen y la descripción. Una vez los validas lo debes insertar en un xml y ya esta eso es todo.

Cita:
Es más o menos lo que creo entender, pero ¿Cómo genero dinámicamente la galería al agregar una carpeta al directorio y después, como muestro esa galería de la forma:
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
descripción(txt incluido en la carpeta) foto
...
y al pinchar en la foto abrir un lightview con el resto de fotografías de la carpeta.
cada vez estoy más confuso/desorientado. Podéis aclararme el tema. Gracias
Con xml no es necesario crear ningun .txt La descripción va dentro de la misma etiqueta tal y como lo ves en el ejemplo que puse.

Estas tratando de abarcar demasiado sin tener clara las cosas. Estas tratando de mezclar jquery sin tener siquiera claro como usar los xml. Roma no se hizo en un solo día. Por favor colocanos el codigo que hasta el momento has implementado y a partir de ahí se te puede colaborar mas. Veo que aun estas muy crudo pero si se ven avances en el codigo es mas facil colaborarte.
__________________
Blog de humor http://elcuasatar.net63.net/
  #11 (permalink)  
Antiguo 02/02/2012, 00:09
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Pregunta Respuesta: Recursividad?

Veo:
<galeria>
<imagen>
<descripcion>aqui va descripcion1</descripcion>
<url>direccion imagen 1</url>
</imagen>
etc
</galeria>
donde pone <descripcion>aqui va descripcion1</descripcion> podría ser:
<url>archivo txt</url>, además si añado una carpeta nueva al servidor, ¿Cómo hago para que me la añada, haciendo un while hasta que hayan carpetas?.
El caso es que necesito que haya un txt incluido en el archivo de imágenes ya que ese txt describe a las imágenes; por cada carpeta de imágenes, un txt descriptor.

Última edición por solilopi; 02/02/2012 a las 00:12 Razón: seguir escribiendo
  #12 (permalink)  
Antiguo 02/02/2012, 00:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Recursividad?

Puedes crear un script que genere el xml cuando agregues una nueva carpeta con sus imagenes y sus archivos txt, con lo cual solo necesitas ejecutarlo una sola vez, y ya que este creado llamarlo y trabajar con el dom facilmente...
Código PHP:
Ver original
  1. <?php
  2. function getInfo($file,$type) {
  3.     $info = explode('.',$file);
  4.     if ($type=='name') {
  5.         return $info[0];
  6.     }else {
  7.         return $info[1];
  8.     }
  9. }
  10.  
  11. $path = 'url/a/la/carpeta';
  12. $dom = new DOMDocument('1.0', 'utf-8');
  13. $galerias = $dom->createElement('galerias');
  14. if ($openPath = opendir($path)) {
  15.     while($file = readdir($openPath)) {
  16.         if ($file != '.' && $file != '..') {
  17.            
  18.             if (getInfo($file,'type') == 'jpg') {
  19.                 $galeria = $dom->createElement('item');
  20.                 $name = getName($file);
  21.  
  22.  
  23.                 $imagen = $dom->createElement('imagen',$file);
  24.  
  25.                 $urlTxt = $path.'/'.getInfo($file,'name').'.txt';
  26.                 if (file_exists($urlTxt)) {
  27.                     $content = file_get_contents($urlTxt);
  28.                     $descript = $dom->createElement('decript',$content);
  29.                 }else {
  30.                     $descript = $dom->createElement('decript','not found');
  31.                 }
  32.                
  33.                 $galeria->appendChild($imagen);
  34.                 $galeria->appendChild($descript);
  35.                 $galerias->appendChild($galeria);
  36.             }
  37.            
  38.         }
  39.     }
  40. }
  41. close
  42.  
  43. $dom->appendChild($galerias);
  44. $dom->save('galerias.xml');

La forma en que funciona es que tanto la imagen como el txt deben tener el mismo nombre y estar en la misma carpeta, obviamente también debes indicar el url de la carpeta a leer y el nombre que tendra el xml
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 02/02/2012, 23:43
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Recursividad?

Gracias por tu código, pero ¿podrías explicármelo?, ¿qué es exactamente lo que hace y cuando y donde lo hace?.
Te lo agradecería mucho, para así, a parte de entenderlo poder aplicarlo sabiendo lo que hago.
Repito, muchisimas gracias por tu código.
  #14 (permalink)  
Antiguo 03/02/2012, 00:05
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Recursividad?

Cualquier duda es mejor recurrir al manual de PHP para saber con exactitud que hace cada función...

Código PHP:
Ver original
  1. <?php
  2. //Obtiene la información del archivo (nombre y extensión)
  3. function getInfo($file,$type) {
  4.     //separamos el nombre del archivo por el punto
  5.     $info = explode('.',$file);
  6.     if ($type=='name') {
  7.         //retornamos el nombre
  8.         return $info[0];
  9.     }else {
  10.         //retornamos la extensión
  11.         return $info[1];
  12.     }
  13. }
  14.  
  15. //definimos el url de la carpeta que vamos a leer el archivo
  16. $path = 'prueba3';
  17. //creamos el objeto dom que generará el XML
  18. $dom = new DOMDocument('1.0', 'utf-8');
  19.  
  20. //creamos un primer elemento 'galerias' que guardara a su vez todos
  21. //los demas elementos que compondran el xml
  22. $galerias = $dom->createElement('galerias');
  23.  
  24. //verificamos si podemos abrir la carpeta para poder leer su contenido
  25. if ($openPath = opendir($path)) {
  26.     //recorremos los archivos que contiene la carpeta padre
  27.     while($file = readdir($openPath)) {
  28.         //verificamos que el valor retornado es realmente un valor
  29.         if ($file != '.' && $file != '..') {
  30.             //como tendremos archivos de diferente tipo (jpg y txt)
  31.             //vamos a leer unicamente los jpg para no duplicar info
  32.             if (getInfo($file,'type') == 'jpg') {
  33.                 //creamos un elemento en el dom del xml 'item'
  34.                 //para guardar la imagen y su descripción
  35.                 $galeria = $dom->createElement('item');
  36.  
  37.                 //Obtenemos el nombre del archivo
  38.                 $name = getInfo($file,'name');
  39.                
  40.                 //creamos el elemento en el dom del xml para
  41.                 //guardar el nombre completo de la imagen
  42.                 $imagen = $dom->createElement('imagen',$file);
  43.                
  44.                 //creamos el url del archivo txt que contiene la decripción
  45.                 //cabe aclarar que tiene que tener el mismo nombre que la imagen
  46.                 //que tendrá su descripción
  47.                 $urlTxt = $path.'/'.getInfo($file,'name').'.txt';
  48.                
  49.                 //veriicamos la existencia del archivo
  50.                 if (file_exists($urlTxt)) {
  51.                     //obtenemos el contenido del archivo txt
  52.                     $content = file_get_contents($urlTxt);
  53.                     //creamos el elemento que contendrá la descripción
  54.                     //de la imagen
  55.                     $descript = $dom->createElement('decript',$content);
  56.                 }else {
  57.                     //si el archivo no existe indicamos que no se pudo encontrar
  58.                     $descript = $dom->createElement('decript','not found!!!');
  59.                 }
  60.                
  61.                 //agremamos el elemento imagen y descripción al elemento padre 'item'
  62.                 $galeria->appendChild($imagen);
  63.                 $galeria->appendChild($descript);
  64.                
  65.                 //agregamos el elemento 'item' al elemento padre 'galerias'
  66.                 $galerias->appendChild($galeria);
  67.             }
  68.            
  69.         }
  70.     }
  71. }
  72.  
  73. //cerramos la carpeta abierta
  74. closedir($openPath);
  75.  
  76. //por fin agregamos todos los elementos al xml final
  77. $dom->appendChild($galerias);
  78. //guardamos el xml en un archivo fisico con el nombre galerias.xml
  79. $dom->save('galerias.xml');
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #15 (permalink)  
Antiguo 03/02/2012, 02:16
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
Pregunta Respuesta: Recursividad?

Entonces se supone que por cada carpeta con imágenes y txt que suba al servidor me generará un Xml o, modificará el Xml con las imagenes y los txt's que vaya añadiendo.
Luego para mostrar la página con la forma:
descripción-->imágen
descripción-->imágen
descripción-->imágen
...
¿Cómo lo hago?
  #16 (permalink)  
Antiguo 03/02/2012, 02:22
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Recursividad?

Cita:
Entonces se supone que por cada carpeta con imágenes y txt que suba al servidor me generará un Xml o, modificará el Xml con las imagenes y los txt's que vaya añadiendo.
El script genera un XML por cada carpeta, pero es necesario indicar tanto la carpeta como el nombre del archivo XML manualmente...

Código PHP:
Ver original
  1. Luego para mostrar la página con la forma:
  2. descripción-->imágen
  3. descripción-->imágen
  4. descripción-->imágen
  5. ...
  6. ¿Cómo lo hago?

Vamos, no quieras que todo lo haga yo, te habíamos comentado anteriormente que con simple_xml puedes parsear (leer) un xml y en vase a eso crear un scrip que lea el xml y genere el código html pertinente para visualizar los datos en el navegador, investiga, en internet hay infinidad de tutoriales sobre como funciona simple_xml...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #17 (permalink)  
Antiguo 03/02/2012, 02:58
 
Fecha de Ingreso: enero-2012
Mensajes: 52
Antigüedad: 12 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Recursividad?

Gracias, investigaré!!!
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 22:47.