Foros del Web » Programando para Internet » PHP »

Se podría descomponer un path

Estas en el tema de Se podría descomponer un path en el foro de PHP en Foros del Web. Mi pregunta es la siguiente, en una base de datos almaceno el path de unas fotos el cual sería, /home/usuario/directorio1/directorio2/directorio3/elnombredelafoto.JPG logicamente el nombredelafoto.jpg irá cambiando ...
  #1 (permalink)  
Antiguo 02/02/2005, 04:51
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Se podría descomponer un path

Mi pregunta es la siguiente, en una base de datos almaceno el path de unas fotos el cual sería,
/home/usuario/directorio1/directorio2/directorio3/elnombredelafoto.JPG

logicamente el nombredelafoto.jpg irá cambiando a medida que se inseten más fotos, lo que yo necesito es que haciendo una consulta me muestre unos datos y cuatro fotos en pequeño en la parte de abajo de la ventana haciendo a modo de thumbnails, luego tengo dos botones alante y atrás si les damos a los botones nos aparece la foto en grande en una celda central, todo esto me funciona perfectament en local pero cuando lo subo al servidor no me funciona porque al poner este path /home/campinos/public_html/inmotemp/thumbs/tn_129-2997_IMG.JPG

dentro del <script language> no me lo interpreta pero si me interpreta si le pongo /directorio2/directorio3/tn_129-2997_IMG.JPG, entonces a lo que ibamos al principio
se podría descomponer /home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG, no sé, en variables de manera que por ejemplo
$var1="/home/";
$var2"/usuario/";
etc, etc, y yo despues pudiera crear otra que fuese

$foto="variable correspondiente a directorio2, variable correspondiente directorio3, variable correspondiente a la imagen que en ese momento corresponda,
No sé si me habreis entendido, si necesitais más datos por favor decirmelo. Ya de antemano muchas gracias
  #2 (permalink)  
Antiguo 02/02/2005, 05:50
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Puedes usar la función explode para separar los elementos, y luego crear una cadena que irá concatenando a partir del elemento x(en este caso puse 4 para que coincida con el directorio que dices) hasta el final del array:
Código PHP:
<?
$a
="/home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG";
$a=explode("/",$a);
for(
$i=4;$i<(count($a));$i++) $nueva.=($i<((count($a))-1)) ? ($a[$i]."/") : ($a[$i]);
print 
$nueva;
 
?>
Según la línea que está dentro del bucle se concatenará el elemento siguiente seguido de "/" salvo si estamos en el último elemento en cuyo caso sólo se concatena el elemento siguiente.

Aunque lo mismo hay alguna manera de hacerlo más rápido.

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 02/02/2005 a las 05:51
  #3 (permalink)  
Antiguo 02/02/2005, 05:58
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Muchas gracias por tu pronta respuesta yoseman, una pregunta si en vez de poner el nombre de la foto pongo " " se interpretaría como: lo que haya en cada momento?, todavía no lo he probado pero ...... entiendes lo que te digo?, como no sabemos el nombre que va a tener la foto, venga muchísimas gracias
  #4 (permalink)  
Antiguo 02/02/2005, 06:24
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
La función explode te separa dada una cadena separatoria y una cadena origen, todos los 'trozitos', y los pone en un array. De esta forma dada la primera parte del código tendrías:
Código PHP:
$a="/home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG";
$a=explode("/",$a); 
/*
te generaría este array
$a[0]="";
$a[1]="home";
$a[2]="usuario";
$a[3]="directorio1";
$a[4]="directorio2";
$a[5]="directorio3";
$a[6]="tn_129-2997_IMG.JPG";
*/ 
Si sabes de antemano el directorio a dónde lo vas a subir, lo que tambien puedes hacer es sacar a través del último índice del array, sólo el nombre del archivo y anteponerle el directorio que tu conoces.

Código PHP:
$a="/home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG";
$a=explode("/",$a); 
$anteponer="directorio2/directorio3/".$a[(count($a))-1]; 
No entiendo lo que quieres decir cuando dices que qué pasaría si pones " ", pero al no haber coincidencias del separador en la cadena origen la función explode no devolvería ningún array.

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 02/02/2005 a las 06:26
  #5 (permalink)  
Antiguo 02/02/2005, 08:01
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
No nada eran dos dobles comillas para que siempre cogiera lo que hay en el nombre de imagen, pero vale, disculpame pero mis conocimientos de php som limitadísimos y no entiendo todavía muy bien las cosas, voy a intentar probar con lo que me dices, de nuevo muchísimas gracias por tu ayuda
  #6 (permalink)  
Antiguo 02/02/2005, 13:51
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Nada no me aclaro con este tema, a ver
Código PHP:
 $registro['imagen1']; 
sería el path de la foto,osea:
Código HTML:
/home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG
entonces por ejemplo si creo una variable
Código PHP:
$foto1"$registro['imagen1']; 
cómo puedo usar
Código PHP:
$a="/home/usuario/directorio1/directorio2/directorio3/tn_129-2997_IMG.JPG"
$a=explode("/",$a); 
para poder obtener una dirección tal que sea
Código HTML:
/directorio2/directorio3/tn_129-2997_IMG.JPG
para poder hacer referencia a ella?, venga si me podeis hechar un cable os lo agradecería mucho, salu2
  #7 (permalink)  
Antiguo 02/02/2005, 16:36
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Si estás recogiendo de la base de datos la dirección, puedes hacer esto:
Código PHP:
<?
$query
=mysql_query("select * from tabla");
while (
$registro=mysql_fetch_assoc)
{
$a=explode("/"$registro['imagen1']);
for(
$i=4;$i<(count($a));$i++) $nueva.=($i<((count($a))-1)) ? ($a[$i]."/") : ($a[$i]);
//en $nueva tendrás ahora para cada fila devuelta la ruta cambiada :)
//
//
//
}
A ver si te funciona ;)

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 02/02/2005 a las 16:38
  #8 (permalink)  
Antiguo 03/02/2005, 03:07
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Simplemente fantástico, funciona perfectamente, no sabes cuantísimo te agradezco tu ayuda, de verdad muchísimas gracias yoseman y salu2
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 19:55.