Foros del Web » Programando para Internet » PHP »

update con select

Estas en el tema de update con select en el foro de PHP en Foros del Web. Hola me sucede lo siguiente, resulta que tengo una tabla en mi base de datos a la cual le hago un update a un campo: ...
  #1 (permalink)  
Antiguo 17/07/2008, 17:40
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
update con select

Hola me sucede lo siguiente, resulta que tengo una tabla en mi base de datos a la cual le hago un update a un campo:
"UPDATE jos_df_contact set Notas='".$nota."' where Id= ".$correos.""; pero siempre que hago el update me sobreescribe lo que esta anteriormente en el campo
pense en algo como hacer primero el select y luego concatenar con el update pero no me funciona; en este mismo foro vi que hacian algo con un inner join pero era para dos tablas...pregunta como hago para esto si es con una sola tabla que trabajo
  #2 (permalink)  
Antiguo 17/07/2008, 21:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: update con select

no se entiende muy bien tu pregunta tienes que escribir mas codigo para entenderte mejor... por lo que describes creo que quieres hacer lago como esto

$sql="select * from jos_df_contact;"
$reg=mysql_query($sql,$cn) or die...;
if ($rs=mysql_fecht_array($reg){
$nota=$rs['notas'];
$correos=$rs[id];
}
$sql="UPDATE jos_df_contact set Notas='$nota' where Id='$correos'";
..
..

si estas tratando de hacer eso obviamente te van a coger los datos que tenias antes puesto que en ningun momento estas modificando los datos...
  #3 (permalink)  
Antiguo 18/07/2008, 07:26
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

Hola que tal, bueno voy a explicarme mejor, lo que pasa es que quiero hacer un update a la tabla, especificamente a ese campo pero anidarla con los datos que tenia anteriormente, algo como "actualize el campo con datos anteriores+datos nuevos, eso es lo que quiero", ya que cuando actualizo me borra los datos anteriores y solo me deja los datos nuevos, no se si me explique bien.

Gracias
  #4 (permalink)  
Antiguo 18/07/2008, 07:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

UPDATE tabla SET campo = REPLACE (campo, campo, CONCAT(campo,'añadido'))
  #5 (permalink)  
Antiguo 18/07/2008, 07:52
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

Hola mira ya me funciona esa parte, lo que hice fue:

$sqla = "SELECT Notas FROM jos_df_contact where Id=".$correos."";
$result = mysql_query($sqla,$conx) or die(mysql_error());//ejecuto select
while($row=mysql_fetch_array($result))
{
$var1= $row['Notas'];
}
$sql = "UPDATE jos_df_contact set Notas='".$var1." ".$nota."' where Id= ".$correos."";
mysql_query($sql) or die(mysql_error());//ejecuto update

Era algo sencillo que me tenia estancado, pero ahora tengo una preguntita, existe alguna propiedad que me diga si el campo notas de la base de datos, esta vacio; es que necesito que me valide que cuando este vacio, haga el update sencillo y cuando tenga algo pregunte si deseo sobreescribir lo que existe o agregar a lo que existe.

Gracias
  #6 (permalink)  
Antiguo 18/07/2008, 08:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

¿Qué entiendes por vacío? Para evitar confusiones, debes saber que blanco, es decir, vacío, y nulo son dos cosas distintas. Y nulo puede aparecer como NULL o 0 en el caso de numéricos, si no se permite null.
tendrás que buscar así:
SELECT campo FROM tutabla WHERE campo <> '' OR campo is not null
Con eso en campos de texto habrás cubierto casi todo.
Si son números y quieres cambiar los campos cuyo dato sea 0, tendrás que añadir otro OR
SELECT campo FROM tutabla WHERE campo <> '' OR campo is not null OR campo != 0
Prueba haciendo consultas antes de hacer actualizaciones.

Para lo que quieres, una estructura como esta
UPDATE tabla SET campo = IF (campo is null or campo LIKE '', 'dato1', concat(campo, 'dato1'))
  #7 (permalink)  
Antiguo 18/07/2008, 08:17
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

bueno lo que yo quiero saber es si esta en blanco, es decir no se ha escrito nada... bueno probare como me dices

Gracias
  #8 (permalink)  
Antiguo 18/07/2008, 09:08
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

hola lo que pasa es que trato de traer los registros que estan en blanco asi

$sql="select * from jos_df_contact where Notas <>";

y no me funciona en que me puedo estar equivocando

Gracias
  #9 (permalink)  
Antiguo 18/07/2008, 09:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

Cita:
Iniciado por captainfercho Ver Mensaje
hola lo que pasa es que trato de traer los registros que estan en blanco asi

$sql="select * from jos_df_contact where Notas <>";

y no me funciona en que me puedo estar equivocando

Gracias
Si notas es INT, es decir, numérico y tenías NOT NULL, al borrar deberías buscar
SELECT * FROM jos_df_contact WHERE NOTAS =''
o SELECT * FROM jos_df_contact WHERE NOTAS = 0

pero si es varchar
SELECT * FROM jos_df_contact WHERE NOTAS LIKE ''

y si has dejado que acepte null
al borrar podría escribir NULL
SELECT * FROM jos_df_contact WHERE NOTAS IS NULL

para cubrir todo
SELECT * FROM jos_df_contact WHERE NOTAS IS NULL OR NOTAS = '' OR NOTAS like '' OR NOTAS = 0

Prueba y nos dices
  #10 (permalink)  
Antiguo 18/07/2008, 09:35
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

hola que tal pues lo hice asi y me funciono $sql="select * from jos_df_contact where Notas is NULL";
es que en algunas ocasiones uno se estanca en cosas demasiado faciles, pero gracias a todos
  #11 (permalink)  
Antiguo 18/07/2008, 09:37
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

si como les hiba comentando notas es varchar y acepta null entonces lo hice como les comente anteriormente, pero seria mejor que lo cubriera todo?

SELECT * FROM jos_df_contact WHERE NOTAS IS NULL OR NOTAS = '' OR NOTAS like '' OR NOTAS = 0

si ya se el tipo de dato y lo que admite

Gracias
  #12 (permalink)  
Antiguo 18/07/2008, 09:50
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

ahora puedo meter esta sentencia en un if para que me muestre algun mensaje como nota vacia o algo por el estilo es decir la idea seria if("select * from jos_df_contact where Notas is NULL")

Mensaje vacio, o como seria..
  #13 (permalink)  
Antiguo 18/07/2008, 10:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

no sé si te he entendido bien, pero si lo que quieres es que actualice el valor del campo dependiendo de que sea NULL o no, puedes hacer esto:
UPDATE tabla SET campo = IF (campo IS NULL, 'textocuandoesnulo','textocuandonoesnulo')

Si lo que quieres hacer es que cuando el campo es nulo introduzca un valor y que si hay algo escrito, lo añada detrás

UPDATE tabla SET campo = IF (campo IS NULL, 'texto', REPLACE (campo, campo, CONCAT(campo,' texto'))
No lo he probado.

Espero que te sirva.
  #14 (permalink)  
Antiguo 18/07/2008, 10:52
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

probare y te contare
  #15 (permalink)  
Antiguo 18/07/2008, 11:12
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

mira lo que yo quiero hacer es lo siguiente:

si en el campo no hay registros haga un update normal es decir update table set campo='texto' where id=1;

pero si en el campo hay registros que pregunte:

desea sobreescribir o agregar; si el desea sobreescribir que haga un update normal, como el anterior, pero si el desea agregar, que haga como un update y concatene lo anterior que hay en el campo..
no se si me hice entender

Gracias
  #16 (permalink)  
Antiguo 18/07/2008, 12:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

Eso tendrás que hacerlo, creo, con programación.
  #17 (permalink)  
Antiguo 18/07/2008, 12:12
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: update con select

Hola captainfercho
Estas mezclando las cosas, tienes que ser mas claro en lo que preguntas:

Cita:
pero si en el campo hay registros que pregunte:
Esto solo lo resuelves con programación:

Cita:
si en el campo no hay registros haga un update normal es decir update table set campo='texto' where id=1;
(no conozco un update anormal )

Ya Jurena te contesto, te lo vuelvo a poner simplificando un poco

update tabla set campo = IF (emp_name IS NULL, 'texto', CONCAT(campo ,' nuevotexto')) where tabla_id = id


Cita:
si como les hiba comentando notas es varchar y acepta null entonces lo hice como les comente anteriormente, pero seria mejor que lo cubriera todo?
Si es acepta null , pues solo trabajar con IS NULL
Saludos !
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #18 (permalink)  
Antiguo 18/07/2008, 12:20
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

ok foreros, tienen razon estoy mezclando las cosas, pero me gustaria saber si alguno de ustedes tiene un codigo de ejemplo similar para que me puedan ayudar..

Gracias
  #19 (permalink)  
Antiguo 18/07/2008, 12:56
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

observen hago esto:

if($sqlv = "SELECT *FROM jos_df_contact where Notas IS NULL")
{
$sql = "UPDATE jos_df_contact set Notas='".$nota."' where Id=".$correos."";
mysql_query($sql) or die(mysql_error());
}
else{
if($sqlv = "SELECT *FROM jos_df_contact where Notas IS NOT NULL"){
//Nos traemos el registro del campo notas del id actual para evitar una sobreescritura de datos
$sqla = "SELECT Notas FROM jos_df_contact where Id=".$correos."";
$result = mysql_query($sqla,$conx) or die(mysql_error());//ejecuto select
while($row=mysql_fetch_array($result))
{
$var1= $row['Notas'];
}
$sql = "UPDATE jos_df_contact set Notas='".$var1." ".$nota."' where Id= ".$correos."";
mysql_query($sql) or die(mysql_error());//ejecuto update
echo "Actualizacion Exitosa\n";
echo "<input type=\"button\" name=\"volver\" title=Volver value=\"\" style=\"background-image:url(iconos/icono_flecha_volver.PNG); width:48px; height:48px; border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; cursor:pointer; background-color:#FFFFFF \" onClick=\"javascript:IrPagina('http://localhost/combo/pdf/MostrarActualizacion.php')\"/>";
}
}

pero solo funciona el if, no se porque nunca captura el else
  #20 (permalink)  
Antiguo 18/07/2008, 13:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: update con select

Amigo, pide mediante reporte que nuestro moderador te pase el hilo a PHP. Este, el de bases de datos, y además MySQL, no es el lugar. Aquí no escribimos código de ningún tipo, salvo sintaxis SQL tal y como la usamos en MySQL. Te ayudarán mucho mejor en ese otro foro.
  #21 (permalink)  
Antiguo 18/07/2008, 18:34
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: update con select

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #22 (permalink)  
Antiguo 19/07/2008, 07:49
 
Fecha de Ingreso: julio-2008
Mensajes: 92
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: update con select

Hola alguien sabe como ayudarme gracias
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 21:30.