Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2012, 04:54
maquinistas
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación como hacer un UPDATE correcto

Buenos dias a todos.
Tengo un pequeño problema. Como harias un UPDATE correcto?.
Resulta que tengo una base de datos con varios campos que puede introducir un usuario siempre y cuando yo, desde un formulario privado inserte una contraseña ($contrasena) y una clave valida ($id) para cada usuario.
Una vez que reciba estas dos el usuario, podra llenar los campos que estan sin cubrir que conforman su id. Esto lo hago con este UPDATE. ( DECIR QUE HE INTRODUCIDO UN FORMULARIO PREVIO QUE RECOJA TODAS LAS VARIABLES DE SU REGISTRO EN LA BASE DE DATOS)......

mysql_query("UPDATE establecimientos SET id='$_POST[id]', imagen='".$nombre."', titulo='$_POST[titulo]', marca='$_POST[marca]', direccion='".$_POST[direccion]."', numero='".$_POST[numero]."',localidad= '".$_POST[localidad]."', provincia='".$_POST[provincia]."', telefono='".$_POST[telefono]."', d1='".$_POST[d1]."', d2='".$_POST[d2]."', d3='".$_POST[d3]."', d4='".$_POST[d4]."', d5='".$_POST[d5]."', web='".$_POST[web]."', carta='".$_POST[carta]."', tipodecocina='".$_POST[tipodecocina]."', horarios='".$_POST[horarios]."', descanso='".$_POST[descanso]."', ninos='".$_POST[ninos]."', pp='".$_POST[pp]."', wifi= '".$_POST[wifi]."', a12='".$_POST[a12]."', aire='".$_POST[aire]."', terraza='".$_POST[terraza]."', vistas='".$_POST[vistas]."' , mascota='".$_POST[mascota]."', fecha= ".date("Ymd").", contrasena= '".$_POST[contrasena]."', mes='$_POST[mes]' WHERE contrasena='".$_POST[contrasena]."' AND id='".$_POST[id]."' ");


Pero el problema viene cuando quiero SOLO ACTUALIZAR ALGUNOS CAMPOS SIN MODIFICAR O VARIAR YA LOS QUE ESTAN YA INSERTADOS.
Pongamos un ejemplo: quiero que el usuario varie los campos 'd1','d2','d3','d4' y 'd5' y que pueda hacerlo SIEMPRE Y CUANDO valide su clave y su contraseña.
Lo primero que hago para eso sea posible, seria un formulario que recoge las variables
que van a introducirse como actualizadas en el registro ya creado. Es decir, recojo
$d1, $d2, $d3, $d4, $d5 y para que estas variables sean recogidas correctamente en el formulario, recojo tambien $contrasena, $id.
Y lo envio a un script donde añade este UPDATE.......

mysql_query("UPDATE establecimientos SET id='$_POST[id]', d1='".$_POST[d1]."', d2='".$_POST[d2]."', d3='".$_POST[d3]."', d4='".$_POST[d4]."', d5='".$_POST[d5]."', contrasena= '".$_POST[contrasena]."' WHERE contrasena='".$_POST[contrasena]."' AND id='".$_POST[id]."' ");


echo ". La modificacón de sus datos ha sido satisfactoria ......

Lo que sucede con este UPDATE, es se insertan estas nuevos datos en los campos d1,d2,d3,d4,d5 ya que ha introducido el usuario la contraseña y la clave correcta de su registro PERO EN LOS DEMAS CAMPOS DE SU REGISTRO me borra TODA la informacion que tenia en cada uno de los campos, y en ese registro solo se ven los ultimos campos modifiados con la contraseña y el id.
Es decir, todos los campos aparecen vavios excepto los d1,d2,d3,d4,d5 y contraseña y la id.
Como me aconsejarias tu hacer un UPDATE CORRECTO para ciertos campos sin modificar el resto de los campo de un registro de una base de datos ??.
agradezco mucho tus opiniones