Foros del Web » Programando para Internet » PHP »

Mostrar imagen con ruta guardada en mysql

Estas en el tema de Mostrar imagen con ruta guardada en mysql en el foro de PHP en Foros del Web. Hola Amigos: Ya he caminado todo el google y el foro pero no consigo como resolver esto. Tengo un código para guardar la ruta de ...
  #1 (permalink)  
Antiguo 27/08/2008, 18:42
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Mostrar imagen con ruta guardada en mysql

Hola Amigos:

Ya he caminado todo el google y el foro pero no consigo como resolver esto. Tengo un código para guardar la ruta de una imagen en una tabla mysql y a su vez guardarla imagen en una carpeta que se llama foto y que está al mismo nivel que mis archivos donde está el formulario que tiene el file y el archivo que guarda los datos.

Este es mi form:

<form action="cargando.php" method="post" enctype="multipart/form-data" name="form1">
<table width="586" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" scope="row"><span class="Estilo4">Cargar Productos </span></th>
</tr>
<tr>
<th width="176" scope="row"><div align="justify" class="Estilo4 Estilo5">Nombre del Producto: </div></th>
<td width="410"><input name="textfield" type="text" size="50"></td>
</tr>
<tr>
<th scope="row"><div align="justify" class="Estilo4">Descripci&oacute;n:</div></th>
<td><textarea name="textarea" cols="40"></textarea></td>
</tr>
<tr>
<th scope="row"><div align="justify" class="Estilo4">Tallas:</div></th>
<td>&nbsp;</td>
</tr>
<tr>
<th scope="row"><div align="justify" class="Estilo4">Cantidad:</div></th>
<td><input name="textfield2" type="text" size="5"></td>
</tr>
<tr>
<th scope="row"><div align="justify" class="Estilo4">Precio:</div></th>
<td><input name="nombre" type="text" id="nombre"></td>
</tr>
<tr>
<th scope="row"><div align="justify" class="Estilo4">Foto:</div></th>
<td><input type="file" name="foto" id="foto"></td>
</tr>
<tr>
<th scope="row"><div align="justify"></div></th>
<td><input type="submit" name="Submit" value="Enviar"></td>
</tr>
<tr>
<th scope="row"><div align="justify"></div></th>
<td>&nbsp;</td>
</tr>
<tr>
<th scope="row"><div align="justify"></div></th>
<td>&nbsp;</td>
</tr>
</table>

Y el archivo cargando es asi:

<?
session_start();
// incluye los archivos de función para esta aplicación
require_once("../config.php");
//Recibo los datos que vienen por post
$archivo = $_FILES['foto']['name'];

$conex = db_connect();
if (!$conex)
return 0;

//Ahora rescatar el id del registro insertado con la funcion mysql_insert_id()

$id = mysql_insert_id();

//Generar el nuevo nombre para la imagen, asociado con el id del registro, para luego moverla a su posicion final

$nuevo_nombre = ( string ) $id. "_" .$_FILES['foto']['name'];

//Con la funcion move_uploaded_file mover el archivo a su posicion final, ojo con las rutas

move_uploaded_file($_FILES['foto']['tmp_name'], "fotos/$nuevo_nombre");

//Insercion de los datos, ojo la imagen se graba con su nombre original en la tabla (es un campo varchar)
$sql_ins = "INSERT INTO foto VALUES ('','$archivo')";
$res = mysql_query($sql_ins) or die ( "Error MySQL dice: " . mysql_error() );
?>

Esto me hace el trabajo pero quisiera saber:

1) como valido que sea una imagen gif, jpeg y jpg
2) Que tenga x tamaño
3) Como la recupero para mostrarla

tengo el archivo mostrar.php asi y se que está malo.

<?
session_start();
// incluye los archivos de función para esta aplicación
require_once("../config.php");
$conex = db_connect();
if (!$conex)
return 0;
$sql = "SELECT * FROM fotos";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
//mostrar la imagen
echo <img src="<? $row["ruta"] ?>;">;
?>

y me da el siguiente error Parse error: parse error, unexpected '<', expecting ',' or ';' in c:\appserv\www\phpmyadmin\probando\mostrar.php on line 12

Por favor ayudenme a resolver esto pues tengo dos días en ello y mi proyecto se atrasa. Estoy suuuuuper enredada!!!

Gracias a todos
  #2 (permalink)  
Antiguo 27/08/2008, 19:59
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Mostrar imagen con ruta guardada en mysql

