Foros del Web » Programando para Internet » PHP »

Guardar imagen

Estas en el tema de Guardar imagen en el foro de PHP en Foros del Web. Buenos días He conseguido que la ruta de la imagen se guarde en la base de datos , pero me pasa un problema http://img84.xooimage.com/files/9/a/c/foto-3600c22.jpg Como ...
  #1 (permalink)  
Antiguo 02/07/2012, 07:49
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Guardar imagen

Buenos días

He conseguido que la ruta de la imagen se guarde en la base de datos , pero me pasa un problema

http://img84.xooimage.com/files/9/a/c/foto-3600c22.jpg

Como veis se agrega a la última fila , pero yo quiero que se inserte en el usuario que ha iniciado la sesión , ya que únicamente subirá una foto.

El login lo hago a través de sesiones

Saludos y gracias :)

<?php
include("../config.php");
$ruta = "imagenes";
$archivo = $_FILES['imagen']['tmp_name'];
$nombreArchivo = $_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta = $ruta."/".$nombreArchivo;
mysql_query("insert into users(foto) values ('$ruta')");
?>
  #2 (permalink)  
Antiguo 02/07/2012, 08:15
Avatar de maxbrauer  
Fecha de Ingreso: marzo-2012
Ubicación: Mexico
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Guardar imagen

Te lo pone de esa manera debido a que no estas seleccionando el usuario donde lo quieres registrar.


#1 Primero necesitas tener tu usuario cargado en la variable de sesion.

#2 Cambiar tu query , debido a que solo le estas diciendo



inserta en users el valor de la ruta

Tienes que hacer,

inserta en users el valor de la ruta DONDE EL USUARIO ES TAL



insert into users(foto) values ('$ruta') where alias='$_SESSION['alias']



'$_SESSION['alias'] es tu nombre de usuario de sesion.


Verifica las sentencias de SQL
Una referencia puede ser:

http://www.w3schools.com/sql/sql_where.asp
  #3 (permalink)  
Antiguo 02/07/2012, 12:11
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

