Foros del Web » Programando para Internet » PHP »

Insert o Update

Estas en el tema de Insert o Update en el foro de PHP en Foros del Web. Compañeros(as) Tengo una duda y quiero ver si me pueden orientar, les cuento tengo una base datos xxxx con una tabla socios esta tabla esta ...
  #1 (permalink)  
Antiguo 02/10/2006, 14:22
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Insert o Update

Compañeros(as)

Tengo una duda y quiero ver si me pueden orientar, les cuento tengo una base datos xxxx con una tabla socios esta tabla esta compuesta por rut,nombre, nombre_usuario, pass, telefono, email,....

En esta tabla, tengo lleno solo los dos primeros campos rut y nombre eso es para validar que la persona que quiera registrarse sea socio, cuando yo se que es socio se llenarian los demas campos nombre_usuario, pass, telefono, email,.... y podria acceder a las demas paginas.

Mi duda va enfocada a esta parte, yo ya se que el usuario esta en la base de datos osea es socio, ahora necesito que ese socio se registre con su propio nombre de usuario y pass y llene los demas datos como son: telefono, email,.... .
Esto lo hago con con un Insert o con un Update, segun lo que he leido es con un Update lo que no entiendo es como decirle al script que necesito que me actualice los datos de Pepito con su rut 11111111 osea como ocuparia un where dentro de un Update.

Eso no mas....espero haberme explicado bien.

Muchas gracias de antemano por sugerencias.

Juan Pablo G.

Saludos desde Viña del Mar, CHILE.
  #2 (permalink)  
Antiguo 02/10/2006, 15:40
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola buenas,

Aqui te dejo un link,donde te dicen lo basico http://www.htmlpoint.com/sql/sql_10.htm , y si quieres mas info puedes entrar en esta otra pagina http://dev.mysql.com/doc/refman/5.0/es/index.html ,bueno espero haverte sido de ayuda.

Un Saludo..
  #3 (permalink)  
Antiguo 02/10/2006, 18:04
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias Compañero.......

Vamos a ver que podemos hacer......
  #4 (permalink)  
Antiguo 02/10/2006, 18:18
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
UPDATE ... ...where rut=11111
o
UPDATE ... ...where rut=55555
------------------------------
UPDATE ... ...where rut=$rut
  #5 (permalink)  
Antiguo 02/10/2006, 18:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Yo me acostumbré a usar replace en vez de insert, y vale también para modificaciones (update)... la sintaxis es la misma del insert (en vez de insert, replace)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 02/10/2006, 19:46
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
¿?

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Yo me acostumbré a usar replace en vez de insert, y vale también para modificaciones (update)... la sintaxis es la misma del insert (en vez de insert, replace)

Saludos
PERO CON EL REPLACE SE PUEDE OCUPAR EL WHERE, PODRIAS DAR UN EJEMPLO DE COMO SE HARIA CON EL REPLACE E INCLUIR EN TU EJEMPLO QUE OCUPES EL WHERE.
  #7 (permalink)  
Antiguo 02/10/2006, 20:08
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Me gustaria saber si lo que entendi esta bien.

Ya que en el criterio que va a buscar el where es una variable y esta variable puede que con tenga un numero o un string, se me imagina que el script es distinto para los dos casos, de todas formas les dejo lo que yo creoo que puede ser:

Ejemplo:

Código PHP:

Update socios
set nombre
=$nombrenombre_usuario=$nombre_usuario,pass=$contraseña,.....where rut=$rut; (Para el caso que rut contenga un numero)



ó 


Update socios
set nombre
=$nombrenombre_usuario=$nombre_usuariopass=$contraseña,.....where rut='$rut'; (Para el caso que rut contenga un String o texto
Esta bien planteado o tengo algun error.

Gracias Nuevamente
  #8 (permalink)  
Antiguo 02/10/2006, 20:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Esta "bien", solo por recomendacion aprende a escapar tus datos, asi te evitaras mas problemas en el futuro:
Código:
UPDATE `socios` SET `nombre`='$nombre', `nombre_usuario`='$nombre_usuario', `pass`='$contraseña' WHERE `rut`='$rut' LIMIT 1
Asi haces tu sintaxis mas clara y es mas facil ubicar errores.
  #9 (permalink)  
Antiguo 02/10/2006, 20:22
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias por tu respuesta, me gustaria saber eso de escapar datos esa es una comilla simple es como un acento al reves como saco eso.

¿esta en el codigo ascii?

Gracias nuevamente

Saludos
  #10 (permalink)  
Antiguo 02/10/2006, 20:45
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Si bien e leido la desventaja de hacer un REPLACE es que ejecuta dos acciones, eliminar el registro e insertar el nuevo.

Talves en tablas pequeñas no pase nada y seguramente es lo mejor, pero si existe la opcion

INSERT .... ON DUPLICATE KEY UPDATE .....

Que en basicamente hace lo mismo pero con menos riesgo de corromper las tablas con tanto movieminto de registros.
  #11 (permalink)  
Antiguo 02/10/2006, 20:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Es un acento invertido y sirve para definir datos que son como campos, en mi teclado la tengo al lado de la "p", y la saco sin shift.

Otra cosa no es simplemente poner ' (comilla simple) entre los datos, tambien tienes que hacer tratamiento de datos, por ejemplo usar: addslashes, mysql_escape_string, y otros para tratar tus datos.
  #12 (permalink)  
Antiguo 03/10/2006, 07:11
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Que esta malo

Compañeros(as).

Que esta malo aca:

Código PHP:
UPDATE socios SET
`nombre_usuario`='$nombre_usuario', `pass`='$contraseña',´telefono´='$telefono'´email´='$email'´anexo´=$anexo´centro_costo´='$centro_costo'
 
WHERE `rut`=$rut LIMIT 1
Me arroja este mensaje de error:
Parse error: parse error, unexpected T_STRING in C:\AppServ\www\2\registro_bd.php on line 134

La lina 134 es la que empieza el UPDATE...

Bueno compañeros espero que me puedan ayudar.
  #13 (permalink)  
Antiguo 03/10/2006, 08:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

juan007: Yo no usaría un nombre de variable con eñe... se supone que son letras del alfabeto anglosajón (sin acentos ni eñes...) y el carácter "_" (subrayado o guión bajo) y no sé si algún otro...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #14 (permalink)  
Antiguo 03/10/2006, 09:30
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Ya esta solucionado...gracias caricato por tu sugerencia, me actualiza bien, pero me aparecio otra duda como puedo decir que la actualizacion fue correcta, por pantalla indicandole al usuario.

De todas formas asi quedo la consulta:

Código PHP:

$result
=mysql_query("UPDATE socios                
SET nombre_usuario='$nombre_usuario', pass='$contraseña', 
telefono=$telefono, email='$email', anexo=$anexo, centro_costo='$centro_costo'
WHERE rut=$busca_rut LIMIT 1"
,$conexBD)or die("Error de actualizacion, causa: " mysql_error()); 
servira eso del mysql_num_rows o algo parecido para darme cuanta que la actualizacion fue la correcta.

Se agradece a todos por su cooperacion.
  #15 (permalink)  
Antiguo 03/10/2006, 09:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
de hecho es mysql_affected_rows, ya que num_rows es para contar las filas de un resultado, y mysql_affected_rows te devuelve las filas afectadas por un query (como del tipo INSERT, o UPDATE, o DELETE).
  #16 (permalink)  
Antiguo 03/10/2006, 10:33
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias GatorV por tu ayuda esta solucionado.

mil gracias

Juan Pablo G.
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 17:48.