Problema Mostrando Imagen de BBDD (PHP)

SmirroLL

tengo un problema, que seguramente sea una chorrada pero no consigo ver pq no me muestra una imagen guardada en una bbdd con php:

tanto el conexion.php como el subir.php funcionan perfectamente, el problema tiene que estar aquí


ver.php

<?php

$nombre = $_GET['nombre'];

include ("conexion.php");
$link=Conectarse();
$query = "SELECT imagenes FROM fotos WHERE nombre = '$nombre'";
$result = mysql_query($query,$link);

$imagen = mysql_result($result,0);

echo $imagen;

echo "<img src='..\$imagen'>";

?>

guardar.php

<?php

$ruta = "..\imagenes/{$FILES['imagen'][name]}" ;
if(!copy($
FILES['imagen']['tmp_name'], $ruta)) {
echo "error al copiar el archivo";
} else {
echo "archivo subido con exito";
include ("conexion.php");
$link=Conectarse();
$nombre = $_POST["nombre"];

mysql_query("INSERT INTO fotos (nombre,imagenes) VALUES ('$nombre','$ruta')");
echo "Se ha subido la imagen a la base de datos, puedes verla pulsando <a href='ver.php?nombre=$nombre'>aquí</a>";
}

//echo $ruta;
?>


a la hora de mostrar no me guarda bien la variable y se come el "\" de la ruta, no me muestra "..\imagenes\lelelele.jpg" , solamente me pone lo de la imagen : "..imagenes\lelelelele.jpg"

alguno sabe que falla?

ZaO

Si tienes una carpeta llamada imagenes seria $ruta = imagenes/$foto... para que la muestre.

r2d2rigo

Siempre que vayas a usar barras para rutas, SIEMPRE, usa /. \ se utiliza para escapar caracteres, y como tal, hay que usarla tambien escapada (\).

SmirroLL

#2 con $ruta = "imagenes/{$_FILES['imagen'][name]}" ;

No me tira:

Warning: copy(imagenes/azul.bmp) [function.copy]: failed to open stream: No such file or directory in C:\wamp\www\imagen\guardar.php on line 5
error al copiar el archivo

#4 poniendo $ruta = "..\imagenes/{$_FILES['imagen'][name]}" ;
No me tira, y poniendo "../imagenes/..." me muestra lo mismo que pone en la foto de arriba, pero en vez de "..imagenes" , me pone "../imagenes", pero sigue sin mostrar nada.

Subirlo a la carpeta me lo sube, pero mostrar no muestra nada xD

Fr4nk0

Si la ruta es una cadena que guardas en una variable puedes usar la barra /.
Por tanto prueba a usar $ruta = "../imagenes/{$_FILES['imagen']['name']}";
(ejemplo, no se si esa es tu ruta de verdad).

Si usas ruta relativa, tienes q hacerla desde donde se ejecuta el script, es decir si el script esta en un sitio, y la carpeta de imagenes, está en un nivel superior, la ruta que te puse antes es válida. Si no, aunque no es recomendable pq lo hace menos modular, es usar la ruta a partir de la raiz de tu servidor, es decir, que si has puesto que la carpeta \var\www\ es la raiz de tu servidor, y imagenes esta en /var/www/pepe/imagenes), sería $ruta="/pepe/imagenes/$_FILES.... ";

EDIT: Barra /, no \ .

ZaO

#4 $ruta = "imagenes/".$_FILES['imagen'][name];

concatena la cadena y la variable.

Y no ponga la / al principio que asin no te pilla la carpeta, le darias a enteder que es una subcarpeta.

SmirroLL

#5 eso es lo que tenia desde un principio y mira lo que muestra la imagen, la \ se la come xD

Fr4nk0

Perdon, la barra \ no, la / como te han dicho más arriba. Para usar valores de array en una cadena tienes q meterlo entre llaves, pero como te han dicho antes es mejor q concatenes valores
$ruta = "../imagenes/".$_FILES['imagen']['name'];

Otra cosa, acostumbrate a cerrar los tags que no llevan nada dentro.
Cambia echo "<img src='..\$imagen'>";
por echo "<img src='..\$imagen' />"; .

Si la imagen la estas extrayendo de la BD al directorio actual , el src del img debe ser
src='$imagen' , pq si le pones el .. esta cogiendo el directorio superior de esa ruta, y lo más seguro es que ahi no la hayas copiado la imagen.

(No sé como tienes estructurado eso, ni desde que carpeta se ejecuta el script ni nada, asi que mira a ver si es algo de eso, pq si no muestra la imagen y la ruta que tienes está bien, es porque el src de la imagen no es el adecuado)

SmirroLL

#8 gracias, era por el src='$imagen' XD

Fr4nk0

Si es que al final siempre son las cosas mas tontas xDDD nos pasa a todos

NeB1

#10 100% truestory

Usuarios habituales

  • NeB1
  • Fr4nk0
  • SmirroLL
  • ZaO
  • r2d2rigo