me parece que el problema esta aqui:
Código PHP:
$conex db_connect(); 
if (!
$conex//agreguale { y despues cierralo con }
return 0
  #3 (permalink)  
Antiguo 27/08/2008, 20:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

Hola, gracias por tu respuesta pero no creo que ese sea el problema pues si hace la conexion y me guarda en la BD. Lo que quisiera saber es como muestro la imagen guardada y como y en donde le coloco las instrucciones para que valide si es gif, jpg y jpeg y el tamaño de la imagen.

Gracias.
  #4 (permalink)  
Antiguo 27/08/2008, 20:58
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

sos, sos, sos, help me
  #5 (permalink)  
Antiguo 27/08/2008, 21:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mostrar imagen con ruta guardada en mysql

Código PHP:
<?php
include('conexion.php');
$id 10 //puedes sacar este valor de donde desees, esto es solo un ejemplo
$sql "SELECT * FROM tabla WHERE ID = '".$id."'";
$query mysql_query($sql) or die(mysql_error());
while(
$row=mysql_fetch_assoc($query)){
echo 
'<img src="'.$row['rutaimagen'].'"></img>';
}
?>
  #6 (permalink)  
Antiguo 27/08/2008, 21:56
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

Muchas Gracias por la respuesta, por lo menos ahora trae la foto pero el problema es que no me la muestra porque me sale la imagen con una x. y al darle click derecho en las propiedades veo que no me la está buscando en la carpeta de fotos

Por qué pasará esto?
  #7 (permalink)  
Antiguo 27/08/2008, 22:17
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mostrar imagen con ruta guardada en mysql

Revisa que la ruta este correcta.

Que te muestra en la ruta de la imagen cuando haces clic derecho y propiedades?
  #8 (permalink)  
Antiguo 28/08/2008, 17:19
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

Hola:

Esta es la ruta que me da al darle click derecho.

http://localhost:8080/phpmyadmin/probando/carga/mickey-mouse-clothing-mickey-minnie-sweethearts-yellow-shirt-and-denim-skirt%20talla%204%20.jpg

y debería ser la ruta:

http://localhost:8080/phpmyadmin/probando/carga/fotos/mickey-mouse-clothing-mickey-minnie-sweethearts-yellow-shirt-and-denim-skirt%20talla%204%20.jpg

Si pueden indicarme por favor como es la forma correcta de colocar la ruta para que la busque en la carpeta fotos en donde si la guarda.

Me imagino que el problema está en el archivo mostrar.php. Creo?

Gracias
  #9 (permalink)  
Antiguo 30/08/2008, 19:16
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

Cita:
Iniciado por kimmy Ver Mensaje
Hola:

Esta es la ruta que me da al darle click derecho.

http://localhost:8080/phpmyadmin/probando/carga/mickey-mouse-clothing-mickey-minnie-sweethearts-yellow-shirt-and-denim-skirt%20talla%204%20.jpg

y debería ser la ruta:

http://localhost:8080/phpmyadmin/probando/carga/fotos/mickey-mouse-clothing-mickey-minnie-sweethearts-yellow-shirt-and-denim-skirt%20talla%204%20.jpg

Si pueden indicarme por favor como es la forma correcta de colocar la ruta para que la busque en la carpeta fotos en donde si la guarda.

Me imagino que el problema está en el archivo mostrar.php. Creo?

Gracias
Please amigos, alguna idea para que busque en la ruta? Ya me duele la cabeza de darle la vuelta pero no lo veo. Me tapé.... Help me.
  #10 (permalink)  
Antiguo 30/08/2008, 19:25
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mostrar imagen con ruta guardada en mysql

Despues de darle una miradita al codigo he encontrado el fallo:
Echale un vistazo a esta parte:
Código PHP:
//Generar el nuevo nombre para la imagen, asociado con el id del registro, para luego moverla a su posicion final

$nuevo_nombre = ( string ) $id"_" .$_FILES['foto']['name'];

//Con la funcion move_uploaded_file mover el archivo a su posicion final, ojo con las rutas

move_uploaded_file($_FILES['foto']['tmp_name'], "fotos/$nuevo_nombre");

//Insercion de los datos, ojo la imagen se graba con su nombre original en la tabla (es un campo varchar)
$sql_ins "INSERT INTO foto VALUES ('','$archivo')"
Efectivamente mueves el archivo a "fotos/$nuevo_nombre" ... Pero al guardar la ruta ...
No haces lo mismo.

Guardas solamente el nombre de la imagen como fue subida.
Deberia ser:
$sql_ins = "INSERT INTO foto VALUES ('','fotos/$nuevo_nombre')";
  #11 (permalink)  
Antiguo 30/08/2008, 19:36
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar imagen con ruta guardada en mysql

Ronruby eres un sol. Muchas Gracias se ve perfectamente. Que alivio!!!
  #12 (permalink)  
Antiguo 31/08/2008, 07:44
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: Mostrar imagen con ruta guardada en mysql

buenas!!

una sugerencia para optimizar y en lugar de que pase por tanto posibles errores es que iguales tu ruta a una variable
por ejemplo:

$dir="fotos/"
$foto="lo que quieras"
$ext=".jpg"
$subefoto=$dir+$foto+$ext
asi una vez que proceses a la variable $subefoto solo es conservarla para hacer movimientos que quieras con ella

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:36.