Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Evitar Doble insert y solo sumar una columna

Estas en el tema de Evitar Doble insert y solo sumar una columna en el foro de Mysql en Foros del Web. Hola tengo una duda y nose como hacerlo, veamos yo agrego directamente asi: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original INSERT INTO lista ( descripcion , ...
  #1 (permalink)  
Antiguo 15/04/2013, 18:11
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Mensaje Evitar Doble insert y solo sumar una columna

Hola tengo una duda y nose como hacerlo, veamos yo agrego directamente asi:

Código MySQL:
Ver original
  1. INSERT INTO lista (descripcion,articulos)
  2. VALUES ('".$nombre."', ".$totalArticulos.");

pero como puedo hacer que cuando agregue uno si es que ya existe solo aumente el valor?

explico n.n:

mi pagina contiene 2 input el cual pide el articulo y el total del articulo (un ejemplo de tienda) si agrega y todo bien el problema es cuando agrego uno que ya esta como puedo resolverlo saludos

Última edición por gnzsoloyo; 15/04/2013 a las 19:01 Razón: Codigo de programacion no permitido
  #2 (permalink)  
Antiguo 15/04/2013, 19:03
 
Fecha de Ingreso: marzo-2013
Ubicación: España
Mensajes: 42
Antigüedad: 11 años, 1 mes
Puntos: 4
Respuesta: Evitar Doble insert y solo sumar una columna

Si quieres saber si existe el articulo deberías de comprobar que existe.
Select descripcion from lista where descripcion like "&$nombre%"

Despues compruebas que te devuelve algún registro( es decir que existe el articulo)
Código MySQL:
Ver original
  1. UPDATE lista SET articulos= articulos+totalArticulosno
  2. WHERE descripcion like "&$nombre%"

Si no existe articulo, insert.
Código MySQL:
Ver original
  1. INSERT INTO lista (descripcion,articulos)
  2. VALUES ('".$nombre."', ".$totalArticulos.")

Yo haría algo así...
Saludos
Cita:
Editado: Código de programación no permitido en Foros de Bases de Datos.

Última edición por gnzsoloyo; 15/04/2013 a las 20:21 Razón: Código de programación no permitido en Foros de Bases de Datos.
  #3 (permalink)  
Antiguo 16/04/2013, 09:21
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Evitar Doble insert y solo sumar una columna

Cita:
Iniciado por ioniben Ver Mensaje
Si quieres saber si existe el articulo deberías de comprobar que existe.
Select descripcion from lista where descripcion like "&$nombre%"

Despues compruebas que te devuelve algún registro( es decir que existe el articulo)
Código MySQL:
Ver original
  1. UPDATE lista SET articulos= articulos+totalArticulosno
  2. WHERE descripcion like "&$nombre%"

Si no existe articulo, insert.
Código MySQL:
Ver original
  1. INSERT INTO lista (descripcion,articulos)
  2. VALUES ('".$nombre."', ".$totalArticulos.")

Yo haría algo así...
Saludos

perfecto deja probar pero creo que tienes mucha razon ya que si veo que existe hace el update si no hace el insert veo y te aviso como quedo gracias
  #4 (permalink)  
Antiguo 16/04/2013, 10:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Evitar Doble insert y solo sumar una columna

Hola emmaghost:

Checa esta liga, si tienes definida una llave, la cláusula ON DUPLICATE KEY servirá para hacer lo que quieres en una sola instrucción.

http://dev.mysql.com/doc/refman/5.0/...duplicate.html

Saludos
Leo.
  #5 (permalink)  
Antiguo 16/04/2013, 10:19
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Evitar Doble insert y solo sumar una columna

Cita:
Iniciado por ioniben Ver Mensaje
Si quieres saber si existe el articulo deberías de comprobar que existe.
Select descripcion from lista where descripcion like "&$nombre%"

Despues compruebas que te devuelve algún registro( es decir que existe el articulo)
Código MySQL:
Ver original
  1. UPDATE lista SET articulos= articulos+totalArticulosno
  2. WHERE descripcion like "&$nombre%"

Si no existe articulo, insert.
Código MySQL:
Ver original
  1. INSERT INTO lista (descripcion,articulos)
  2. VALUES ('".$nombre."', ".$totalArticulos.")

Yo haría algo así...
Saludos

mmm gracias a tu idea de arriba logre ya que actualice solo que no ocupe un like simplemente puse la variable comparada ya que como el valor de nombre lo tengo igual de la base de datos no dejo al usuario meter el el nombre entonces siempre existira en la base de datos mira termino asi:

Código MySQL:
Ver original
  1. UPDATE lista SET articulos = articulos + ".$totalArticulos." WHERE descripcion = '".$nombre."

ahora mi problema es q nose como hacer si esq existe agregue o solo actualize ya tengo las sentencias pero como seria el if? si me pudieran ayudar pongo abajo las sentencias:

esta si no esta en la base de datos lo agregue:
Código SQL:
Ver original
  1. INSERT INTO lista (descripcion,articulos)
  2. VALUES    ('".$nombre."',".$totalArticulos.") ;

y esta si esta lo actualice por separado ya lo hace solo que me falta que lo haga si esta o no
Código MySQL:
Ver original
  1. UPDATE lista SET articulos = articulos + ".$totalArticulos."
  2. WHERE descripcion = '".$nombre."
saludos

Última edición por gnzsoloyo; 16/04/2013 a las 12:05 Razón: Codigo de programacion no permitido
  #6 (permalink)  
Antiguo 16/04/2013, 10:24
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Evitar Doble insert y solo sumar una columna

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola emmaghost:

Checa esta liga, si tienes definida una llave, la cláusula ON DUPLICATE KEY servirá para hacer lo que quieres en una sola instrucción.

http://dev.mysql.com/doc/refman/5.0/...duplicate.html

Saludos
Leo.
am si tengo fijada una llave, solo que no sabia lo q me mandaste O.O!! interesante pero lo logre como dic abajo.. bueno en este caso arriba solo que me falta ahora la condicion saludos y gracias :)
  #7 (permalink)  
