Solo cambiar los datos de mysql que hayan llenado

Campos de Tabla: nombre / descripcion / foto
Codigo PHP
<? 
$query = "UPDATE FOTOS SET ";
    $query .="nombre = '".$_POST["enombre"]."' ";
    $query .=",descripcion = '".$_POST["edescripcion"]."' ";
    $query .=",foto = '".$_FILES["eMIfoto"]["name"]."' ";
    $query .="WHERE id = '".$_POST["id"]."' ";
?>
Junto con agradecerles el tiempo me explico.
Estoy haciendo un programa para mi liceo, y bueno me tope con este problema.
Ocurre que estoy haciendo un ejercicio en el cual agrego y modifico a antojo, hasta ahí todo bien, ahora se me presento el problema que si por ejemplo solo cambio el nombre el campo de archivo foto también se actualiza, quedando vacío.
En los textboxes puedo traer en value ="" los registros pero en el campo de archivo el valur no funciona :(
<input type="file" name="eMIfoto[]" />
¿Hay forma de solo actualizar los campos que solo se hayan cambiado?
http://www.forosdelweb.com/f18/solo-cambiar-datos-mysql-que-haigan-llenado-formulario-640396/"]Aquí [/URL] pude encontrar algo similar pero no supe como aplicarlo.
Desde ya muchas gracias!.
Bueno la idea es hacer algo como esto: if($campo1!="")$sql.="campo1=$campo1,";
if($campo2!="")$sql.="campo2=$campo2,";
if($campo3!="")$sql.="campo3=$campo3,";
if($campo4!="")$sql.="campo4=$campo4,";
if($sql!="")$query="update tabla set ".substr($sql,0,strlen($sql))." where condicion";
La idea es de aquí pero como dije antes me es difícil aplicarlo con el filefield.

1 respuesta

Respuesta
-1
Bueno yo te recomendaría lo siguiente:
1. Haces una $query= SELECT nombre,descripcion,foto FROM FOTOS where id = $_POST['id']
Y la guardas en $original por ejemplo y luego para formar la sentencia de UPDATE vas comparando con los campos que te llegan si son como los originales, esto es :
$query2 = "UPDATE FOTOS SET";
if ($original['nombre'] != $_POST['enombre'] ) { $query.= "nombre =".$POST['enombre' }
if ($original['descripcion'] != $_POST['descripcion'] ) { $query.= "descripcion =".$POST['descripcion' }
if ($original['foto'] != $_POST['foto'] ) { $query.= "foto=".$POST['foto' }
Vale ya tengo funcionando el update y todo perfecto pero ahora tengo otro problema es el siguiente:
Tengo campos tipo archivo:
copy($_FILES["foto"]["tmp_name"][$i]
copy($_FILES["foto2"]["tmp_name"][$i]
if ($original['foto'] != $_POST['foto'] ) { $query.= "foto=".$POST['foto' }
if ($original['foto'] != $_POST['foto2'] ) { $query.= "foto2=".$POST['foto2' }
Y al hacer Update ocurre que uno parece sobre escribir al otro, es decir por ejemplo el campo foto queda vacío pero escribe en foto2 parte del nombre cambiando así el valor, cosa que no debería ser, ¿alguna idea?
Gracias.
Es que los archivos que recibes tipo FILE no son tipo POST creo entender, es decir tendrías que hacer algo así:
if ($original['foto'] != $_FILES['foto']['tmp_name'] ) { $query.= "foto=".$_FILES['foto']['tmp_name'] }
if ($original['foto2'] != $_FILES['foto2']['tmp_name'] ) { $query.= "foto2=".$_FILES['foto2']['tmp_name'] }
De todos modos sino, si sí que era como me dices, fíjate que en la query tiene puesto:
"foto = $POST['foto'       // Aquí sería $_POST['foto'] en todo caso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas