Foros del Web » Programando para Internet » PHP »

Intentando mostrar una imagen: problema con rutas

Estas en el tema de Intentando mostrar una imagen: problema con rutas en el foro de PHP en Foros del Web. Saludos, tengo 3 archivos php/html que he pegado un poco mas abajo: - Un archivo que es un formulario para que el usuario inserte sus ...
  #1 (permalink)  
Antiguo 25/11/2008, 06:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 146
Antigüedad: 15 años, 7 meses
Puntos: 1
Intentando mostrar una imagen: problema con rutas

Saludos,

tengo 3 archivos php/html que he pegado un poco mas abajo:

- Un archivo que es un formulario para que el usuario inserte sus datos y suba su avatar (.gif).
- Un archivo que recibe los datos del formulario y los sube a una tabla de una base de datos MySQL.
- Un archivo que muestra la primera linea de la tabla antes mencionada.

Mi problema:

tras subir el avatar, en la base de datos se almacena en una ruta que yo indico ('/opt/lampp/htdocs/Sites/red_social/uploaded/image.gif').
Al intentar mostrar la imagen en el navegador usando esa ruta, la imagen no aparece, ya que la ruta contiene directorios que no tienen nada que ver con
el servidor web.

Se me ha ocurrido que puede haber alguna funcion que substraega una parte concreta de una cadena, de manera que
me pueda quedar solo con la parte de la cadena que me interesa.

¿Cual es vuestro consejo?

Tambien podeis criticarte mi codigo, puesto que estoy empezando a programar (webs)...


Código PHP:
<!-- 
Este codigo recoge los datos de "formulario.html" e inserta los datos
en una fila de la tabla.
 -->

<html>
<head>

</head>

<body>


<?php

// Nos conectamos al servidor mysql.
mysql_connect("localhost""root""") OR die(mysql_error()); 

// Seleccionamos la base de datos "red_social".
mysql_select_db("red_social") OR die(mysql_error());


// Insertamos la imagen del formulario en "$ruta".
$ruta='/opt/lampp/htdocs/Sites/red_social/uploaded/image.gif';
move_uploaded_file($_FILES['file']['tmp_name'],$ruta);


// Insertamos los datos provenientes del formulario de registro en la tabla "amigos".
mysql_query("insert into amigos (nombre, apellidos, edad, telefono, email, domicilio, perfil, avatar) values('$nombre', '$apellidos','$edad','$telefono','$email','$domicilio','$perfil', '$ruta')") OR die(mysql_error());

// 
//mysql_query("insert into amigos (avatar) values ('$ruta')");


?> 

</body>
</html>


<!-- 
Este codigo muestra  los elementos recogidos en la primera fila
de la tabla "amigos"-->



<html>
<head>

</head>

<body>


<?php

// Nos conectamos al servidor mysql.
mysql_connect("localhost""root""") OR die(mysql_error()); 

// Seleccionamos la base de datos "red_social".
mysql_select_db("red_social") OR die(mysql_error());  

$result mysql_query("select * from amigos") OR die(mysql_error());

// Extraemos la primera fila de "amigos" y la pasamos a "$row".
$row mysql_fetch_array($result);

// imprimimos los dos elementos de la unica fila de la tabla "clientes".
echo $row["nombre"];
echo 
"<br>";
echo 
$row["apellidos"];
echo 
"<br>";
echo 
$row["edad"];
echo 
"<br>";
echo 
$row["telefono"];
echo 
"<br>";
echo 
$row["email"];
echo 
"<br>";
echo 
$row["domicilio"];
echo 
"<br>";
echo 
$row["perfil"];
echo 
"<br>";
echo 
$row["avatar"];
$rutaa=row["avatar"];
echo 
"<img src='$rutaa'>";

?> 

</body>

</html>
  #2 (permalink)  
Antiguo 25/11/2008, 07:31
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Intentando mostrar una imagen: problema con rutas

La verdad es pesima idea guardar un path en tu base de datos, si algun dia ese path cambia ya imagino la de lios que va a ser actualizar la base de datos, bueno y que hacer. Pues facil en tu base de datos unicamente graba el nombre de la imagen y cuando quieras invocarla desde alguna pagina creas una constante con la ruta donde almacenas todas tus imagenes
Código:
define("_img_path", "http://mysite.com/red_social/uploaded/");
y asi para invocar tu imagen usarias este codigo
Código:
echo '<img src="'._img_path.'miimagen.gif" />

Última edición por XLogus; 25/11/2008 a las 10:25
  #3 (permalink)  
Antiguo 25/11/2008, 08:41
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Intentando mostrar una imagen: problema con rutas

Definitivamente ha sido una mala practica guardar todo el path de una imagen en tu BD.. pero si dices que no te funciona.. podria ser lo siguiente: (parece q trabajar bajo linux ??)

- el archivo tiene permisos de lectura
- el archivo esta en una ruta a la cual puede acceder el web daemon
- si estas seguro de que el archivo cumple los 2 puntos anteriores, porque no escribes la ruta completa y lo ves desde un web browser..
  #4 (permalink)  
Antiguo 25/11/2008, 10:28
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Intentando mostrar una imagen: problema con rutas

erlingfiallos, viste la ruta que esta usando para las imagenes?
/opt/lampp/htdocs/Sites/red_social/uploaded/image.gif

Eso es una ruta dentro del servidor linux, esta clarisimo que no es posible invocarla desde un browser, por eso deberia o bien usar el path absoluto: http://www.misitio.com/uploaded/miimagen.gif o el path relativo uploaded/miimagen.gif
  #5 (permalink)  
Antiguo 25/11/2008, 10:51
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Intentando mostrar una imagen: problema con rutas

Evidentemente es un linux.. y el problema con la imagen es que es una ruta a la cual el usuario www-data no puede acceder..

en todo caso deberia de ser la ruta correcta a partir de
Sites/red_social/uploaded/image.gif

lo demas es el lugar donde tienes alojado el servidor.. que eso que esta antes ya no debe importarte..

tambien.. que raro que utilices lamp estando en un servidor linux.. que tiene todo y se puede instalar facilmente todo sin necesidad de una aplicacion que empaqueta el apache, php mysql y quien sabe que mas..
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 02:44.