PHP - Actualizar registro de Imagen

 
Vista:

Actualizar registro de Imagen

Publicado por Nelson Torres (32 intervenciones) el 28/11/2012 23:41:43
Hola!!

Hola tengo el siguiente código:

1
2
3
4
5
6
7
8
if(('strImagen'!= $row_Recordset1['strImagen'])&&('strImagen'!="")){
		$archivo = "docmuentos/imagenes/".$row_Recordset1['strImagen'];
		if (file_exists($archivo)) unlink($archivo);
		$nombre_archivo = $_FILES['strImagen']['name'];
		move_uploaded_file($_FILES['strImagen']['tmp_name'],"documentos/imagenes/".$nombre_archivo);
	} else {
		$nombre_archivo= $row_Recordset1['strImagen'];
	}


En teoría debería hacer lo siguiente:

Revisar si el campo de archivo de nombre strImagen esta vació y es diferente del nombre de imagen que se encuentra en la columna strImagen de la tabla producto. Si el campo de archivo esta vació, la imagen no se modifica, si el campo esta lleno y el nombre es diferente al que existe en la base de datos entonces debe coger el nombre anterior asignarlo a la variable $archivo revisar la existencia del mismo y eliminarlo de la carpeta del servidor. Lamentablemente no he logrado hacer ninguna cosa, he leído y se que estoy cerca, pero no se en que fallo, no se si cuando me refiero a los campos uso la sintaxis correcta. La actualización de los nombres y el movimiento de las imágenes a la carpeta en la bd se hace sin problema, pero la eliminación del archivo antiguo no, y cuando yo doy click en actualizar y no modifico nada, el campo en la bd toma el valor nulo del campo archivo.

Que esta mal?
Como pudo corregirlo?

Les agradecería su ayuda, ya le he dado 10000 vueltas!!!!!

Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Actualizar registro de Imagen

Publicado por xve (6935 intervenciones) el 29/11/2012 08:13:18
Hola Nelson, la verdad es que no entiendo muy bien...
por ejemplo:
if(('strImagen'!= $row_Recordset1['strImagen'])&&('strImagen'!="")){

Estas comparando un cadena 'strImagen' con el contenido de un recordset $row_Recordset1['strImagen']... si dentro del recordset en el campo strImagen no hay explicitamente el texto strImagen siempre sera diferente...

Que contiene el registro strImagen?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registro de Imagen

Publicado por Nelson Torres (32 intervenciones) el 29/11/2012 15:25:01
Hola

El strImagen es el nombre del campo archivo dentro del formulario, lo que quiero decir es que si este no esta vació y es diferente del recordset1 entonces haga las funciones programadas. No se como referirme en php a un campo, porque al parecer lo que me dices es que me estoy refiriendo a una variable de cadena. La verdad es que estoy iniciando en php, disculpa mi ignorancia al respecto.

Gracias

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registro de Imagen

Publicado por Nelson Torres (32 intervenciones) el 01/12/2012 21:47:29
Hola!

Definitivamente aun no logro identificar el error, con base a lo que lei del link enviado, escribi el siguiente codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        //esta variable toma el valor de la variable de formulario enviada desde el listado en la tabla
	if (isset($_POST['nom_imagen']))$nombre_imagen = $_POST['nom_imagen'];
	//aqui se verifica si el campo de archivo de nombre strImagen no esta vácio
	if(($_FILES['strImagen']['name'] <> "" )){
		//se define la ruta en donde se encuentra la vieja imagen
		$archivo = "documentos/imagenes/".$nombre_imagen;
		//si el archivo existe, entonces se elimina
		if (file_exists($archivo)) unlink($archivo);
		//se asigna a la variable el nombre seleccionado en el campo archivo
		$nombre_imagen = $_FILES['strImagen']['name'];
		//se mueve el nuevo archivo a la carpeta del servidor
		move_uploaded_file($_FILES['strImagen']['tmp_name'],"documentos/imagenes/".$nombre_imagen);
	}
	//si el campo archivo esta vació entonces la variable toma el nombre de la imagen que ya estaba en la bd
	if($_FILES['strImagen']['name'] == "" ) $nombre_imagen = $_POST['nom_imagen'];
.
.
.
.
.
                       //se carga a la tabla el nombre de la imagen
                       GetSQLValueString($nombre_imagen, "text"),
.
.
.

Ahora bien lo que sucede es lo siguiente: Actualiza la imagen en la bd y mueve el archivo nuevo a la carpeta sel servidor, pero no elimina la imagen antigua, y si doy click en actualizar sin haber cambiado la imagen, el campo en la bd no toma ningun valor y al consultar el estado no aparece la imagen.

Me pueden ayudar!!!!

Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Actualizar registro de Imagen

Publicado por xve (6935 intervenciones) el 02/12/2012 18:30:46
Hola Nelson, no entiendo muy bien a que te refieres con imagen antigua... la imagen cuando la subes desde un formulario, se genera un archivo único temporal que se elimina una vez finalizado el script.

Si nos puedes comentar con mas detalle...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar registro de Imagen

Publicado por Nelson Torres (32 intervenciones) el 03/12/2012 17:47:49
Hola!

Cuando yo busco actualizar un registro, en mi caso tengo dos imágenes: la imagen 1 que es la imagen que ya existe en bd y la que yo quiero cambiar, a la que yo llamo imagen antigua, y la imagen 2 que es la imagen que quiero subir a la carpeta del servidor y por la cual quiero reemplazar a la imagen 1.

El código que les enseño, no me elimina a la imagen 1 de la carpeta del servidor, que es lo que yo quiero que haga adicionalmente. Simplemente actualiza la imagen, cambiando el nombre de la imagen 1 por la imagen 2. Y la imagen 2 es subida a la carpeta imágenes de mi bd.

Espero haya solucionado tus dudas para que puedas ayudarme!!!

Gracias!

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Actualizar registro de Imagen

Publicado por xve (6935 intervenciones) el 04/12/2012 07:43:08
Hola Omar, perdona, no te entendí...

Lógicamente, si la nueva imagen tiene un nombre diferente, te la copiara en la carpeta pero con su nombre, por lo que no reemplazara la imagen ya existente. Para ello, tendrás que averiguar que nombre de imagen es el anterior mediante una consulta a la base de datos, y eliminarla con la instrucción: unlink().

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar