Foros del Web » Programando para Internet » PHP »

PHP y Mysql update en DB

Estas en el tema de PHP y Mysql update en DB en el foro de PHP en Foros del Web. Saludos! Desde PHP como yo podria actualizar una informacion las veces que esta se repita ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $query = "UPDATE ...
  #1 (permalink)  
Antiguo 17/08/2010, 16:20
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Información PHP y Mysql update en DB

Saludos!

Desde PHP como yo podria actualizar una informacion las veces que esta se repita
ejemplo:

Código PHP:
Ver original
  1. $query = "UPDATE productos SET cantidad = cantidad+1 WHERE clienteid IN ('1','2','4','3','4','4')";
  2.  
  3. mysql_query($query);

De manera tal que el clienteid 4 sea afectado tantas veces aparesca dentro del IN, ya que cada vez que aperece es un producto que este compro y deben contarse .

Si pruebas el codigo solo se le sumara 1 al clienteid, pero este deberia sumar 3 ya que aparece 3 veces ^^!

Este es solo un ejemplo, en realidad son millones de clienteid, solo es para que se entienda la idea

Grax Espero RespuesTas ! ^^

Edito: En caso de que existe una manera desde el mismo MySql seria mejor todavia :D!

Última edición por Bigcrime; 17/08/2010 a las 16:28
  #2 (permalink)  
Antiguo 17/08/2010, 16:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: PHP y Mysql update en DB

Hola, lo mejor sería que por cada compra haga un update, asi actualizas un id por vez y en cuanto a la cantidad la podes agregar a la sentencia.

Código PHP:
Ver original
  1. $cantidad = 3;
  2.  
  3. $query = "UPDATE productos SET cantidad = cantidad+".$cantidad."  WHERE clienteid...
  #3 (permalink)  
Antiguo 17/08/2010, 17:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

Ese es el problema mi brother!! ^^ ese es el Knock Out que quiero evitar :P
de ser evitable claro esta!

Necesito reducir tiempo, porq este proceso se realizara cada cierto tiempo en el dia, entonces imaginate un update por cada usuario :D.

Acabo de hacer una prueba de tiempo con 700,000 usuarios:

UPDATE por cada usuario: 83 segundos
Todos los usuarios en 1 UPDATE: 0.08 segundos

