Foros del Web » Programando para Internet » PHP »

No borrar con variable vacia su valor previo en una bbdd

Estas en el tema de No borrar con variable vacia su valor previo en una bbdd en el foro de PHP en Foros del Web. Hola buenas, veran tengo una duda: Tengo una aplicacion que actualiza mediante update perfectamente los datos de mi base de datos mysql. Hasta ahi bien. ...
  #1 (permalink)  
Antiguo 12/07/2014, 09:58
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
No borrar con variable vacia su valor previo en una bbdd

Hola buenas, veran tengo una duda:

Tengo una aplicacion que actualiza mediante update perfectamente los datos de

mi base de datos mysql.

Hasta ahi bien.


El problema que te tengo es que si tengo dos campos en el formulario y en la base de datos ya estan rellenados previamente sus respectivos campos con datos.


Si en el formulario de esos dos apartados me dejo uno sin rellenar, con la intencion de actualizar solo un campo de los dos que son.


Pues me actualiza el campo que queria, si, pero el otro al no haberlo rellenado en el formulario previamente , me borra su dato correspondiente en la base de datos que tenia ya guardado.



Como puedo hacer para que esto no suceda.


Con otras palabras:

Como puedo hacer para que si una variable esta vacia, no me borre su valor que tenga ya en la base de datos.


ejem:



Código MySQL:
Ver original
  1. mysql_query("UPDATE cat_administracion_empresa SET
  2.        
  3.         nombre_curso = '$nombre_curso',
  4.  
  5.         comentario = '$comentario'  WHERE id_curso = '$id_curso' "



Gracias de antemano
  #2 (permalink)  
Antiguo 12/07/2014, 10:08
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 9 meses
Puntos: 67
Respuesta: No borrar con variable vacia su valor previo en una bbdd

Prueba con:

Código PHP:
$Consulta 'UPDATE cat_administracion_empresa SET';
if(
$nombre_curso != ''){
    
$Consulta .= " nombre_curso = '$nombre_curso'";
}
if((
$nombre_curso != '') && ($comentario != '')){
    
$Consulta .= ',';
}
if(
$comentario != ''){
    
$Consulta .= " comentario = '$comentario'";
}
$Consulta .= " WHERE id_curso = '$id_curso';";
   
mysql_query($Consulta); 
Esto te formaría la consulta en relación a si as metido o no los datos.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #3 (permalink)  
Antiguo 12/07/2014, 10:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: No borrar con variable vacia su valor previo en una bbdd

Pero si la variable/s estuvieran vacias que es lo que harian?

No se si lo pillo bien.

Una cosa es comprobar que si esta llena la variable entonces haga update.

pero si la variable esta vacia , dicha variable no deberia actualizar con "la nada" su campo correspondiente en la bbdd, y menos si estuviera dicho campo de la base de datos llenado con datos previamente.



No termino de enterder bien el codigo que has puesto.



  #4 (permalink)  
Antiguo 12/07/2014, 11:02
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 9 meses
Puntos: 67
Respuesta: No borrar con variable vacia su valor previo en una bbdd

Si la variable esta vacía, simplemente no se mete en la consulta, y si la variable tiene algo hace que con ".=" se concatene a la consulta.
De ahí que te pusiera que esto te terminaría formando la consulta completa.


Ejemplo del funcionamiento:
$Consulta Vale UPDATE cat_administracion_empresa SET WHERE id_curso = '$id_curso';
Compruebo si $nombre_curso tiene algo, si lo tiene a $Consulta le agrego nombre_curso = '$nombre_curso'
Por lo que consulta se quedaría así:
UPDATE cat_administracion_empresa SET nombre_curso = '$nombre_curso' WHERE id_curso = '$id_curso';
Aria lo mismo con $comentario si tiene algo le agrego comentario = '$comentario'
y consulta quedaría asi:
UPDATE cat_administracion_empresa SET nombre_curso = '$nombre_curso', comentario = '$comentario' WHERE id_curso = '$id_curso';
La parte roja es la que varia en función de los datos.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Última edición por bookmaster; 12/07/2014 a las 11:19
  #5 (permalink)  
Antiguo 12/07/2014, 12:07
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: No borrar con variable vacia su valor previo en una bbdd

bookmaster, es que sabes lo que pasa tengo una UPDATE a mysql muy muy muy larga,

y el nombre_curso es solo uno de los campos.

si tengo que hacerlo extensible con todos los campos va a ser kilometrico.


fijate la consulta es esta:


Código MySQL:
Ver original
  1. mysql_query("UPDATE cat_administracion_empresa SET
  2.        
  3.         nombre_curso = '$nombre_curso',
  4.  
  5.         comentario = '$comentario',
  6.        
  7. nombre_tema_1 = '$nombre_tema_1', nombre_tema_2 = '$nombre_tema_2', nombre_tema_3 = '$nombre_tema_3', nombre_tema_4 = '$nombre_tema_4', nombre_tema_5 = '$nombre_tema_5',    
  8.  
  9. nombre_tema_6 = '$nombre_tema_6', nombre_tema_7 = '$nombre_tema_7', nombre_tema_8 = '$nombre_tema_8', nombre_tema_9 = '$nombre_tema_9', nombre_tema_10 = '$nombre_tema_10',  
  10.  
  11. contenido_tema_1 = '$contenido_tema_1', contenido_tema_2 = '$contenido_tema_2', contenido_tema_3 = '$contenido_tema_3', contenido_tema_4 = '$contenido_tema_4', contenido_tema_5 = '$contenido_tema_5',
  12.  
  13. contenido_tema_6 = '$contenido_tema_6', contenido_tema_7 = '$contenido_tema_7', contenido_tema_8 = '$contenido_tema_8', contenido_tema_9 = '$contenido_tema_9', contenido_tema_10 = '$contenido_tema_10'
  14.        
  15.         WHERE id_categoria_foranea = '$id_categoria_foranea' AND id_curso = '$id_curso'",$link);


el preguntarte lo de antes es por si habia alguna forma mas digamos sencilla o compacta para aplicarla a este tocho que te acabo de poner
  #6 (permalink)  
Antiguo 12/07/2014, 12:18
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 9 meses
Puntos: 67
Respuesta: No borrar con variable vacia su valor previo en una bbdd

Lo único que se me ocurre para que sea mas "compacto" es que metas los valores en un array y después lo recorras haciendo la comprobación siendo la estructura así:

$Valores = Array con los datos;
$Consulta = Lo que te puse antes para montarla
$ContadorComa = 0;
Recorre $Valores{
ContadorComa = + 1
Compruebo si el valor tiene datos, si lo tiene le agrego a la consulta sino pues no meto nada mas.
compruebo si el contador de la coma es igual al numero total de registros, si es menor le agrego la coma a la consulta.
}
$Consulta .= El final de la consulta con el WHERE

Te he puesto lo que sería la lógica para hacerlo, faltaría codificarlo bien para ponerlo en marcha.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #7 (permalink)  
Antiguo 12/07/2014, 12:18
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 14 años, 5 meses
Puntos: 28
Respuesta: No borrar con variable vacia su valor previo en una bbdd

has intentando usar:

Código PHP:
Ver original
  1. if(empty($variable)){
  2.    ejecutar consulta X
  3. }else{
  4.    ejecutar consulta Y
  5. }
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Etiquetas: bbdd, formulario, mysql, previo, valor, variable
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 10:30.