Foros del Web » Programando para Internet » PHP »

Actualizar sólo algunos campos

Estas en el tema de Actualizar sólo algunos campos en el foro de PHP en Foros del Web. Buenas a todos, Tengo una tabla MAQUINAS con cuatro campos: id_maq, nombre, fechaentrada, fechasalida. Cuando se da de alta una máquina se rellenan todos los ...
  #1 (permalink)  
Antiguo 12/07/2016, 10:22
 
Fecha de Ingreso: julio-2013
Mensajes: 44
Antigüedad: 10 años, 9 meses
Puntos: 0
Actualizar sólo algunos campos

Buenas a todos,

Tengo una tabla MAQUINAS con cuatro campos: id_maq, nombre, fechaentrada, fechasalida.
Cuando se da de alta una máquina se rellenan todos los campos menos fechasalida. Cuando se le
da salida a la máquina se rellena el que faltaba, fechasalida, y aprovecho para actualizar el nombre
de la máquina si es necesario.

Si un día quiero actualizar el nombre hago un UPDATE del nombre pero no de fecha salida, puesto
que ya se le dió salida a la máquina y no quiero volver a modificar la fecha

Ej:

UPDATE maquinas SET nombre = maq02, fechasalida = 12-07-2016 WHERE id_maq = 125 AND fechasalida is NULL

Este ejemplo sólo me actualiza el nombre y fechasalida en la máquina id_maq=125 y en el caso de que fechasalida sea NULL
Pero quiero que también me actualice sólo el nombre si fechasalida ya existe

Gracias
  #2 (permalink)  
Antiguo 12/07/2016, 10:34
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Actualizar sólo algunos campos

Haces la comprobación con una funcion(como opcion) para ver si el campo de fechasalida no es igual a NULL... y asi obtienes para actualizar solo nombre o ambos.

tendras que generar 2 sentencias, 1 para cada caso... o armar en base de variables tu sentencia

Código PHP:
Ver original
  1. $fecha_salida = ""; //PROCESO PARA OBTENER el valor de fechasalida antes de comenzar
  2. $fecha_s = "";
  3.  
  4. if($fecha_salida == NULL){  //o false, o lo que pongas que pueda devolver
  5. $fecha_s = ", fechasalida = NOW()"; // o definir fecha antes
  6. }
  7. $sql_a_ocupar =  "UPDATE maquinas SET nombre ='maq02' $fecha_s  WHERE id_maq = 125"
  8. //si es NULL llenara con la fecha NOW(), si no es NULL imprimira nada("")....  y puedes seguir con el
  9. //procedimiento para almacenar o actualizar

Algo basico, pero funcional
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 12/07/2016, 10:38
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: Actualizar sólo algunos campos

PHP es programación y programación es OFF TOPIC en los foros de Base de Datos.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 12/07/2016, 11:13
 
Fecha de Ingreso: julio-2013
Mensajes: 44
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Actualizar sólo algunos campos

Señor gnzsoloyo, la sentencia que quiero construir es algo así como:

UPDATE maquinas SET nombre = maq02, fechasalida = 12-07-2016 WHERE id_maq = 125 AND fechasalida is NULL

en mysql, no corresponde eso a Bases de Datos?


Señor petit89, gracias. Pensé en hacerlo con una función y una sentencia para cada caso, pero quiero saber si se puede hacer directamente en mysql, con alguna condición

Ej:

IF fechasalida is null THEN nombre=maq02, fechasalida=12-07-2016
ELSE IF fechasalida is not null THEN nombre=maq02

Hacer eso pero en mysql, donde también se pueden incluir condiciones

Gracias
  #5 (permalink)  
Antiguo 12/07/2016, 12: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: Actualizar sólo algunos campos

Moví para no borrar la respuesta que te dieron, que es pura programación en PHP.

Código MySQL:
Ver original
  1. UPDATE maquinas SET nombre = maq02, fechasalida = 12-07-2016
  2. WHERE id_maq = 125 AND fechasalida is NULL

Para MySQL, está parcialmente mal escrita...
Código MySQL:
Ver original
  1. UPDATE maquinas
  2. SET nombre = 'maq02',
  3.     fechasalida = '2016-07-12'
  4. WHERE id_maq = 125
  5.     AND fechasalida is NULL;

MySQL no entiende el contenido de variables en PHP ni en ningun lenguaje. Los valores de cadena deben estar entre apostrofos, y las fechas deben ser de tipo DATE, DATETIME o TIMESTAMP, que requiere el formato AAAA-MM-DD.

Fuera de eso, es posible hacer lo que pretendes, pero hay que crear la logica completa dentro de un stored procedure, dado que tiene muchas cosas a evaluar.
__________________
¿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 12/07/2016, 13:14
 
Fecha de Ingreso: julio-2013
Mensajes: 44
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Actualizar sólo algunos campos

Entonces para hacerlo es necesario crear un procedimiento almacenado?

Estoy buscando y buscando cómo hacerlo pero no me aclaro

Si alguien conoce algún sitio donde expliquen algo parecido a lo que quiero hacer

Gracias a todos

Etiquetas: campo, campos, fecha, mysql, tabla
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 18:29.