Antiguo 16/04/2013, 11:23
 
Fecha de Ingreso: marzo-2013
Ubicación: España
Mensajes: 42
Antigüedad: 11 años, 1 mes
Puntos: 4
Respuesta: Evitar Doble insert y solo sumar una columna

Cita:
Iniciado por emmaghost Ver Mensaje
mmm gracias a tu idea de arriba logre ya que actualice solo que no ocupe un like simplemente puse la variable comparada ya que como el valor de nombre lo tengo igual de la base de datos no dejo al usuario meter el el nombre entonces siempre existira en la base de datos mira termino asi:

Código HTML:
Ver original
  1. $consulta = "UPDATE lista SET articulos = articulos + ".$totalArticulos." WHERE descripcion = '".$nombre."'";

ahora mi problema es q nose como hacer si esq existe agregue o solo actualize ya tengo las sentencias pero como seria el if? si me pudieran ayudar pongo abajo las sentencias:

Código SQL:
Ver original
  1. esta si no esta en la base de datos lo agregue:
  2.  
  3.  $consulta = "INSERT INTO lista (descripcion,articulos)
  4.                     VALUES    ('".$nombre."',".$totalArticulos.") ";
  5.  
  6. y esta si esta lo actualice por separado ya lo hace solo que me falta que lo haga si esta o no
  7.  
  8.  $consulta = "UPDATE lista SET articulos = articulos + ".$totalArticulos."
  9.                        WHERE descripcion = '".$nombre."'";

saludos
Puedes mirar si te devuelve mas de 0 filas, con mysql_fetch_row($sql) mayor que 0.
si es mayor que 0 quiere decir que existe registro, si no es mayor quiere decir que no te devuelve filas, es decir que no existe.
Saludos.
Y perdón no sabia que no podía poner código de programación en este foro.
  #8 (permalink)  
Antiguo 16/04/2013, 11:41
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Evitar Doble insert y solo sumar una columna

mmm si pero el problema es que nose como hacerlo osea la condicion si, pero en codigo no, mm
como dics si encuentra que actualize pero como sacaria ese "si encuentra" y si no que simplemente meta los datos, el problema es en el como iria n.n

Código MySQL:
Ver original
  1. SELECT descripcion FROM `lista` WHERE descripcion = '".$nombre"';
  2.  
  3. INSERT INTO lista (descripcion,articulos)
  4. VALUES    ('".$nombre."',".$totalArticulos.")
  5.  
  6. UPDATE lista SET articulos = articulos + ".$totalArticulos."
  7. WHERE descripcion = '".$nombre."'";

el chiste que la condicion del if nose como ira espero me ayuden gracias

Última edición por gnzsoloyo; 16/04/2013 a las 12:07 Razón: Codigo de programacion no permitido
  #9 (permalink)  
Antiguo 16/04/2013, 12:02
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Evitar Doble insert y solo sumar una columna

Hola emmaghost:

Tu pregunta ya no es de MySQL, sino de PHP, temas de programación están prohibidos en este foro, no debes incluir código de ningún lenguaje que no sea SQL, ojo con eso. Estas prácticas pueden acarrear que los moderadores modifiquen tus post's eliminando el todo el código o incluso que puedan eliminar el post por completo.

Puedes publicar tu pregunta en el foro de PHP

http://www.forosdelweb.com/f18/

y esperar a que te respondan ahí..

¿Y por cierto, probaste la solución que te puse? no lo creo, pues te estás complicando con algo que debería resultar más sencillo.

Saludos
Leo.
  #10 (permalink)  
Antiguo 16/04/2013, 12:08
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: Evitar Doble insert y solo sumar una columna

El control de selecciones de consultas por programación es OFF-TOPIC en lso foros de bases de datos.
Si deseas tratar ese detalle deberás postearlo en el Foro de PHP, o bien si lo deseas te muevo el post para allá.

No está permitido poner codigo de programación en los Foros de Bases de Datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 16/04/2013, 21:14
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: Evitar Doble insert y solo sumar una columna

Thread cerrado.
El forista continuó el tema en: http://www.forosdelweb.com/f18/if-co...valor-1047096/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: columna, doble, insert
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:28.