Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Arrays en bases de datos

Estas en el tema de Arrays en bases de datos en el foro de PHP en Foros del Web. Hola a todos. Quería saber cómo se podría hacer esto. Teniendo esta base de datos: Usuarios ------------ Aciertos usuario 1 ----------- 1 usuario 2 ----------- ...
  #1 (permalink)  
Antiguo 10/04/2013, 11:55
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Arrays en bases de datos

Hola a todos.

Quería saber cómo se podría hacer esto.

Teniendo esta base de datos:

Usuarios ------------ Aciertos

usuario 1 ----------- 1

usuario 2 ----------- 1

Usuario 1 ----------- 1

Usuario 2 ----------- 1

Usuario 2 ----------- 1


Me gustaría tener esto:

Usuarios ------------ Aciertos

usuario 1 ----------- 2

usuario 2 ----------- 3


Es decir, que vaya sumando los aciertos de cada uno. Supongo que se podrá hacer con arrays, pero no sé si hay algún comando o alguna orden desde php para hacer eso "automáticamente".

Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 10/04/2013, 12:01
Avatar de Txustra  
Fecha de Ingreso: abril-2013
Mensajes: 21
Antigüedad: 11 años
Puntos: 0
Respuesta: Arrays en bases de datos

Podrías utilizar la función SUM para el campo aciertos where usuarios="usuario 1" (creo..)
  #3 (permalink)  
Antiguo 10/04/2013, 13:24
Avatar de stratobonta  
Fecha de Ingreso: septiembre-2011
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Arrays en bases de datos

pues un select usando la funcion SUM

SELECT SUM(`aciertos`) FROM `tu_tabla` WHERE `usuarios` LIKE "usuario_1"
  #4 (permalink)  
Antiguo 10/04/2013, 14:12
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Arrays en bases de datos

Holas, Musiker.

Como dicen los demás, debes utilizar una función de agrupación, pero en la forma:

Código:
SELECT usuarios, COUNT(aciertos) AS aciertos FROM tabla GROUP BY usuarios;
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 10/04/2013, 15:18
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: Arrays en bases de datos

La respuesta que te dan, solo soluciona el SELECT, pero no modifica la base de datos.
La solucion mas sencilla es hacer UPDATE cada que obtiene un acierto:

Código MySQL:
Ver original
  1. UPDATE table SET `aciertos` = `aciertos`+1 WHERE usuario = 'usuario1'
  #6 (permalink)  
Antiguo 10/04/2013, 15:35
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Arrays en bases de datos

Ahm, yo creía que Musiker quería obtener los datos de esa manera para mostrarlos, no que quería modificar su base... La solución de dluna88 es la correcta para los nuevos registros. Para regularizar los antiguos, tendrías que trabajar con tablas temporales auxiliares (o con simple excel) para realizar el traspaso de los datos anteriores a los nuevos.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #7 (permalink)  
Antiguo 10/04/2013, 18:14
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: Arrays en bases de datos

Cita:
Iniciado por quinqui Ver Mensaje
Ahm, yo creía que Musiker quería obtener los datos de esa manera para mostrarlos, no que quería modificar su base... La solución de dluna88 es la correcta para los nuevos registros. Para regularizar los antiguos, tendrías que trabajar con tablas temporales auxiliares (o con simple excel) para realizar el traspaso de los datos anteriores a los nuevos.

Saludos!
Tienes razón. Aunque la verdad no le veo mucho sentido estar guardando muchos registros del mismo usuario cada vez que tiene un acierto... en todo caso el campo de aciertos no es necesario, con un simple num_rows sabríamos cuantos aciertos tiene, pues cada acierto es un registro.

Código PHP:
$tabla mysql_query("SELECT * FROM table WHERE usuario = 'usuario1'");
$aciertos mysqli_num_rows($tabla); 
  #8 (permalink)  
Antiguo 11/04/2013, 06:16
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Arrays en bases de datos

Cita:
Iniciado por dluna88 Ver Mensaje
Tienes razón. Aunque la verdad no le veo mucho sentido estar guardando muchos registros del mismo usuario cada vez que tiene un acierto... en todo caso el campo de aciertos no es necesario, con un simple num_rows sabríamos cuantos aciertos tiene, pues cada acierto es un registro.
Como dices, así como tiene definido el ingreso de datos ahora, en efecto bastaría con el count / num_rows. Pero es cierto que sería más óptimo que guardara el total en un campo aparte, pero actualizable, para no tener tantos datos repetidos, que es lo que Musiker estaba preguntando, creo... La idea de registrar cada acierto como un nuevo registro me parecería buena si además guarda otra información relevante del momento, como la fecha-hora en que se generó el registro, etc...

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #9 (permalink)  
Antiguo 11/04/2013, 13:08
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Arrays en bases de datos

Gracias a todos por vuestro interés. Dluna88, tienes razón que con el update sería más sencillo, pero he intentado hacer un update aproximadamente 946730498764 veces y no hay manera. No da error, pero tampoco modifica la base de datos. Por qué puede ser??
  #10 (permalink)  
Antiguo 11/04/2013, 13:58
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: Arrays en bases de datos

Cita:
Iniciado por Musiker Ver Mensaje
Gracias a todos por vuestro interés. Dluna88, tienes razón que con el update sería más sencillo, pero he intentado hacer un update aproximadamente 946730498764 veces y no hay manera. No da error, pero tampoco modifica la base de datos. Por qué puede ser??
Pues así como lo puse...

Código PHP:
$u mysql_query("UPDATE table SET `aciertos` = `aciertos`+1 WHERE usuario = 'usuario1'"); 
Como lo estas haciendo?
  #11 (permalink)  
Antiguo 11/04/2013, 14:22
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Arrays en bases de datos

Cita:
Iniciado por dluna88 Ver Mensaje
Pues así como lo puse...

Código PHP:
$u mysql_query("UPDATE table SET `aciertos` = `aciertos`+1 WHERE usuario = 'usuario1'"); 
Como lo estas haciendo?
Ahora sí funciona!!! GRACIAS!!! Había probado sin comillas, con comillas simples, dobles, abarcando las comillas el +1... de muchas formas... pero creo que no había probado guardándolo en una variable como has puesto ahora.

GRACIAS DE NUEVO A TI Y A TODOS!!

Etiquetas: arrays, bases, usuarios
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.