Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

UPDATE sin datos

Estas en el tema de UPDATE sin datos en el foro de Mysql en Foros del Web. Hola, podrian ayudarme?? cuando hago el UPDATE de NAME, si no he puesto nada en uno de los campos APELLIDO o DNI, este me lo ...
  #1 (permalink)  
Antiguo 28/04/2011, 04:36
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
UPDATE sin datos

Hola, podrian ayudarme??
cuando hago el UPDATE de NAME, si no he puesto nada en uno de los campos APELLIDO o DNI, este me lo modifica a blanco lo que ya tuviera guardado....
como sería para que si no pongo nada en DNI por ejemplo, mantenga lo que hay en la BBDD y solo me modifique el campo APELLIDO ???
Gracias

mysql_query("UPDATE Entry set Surname = '$_POST[Apellido]' , DNI = '$_POST[DNI]' where Name = '$_POST[Nombre]' ",$link);
  #2 (permalink)  
Antiguo 28/04/2011, 05:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: UPDATE sin datos

Hay dos formas de resolverlo:
1) En PHP verificas si la variable contiene o no algo, y de acuerdo a eso le vas agregando las partes del UPDATE a actualizar. Eso es crear la sentencia dinámicamente, y es la mejor de las soluciones.
Código PHP:
$sql "UPDATE entrada SET ";
if(
$_POST[Apellido]!="")
    { 
$sql .= "Surname = '$_POST[Apellido]' ,"}
if(
$_POST[DNI]!="")
    { 
$sql .= "DNI= '$_POST[DNI]' ,"}
if(
$_POST[Name ]!="")
    { 
$sql .= "Name = '$_POST[Nombre]' ,"}
mysql_query($sql$link); 
2) En la sentencia, debes usar funciones para verificar que no estés alterando el contenido que ya existe. El problema es que hacer que funcione bien implica crear una consulta muy complicada.
Código MySQL:
Ver original
  1. UPDATE entrada SET Surname = IF( '$_POST[Apellido]'  = '', Surname, '$_POST[Apellido]'),
  2. IF( '$_POST[DNI]'  = '', Surname, '$_POST[DNI]'),
  3. IF( '$_POST[Name]'  = '', Surname, '$_POST[Nombre]');
Este ejemplo no abarca todas las condiciones posibles.

Consejo: No uses en el nombre de los campos, tablas o bases de datos nombres en inglés, en tanto sea posible. Es muy probable que termines poniendo nombres que son palabras reservadas en SQL, y eso te generará errores de sintaxis indetectables.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 28/04/2011 a las 06:16
  #3 (permalink)  
Antiguo 28/04/2011, 06:08
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: UPDATE sin datos

Muchas gracias por el consejo,

voy a probarlo y te cuento....

Un saludo
  #4 (permalink)  
Antiguo 28/04/2011, 06:42
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: UPDATE sin datos

Hola, una pregunta.... en donde iría el where ya que uno de los campos quiero que sea sobre el que hace el update

$sql = "UPDATE entry SET ";
if($_POST[Apellido]!="")
{ $sql .= "Surname = '$_POST[Apellido]' ,"}
if($_POST[DNI]!="")
{ $sql .= "DNI= '$_POST[DNI]' ,"}
mysql_query($sql, $link);
  #5 (permalink)  
Antiguo 28/04/2011, 07:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: UPDATE sin datos

Y... al final de todo, obviamente, solo que fuera de los IFs y antes del mysql_query().
Acuérdate que si no pones un WHERE, el UPDATE afectara a todos los registros de la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 28/04/2011, 08:28
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: UPDATE sin datos

perdona gnzsoloyo pero soy muy bruto.............. por mas que pruebo no doy con la solución...
que hago mal en esto??

$sql = "UPDATE entry SET ";
if($_POST[Apellido]!="")
{ $sql .= "Surname = '$_POST[Apellido]' ,"}
if($_POST[DNI]!="")
{ $sql .= "DNI= '$_POST[DNI]' ,"}
where Name = '$_POST[Nombre]'
mysql_query($sql, $link);
  #7 (permalink)  
Antiguo 28/04/2011, 09:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: UPDATE sin datos

WHERE es parte de la consulta, debe ir dentro de la variable.

Código PHP:
Ver original
  1. $sql = "UPDATE entry SET ";
  2. if($_POST[Apellido]!="")
  3.          { $sql .= "Surname = '$_POST[Apellido]' ,"}
  4. if($_POST[DNI]!="")
  5.          { $sql .= "DNI= '$_POST[DNI]' ,"}
  6. $sql .= "WHERE Name = '$_POST[Nombre]'"
  7. $result = mysql_query($sql, $link);  
  8. if(!$result)
  9.     {echo "Ha habido un error al introducir los datos.<br>".mysql_error($link);}
Por favor, usa los tags de código que están al lado del ícono de QUOTE. De ese modo el código queda más legible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 28/04/2011, 09:49
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: UPDATE sin datos

Muchas gracias por la info,

lo pruebo y te cuento......
  #9 (permalink)  
Antiguo 14/09/2012, 04:57
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: UPDATE sin datos

Buenos dias moderador gnzsoloyo.
Segun lo que me indica aqui no puedo responder a este tema.
Te quisiera pedir si podrías revisar un tema nuevo que acabo de poner en el foro que tiene que ver con esto porque aqui ya no puedo decir nada mas.
El otro día me ayudaste mucho, por favor, lee este nuevo post.
Este es el link

http://www.forosdelweb.com/f18/como-...recto-1013209/

Muchisimas gracias gnzsoloyo.
Un saludo

Etiquetas: update
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 11:56.