Pues no me sale nada , me dice que el alias no esta definido :(, pero no hay ningun codigo en el error.

<?php
include("../config.php");
session_start("user");
$sesion = $_SESSION['user']['alias'];
$ruta = "imagenes";
$archivo = $_FILES['imagen']['tmp_name'];
$nombreArchivo = $_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta = $ruta."/".$nombreArchivo;
mysql_query("insert into users(foto) values ('$ruta') alias='$sesion'");
;
?>

Última edición por kfh1992; 02/07/2012 a las 12:24
  #4 (permalink)  
Antiguo 02/07/2012, 15:51
Avatar de poncharelo_69  
Fecha de Ingreso: octubre-2011
Ubicación: Queretaro
Mensajes: 86
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Guardar imagen

Primero que nada te recomiendo que compruebes que en efecto alias es el valor del identificador del usuario.

Segundo, la sentencia de mysql que utilizas para insertar la imagen esta mal, ya que despues del values('$ruta') pones alias='$session' y eso no esta siendo una condicion.

prueba:
Código PHP:
mysql_query("insert into users(foto) values ('$ruta') WHERE alias='$sesion'"
  #5 (permalink)  
Antiguo 03/07/2012, 05:07
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

Pues mira , no da ningun error de esta manera, la imagen se copia a la carpeta correctamente pero luego no se inserta en la base de datos,aunque cuando quito el WHERE se introduce , aunque abajo.

http://img84.xooimage.com/files/f/7/...os-36073f5.jpg

El coodigo actual

<?php
include("../config.php");
session_start("user");
$sesion = $_SESSION['user']['alias'];
$ruta = "imagenes";
$archivo = $_FILES['imagen']['tmp_name'];
$nombreArchivo = $_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta = $ruta."/".$nombreArchivo;
mysql_query("insert into users(foto) values ('$ruta') WHERE alias='$sesion'")
;
?>
  #6 (permalink)  
Antiguo 03/07/2012, 05:50
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: Guardar imagen

haz un echo para ver el $sesion (que es lo mas probable que este mal), si te sale el numero que deseas y no te inserta bien...te aconsejo que tires el ordenador por la ventana
__________________
Nadie nace aprendido, un experto es simplemente alguien que ya ha cometido muchos errores
  #7 (permalink)  
Antiguo 03/07/2012, 07:02
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

Me voy a cagar en todo TT' tendré que tirar el ordenador por la ventana al final...

session_start();
print($_SESSION['user']['alias']);

me sale el nombre del alias

y no pasa aboslutamente nada TT' , código completo

formulario

http://img78.xooimage.com/files/7/8/...io-3608175.jpg

<body>
<form method="post" action="formulario.php" enctype="multipart/form-data">
<label>Elige imagen</label>
<br/>
<input type="file" name="imagen"/>
<input type="submit" value="Enviar"/>
</form>
</body>
<?php
session_start();
print($_SESSION['user']['alias']);
?>

subida


<?php
include("../config.php");
session_start("user");
$sesion = $_SESSION['user']['alias'];
$ruta = "imagenes";
$archivo = $_FILES['imagen']['tmp_name'];
$nombreArchivo = $_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta = $ruta."/".$nombreArchivo;
mysql_query("insert into users * values ('$ruta') WHERE alias='$sesion'")
;
?>

Última edición por kfh1992; 03/07/2012 a las 07:11
  #8 (permalink)  
Antiguo 03/07/2012, 07:58
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Guardar imagen

1. session_start() debe estar antes que cualquier cosa inclusive antes del include
2. Utilice las erramientas que le brinda PHP para saber el error que genera MySql

Código PHP:
Ver original
  1. mysql_query("aca_el_query") or die (mysql_error());

EDIT:

Adicionalmente, ese query no me convence... ya que puede utilizar una sentencia INSERT INTO tabla VALUES cuando mandas el total de datos para cada columna de tu tabla, por lo cual creo que deberas utilizar INSERT INTO tabla (campo) VALUES ('valor');
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 03/07/2012 a las 08:04
  #9 (permalink)  
Antiguo 03/07/2012, 11:57
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

Usted tiene un error en la sintaxis SQL, consulte el manual que corresponde a su versión del servidor MySQL para la sintaxis derecho a utilizar cerca de 'donde alias = kiferhe' en la línea 1

En el where hay un error el problema es que no se cual es el error TT'

mysql_query("insert into users (foto) values ('$ruta') WHERE alias=".$sesion."")
or die (mysql_error())
  #10 (permalink)  
Antiguo 03/07/2012, 13:06
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Guardar imagen

por que le usan el WHERE en el INSERT?
  #11 (permalink)  
Antiguo 03/07/2012, 14:40
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 9 meses
Puntos: 35
Respuesta: Guardar imagen

D: como bien dice vicram, el insert no lleva un where. Hay que leer la documentación, chavos.

Lo que necesitas hacer es primero comprobar si ya existe un registro para dicha imagen/usuario, en caso de que no exista, entonces la insertas. Si ya existe, no haces nada.
__________________
Sin Ideas
  #12 (permalink)  
Antiguo 05/07/2012, 06:11
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

Ok os explico por partes si quito el where se inserta en la base de datos (Lo del final)

http://img76.xooimage.com/files/c/2/8/bd2-361669f.jpg


<?php
session_start("user");
include("../config.php");
$sesion = $_SESSION['user']['alias'];
$ruta = "imagenes";
$archivo = $_FILES['imagen']['tmp_name'];
$nombreArchivo = $_FILES['imagen']['name'];
move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
$ruta = $ruta."/".$nombreArchivo;
mysql_query("insert into users(foto) values ('$ruta')");
;
?>

ok?

Pero lo que quiero es que el usuario que ha iniciado la sesión guarde su foto en su lugar entonces me dijeron que utilizara el where alias=$sesion

O es de manera incorrecta?
  #13 (permalink)  
Antiguo 05/07/2012, 07:15
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Guardar imagen

el insert no lleva WHERE por eso... esta mal...

lo unico que tenes que hacer es como ya tenes tus usuarios.. un simple UPDATE que SI lleva el where...

Código PHP:
Ver original
  1. <?php
  2. session_start("user");
  3. include("../config.php");
  4. $sesion = $_SESSION['user']['alias'];
  5. $ruta = "imagenes";
  6. $archivo = $_FILES['imagen']['tmp_name'];
  7. $nombreArchivo = $_FILES['imagen']['name'];
  8. move_uploaded_file($archivo,$ruta."/".$nombreArchivo);
  9. $ruta = $ruta."/".$nombreArchivo;
  10. mysql_query("update users set foto = '$ruta' where alias = '$sesion'");
  11. ?>

Para cuando los datos ya existen debes hacer un UPDATE y si el usuario esta REGISTRANDOSE (no existe) ahi recien debes hacer un INSERT..
  #14 (permalink)  
Antiguo 05/07/2012, 10:15
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Guardar imagen

sii gracias funciona :)

y ahora consigo que se muestre la imagen pero mi pregunta es como puedo poner una medida estandar para todas las imagenes?El width y el height de toda la vida??

echo "<img src='./images/" .$row['foto']. "'>";
  #15 (permalink)  
Antiguo 05/07/2012, 10:37
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Guardar imagen

Código PHP:
Ver original
  1. echo "<img src='./images/" .$row['foto']. "' width='xx' height='yy' />";

donde "xx" es el ancho e "yy" el alto... que debes cambiar por los valores que tu quieres usar

Etiquetas: imagenes, mysql, usuarios
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 20:10.