Foros del Web » Programando para Internet » PHP »

update

Estas en el tema de update en el foro de PHP en Foros del Web. hola: mediante una pagina inserto un mismo valor en dos tablas distintas. Pero luego vuelvo a una de ellas para seguir insertando valores, no quiero ...
  #1 (permalink)  
Antiguo 03/01/2003, 08:06
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
update

hola:

mediante una pagina inserto un mismo valor en dos tablas distintas. Pero luego vuelvo a una de ellas para seguir insertando valores, no quiero q me cree una nueva linea sino q en la misma liena doinde inserto el registro me inserte los demas datos.

he oido q se deberia de hacer con un update, pero no tengo ni idea como se hace, seria sustituyendo en lugar de insert update?

un saludo


gracias
  #2 (permalink)  
Antiguo 03/01/2003, 08:10
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
la forma es asi

UPDATE nom_tabla SET nom_campo = 'nuevo_valor' WHERE alguna_condicion

Saludos
  #3 (permalink)  
Antiguo 03/01/2003, 08:14
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
...

tiene que ir obligatoriamente la condicion?

como decirle q lo inserte el la ultima linea q se ha creado?
  #4 (permalink)  
Antiguo 03/01/2003, 08:25
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
no debe ir obligatoriamente, pero si no va, cambiaria todas los valores de los campos con ese nombre en la tabala, la condicion es para dar especififco donde quieres cambiar, por ejemplo WHERE id=3, de ese modo solo cambias el valor donde id sea 3, para insertar en el ultimo registro antes deberias obtenerlo y sacas la id, entonces hasces WHERE id = $id

Saludos
  #5 (permalink)  
Antiguo 03/01/2003, 08:42
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
podria...

podria poner:

UPDATE aviso_tradicional SET tipo, necesidades = %s, %s where condition fecha_hora=$fecha_hora

?

te explico quiero q me lo meta en la ultima fecha que haya incluido.

un saludo

gracias
  #6 (permalink)  
Antiguo 03/01/2003, 08:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El Update en ese caso ya debe ser condicinal a un campo determinado .. Ejemplo .. al hacer tu Insert seguramente tienes algun campo autonumerico por ahi tipo ID que ha generado una cuenta mas del mismo y le ha asignado ese nuevo ID a ese registro creado .. Bien, ese es el que tienes que usar en el Update de ese mismo campo ...

Si estas seguro que entre la creacion de ese ID autonumerico y el siguiente Update no hay mas interaccion con esa tabla en uso .. puedes usar LAST_INSERT_ID() de Mysql .. con eso obtienes justo ese ultmio ID generado por un Insert en campos autoincrementales ..

Serial algo así:
UPDATE nom_tabla SET nom_campo = 'nuevo_valor' WHERE id=LAST_INSERT_ID()

Eso si, insisto .. si esa tabla es probable que sea accedida en ese intervalo de tiempo entre el Insert y el Update deberas guardarte temporalmente ese ID generado por el Insert (bien sea con un LAS_INSERT_ID() lo obtienes o haciendo una consulta bajo otra condicion WHERE de otro campo q sepas su valor ...) para cuando tengas que hacer el Update .. lo uses (puedes guardarlo en una session o cookie por ejemplo).

Un saludo,
  #7 (permalink)  
Antiguo 03/01/2003, 08:51
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
pero

podria insertar mas de un registro al mismo tiempo, es decir,

"UPDATE aviso_tradicional SET tipo, necesidades, dia= '$tipo', '$necesidades', '$dia' where condition fecha_hora = LAST_INSERT_fecha_hora()"
  #8 (permalink)  
Antiguo 03/01/2003, 08:56
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
y..

y si no es autoincrementable (mi campo como he dicho antes se crea con la fecha/hora de cuando se introduce otro dato en otra tabla).

un saludo


gracias
  #9 (permalink)  
Antiguo 03/01/2003, 08:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
LAST_INSERT_fecha_hora() ... esto no existe en Mysql .. lo que veas tipo algo() en mysql es una funcion y su sintax es la que se indique..

Lo que tu prendes en ese caso de fechas seria formar un condicional bajo el campo fecha tipo

WHERE fecha = '$fecha'

siendo $fecha='fecha en el mismo formato q fecha de tu BD';

igual que se usa el operador = .. podria ser > (mayor q) .. < (menor q) .. etc

Un saludo,
  #10 (permalink)  
Antiguo 03/01/2003, 09:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo ideal en la mayoria de modelo de datos .. es tener un campo autonumerico tipo "id" .. que será Unico y autoincremental .. Luego tienes el resto de campos q requieras .. como ese de fecha y los que necesites ..

Ese tipo de campos "ID" autoincremental y único sirven para hacer tareas como las que estamos intentando hacer. Tambien te servirá para identificar ese campo de forma "unica" a la hora de hacer "Updates" o mejor aun de hacer "Delete" .. Siempre es recomendable tener un campo que sea de valor "Unico" .. podria darse el caso de "concurrencia" en los datos (un par de campos con la fecha igual .. etc ...)

Un saludo,
  #11 (permalink)  
Antiguo 03/01/2003, 09:04
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
ok

gracias, intentare a ver si sale algo.

un saludo

feliz año¡¡
  #12 (permalink)  
Antiguo 03/01/2003, 09:21
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
por q?

por q me puede dar error en esta linea?

$insertSQL = sprintf("UPDATE aviso_tradicional SET tipo='$tipo, necesidades='$necesidades', dia='$dia', horario='$horario', telf_contacto='$telf_contacto', contacto='$contacto', obs = '$obs' where condition fecha_hora = LAST_INSERT_id()"),
  #13 (permalink)  
Antiguo 03/01/2003, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si pones el error que te dá Mysql . no estaremos haciendo congeturas ...

Ademas .. (lo expliqué mas arriba) .. ese LAST_INSERT_ID() da el ultimo ID generado por un campo autoincremental ..

Creastes ese campo ID (o el nombre que quieras) AUTOINCREMT y único?

Un saludo,
  #14 (permalink)  
Antiguo 03/01/2003, 10:29
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 15 años, 11 meses
Puntos: 1
ok

ok, cree un nuevo tema con lo que me ocurre ahora.

muchas gracias.
  #15 (permalink)  
Antiguo 03/01/2003, 11:27
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
te recomiendo los siguientes enlaces:

Sobre implementacion y normalización de bases de datos
http://bulmalug.net/impresion.phtml?nIdNoticia=483

Un manual de SQL:
http://usuarios.lycos.es/manualesvarios

1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
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 14:22.