Como puedes ver la diferencia es !!! divina ^^, se puede lograr solo si ningun usuario se repite pero mi problema es que existiran usuarios repetidos los cuales no se contaran!!! :(!!

por lo tanto esa es la question, como hacer que se refleje la cantidad de productos tantas veces se repita el usuario ?

GRAX!
  #4 (permalink)  
Antiguo 17/08/2010, 19:16
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 5 meses
Puntos: 89
Respuesta: PHP y Mysql update en DB

Pues podrías tener una variable aparte, la cual vaya aumentando de acuerdo a la cantidad de operaciones que haga, y luego sumarla al campo cantidad. Claro que esto afectaría a los demás, y no es lo pretendido. Así que podrías preguntar si la variable que contiene la cantidad de operaciones es mayor a 1, y en ese caso, hacer un update aparte para este usuario.

Lo otro, sería consultar en el foro SQL, si hay alguna forma de hacer lo que pides, y que en una sola consulta, un usuario X sea afectado tantas veces como aparezca su ID.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 17/08/2010, 19:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

una subquery con un count agrupado por clientid? un storedprocedure?
  #6 (permalink)  
Antiguo 18/08/2010, 09:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

@spider_boy tendria que haber una variable para cada usuario que sea mayor que 1 y para saber si es mayor que 1 tendria que haber un proceso que vaya sumando 1 cada vez que un usuario se repite para al final enviar updates para cada usuario que paso de 1.

Obviamente seria una alternativa, los updates dependeras de la cantidad de usuario que se repitan, seria la ultima carta.

@CloudFFVII Hasta donde tengo entendido los subquery solo se utilizan entre tablas, aqui solo tengo una tabla :D! y
hasta donde tengo entendido storedprocedure es simplemente utilizar programacion en la misma base de datos, es decir, no hay nada que SP haga que php no pueda hacer. Todo lo contrario, en caso de utilizar la ultima carta no podria realizarlo con un SP porq no soporta Arrays y para guardar los usuarios y confirmar si se repiten necesito array :D!

Ahora bien, en caso de que este equivocado(espero que si!!!) como seria el script ?

grax :D!

Nota: Auxilio !! :(
  #7 (permalink)  
Antiguo 18/08/2010, 10:25
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 5 meses
Puntos: 89
Respuesta: PHP y Mysql update en DB

¿Y si utilizas sesiones? Ya que las sesiones son por cada usuario que ingresa a la web, solo tendrías que tomar la ID del usuario y la cantidad de veces que ha realizado el proceso. Esto sería por usuario como ya dije, asi que no habría necesidad de un IN.

También puedes ver esto, que no sé como se podría implementar en tu caso, pero podría ser útil :

http://blog.bubble.ro/how-to-make-mu...uery-in-mysql/
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 18/08/2010, 11:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

Obvio que todo lo que podes hacer ahi con un SP lo podes hacer con varias consultas en PHP... Pero pense que querias una solucion de una sola linea en PHP...Y lo de la subquery, me referia sobre la misma DB... osea, porEJ haciendo un count y eso usandolo para setear el campo cantidad... ahora bien... si tus datos vienen de un array en PHP es otro tema... En un SP podrias armar una tabla temporal para buscarle la vuelta... Pero se ve que no entendi muy bien el caso yo.
  #9 (permalink)  
Antiguo 18/08/2010, 12:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

Recuerda Spider_boy que lo de los productos solo fue un ejemplo que utilize para dar a entender lo que quiero lograr = (actualizar un usuario tantas veces este aparesca dentro del IN)
no es que tenga que ver con productos :D

no me han dado respuesta en el foro de mysql y he buscado y nada :(

Por lo tanto empezare a hacer la ultima carta, veamos que tan rapido se ejecuta :D!

Leere tu link a ver que tal :D

Grax Espero MAs rEspuesTAS!!!!!! algun PRO en la materia ^^!!!(algun colaborador! abi!! help!)

EditO:

acerca del link...
Lamentablemente para mi, ninguna de esas estrategias me sirven para re aplicar el SET a cada usuario repetido.
Esos UPDATES mas bien son para cambios definidos, en mi caso los cambios no estan definidos :(

Última edición por Bigcrime; 18/08/2010 a las 12:50
  #10 (permalink)  
Antiguo 18/08/2010, 16:03
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 5 meses
Puntos: 89
Respuesta: PHP y Mysql update en DB

Pero entonces... ¿de donde viene tu información? ¿Cómo obtienes cuantas veces un usuario X realizó tantas compras, ediciones, etc?

Puede ser mucho más fácil de lo que creemos, pero no hay mucha información, y la explicación que proporcionaste, creo que se podría resolver con lo que ya te he comentado. Quizá si explicas un poco más, y muestras lo que llevas hasta ahora, se podría ampliar la gama de respuestas .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #11 (permalink)  
Antiguo 19/08/2010, 05:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: PHP y Mysql update en DB

no mires el ejemplo, solo lo utilize para dar a entender lo que quiero lograr.
productos, clienteid, esos datos no son los reales, solo son un ejemplo, no es necesario ponerte todo mi codigo cuando con ese ejemplo que te di ya puedes entender lo que necesito.

Solo quiero aplicar el argumento del SET cada vez que se indique un ID.

UPDATE deudas SET trans = trans+1 WHERE id IN (1,1,2,8,7,5,5,8,5,4...etc);

Simplemente quiero que a cada uno de los ID mysql le aplique el argumento del SET "trans = trans+1", eso es todo, DIOSSS es mucho pedir!!! :_(!!!

Mysql si se repite dice: A no , a este ya yo le calcule ---,--- NOOO io quiero que calcule a cada uno , si se repite que le calcule de nuevo, por algo se repite! no es para nada ---,--- AFFF toy desesperado con esto -,-
  #12 (permalink)  
Antiguo 19/08/2010, 13:20
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 5 meses
Puntos: 89
Respuesta: PHP y Mysql update en DB

Si te entiendo, se que los ejemplos eran solo eso, ejemplos. Pero necesito saber como obtienes los ID. ¿Los obtienes desde la URL? ¿Se pasan todos los ID de una sola vez tal cual muestras en el ejemplo? ¿Qué ocurre para que el ID se repita X veces?

Si el ID se va acumulando de alguna manera, podríamos hacer algo como :

Código PHP:
Ver original
  1. $id = array();
  2. $id[] = 1;
  3. $id[] = 1;
  4. $id[] = 1;
  5. $count = 0;
  6. foreach($id as $i) {
  7.      if((int)$i == 1)  
  8.            $count++;
  9. }
  10. // Luego realizas el update
  11. $sql = "UPDATE deudas SET trans = trans + $count WHERE id = 1";

¿Tú ingresas que el usuario X tiene Z deudas, y luego ingresas que el usuario M tiene N deudas, y luego todo eso se trata de realizar en un solo update?

Necesitas calmarte, lo lograremos ;).
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: mysql, update
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 09:59.