Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Suma de registros y conteo

Estas en el tema de Suma de registros y conteo en el foro de PHP en Foros del Web. Buenas noches tengo una duda quiero contar mis datos en una tabla que tengo y lo tengo estructrutarado asi Id_encuesta,Id_user,Respuesta1,Respuesta2,Respuest a3,Respuesta4,Respuesta5 1 1476 A B ...
  #1 (permalink)  
Antiguo 24/10/2014, 07:22
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Suma de registros y conteo

Buenas noches tengo una duda quiero contar mis datos en una tabla que tengo y lo tengo estructrutarado asi

Id_encuesta,Id_user,Respuesta1,Respuesta2,Respuest a3,Respuesta4,Respuesta5
1 1476 A B B C B
2 1459 B D A A C
3 8217 D D D A A

A = Visual
B = Auditivo
C = Lectura
D = Kinesico

Y quiero que me muestre cierta informacion por ejemplo que me diga esto:
El usuario 1476 es Auditivo
El usuario 1459 es Visual
El usuario 8217 es Kinesico

Contando el total y numero de letra de cada linea o usuario.

Ayudenme por favor.
  #2 (permalink)  
Antiguo 24/10/2014, 08:36
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Suma de registros y conteo

count() ??? strlen() ???

Saludos,
David
  #3 (permalink)  
Antiguo 24/10/2014, 08:43
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Suma de registros y conteo

Hola,

Yo lo que haría es usar la función substr_count enviandole una cadena formada por todas las respuestas. Esto te devuelve la cantidad de veces que aparecería cada carácter y con condiciones puedes conocer el mayor.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #4 (permalink)  
Antiguo 24/10/2014, 09:41
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Suma de registros y conteo

Cita:
Iniciado por the_web_saint Ver Mensaje
Hola,

Yo lo que haría es usar la función substr_count enviandole una cadena formada por todas las respuestas. Esto te devuelve la cantidad de veces que aparecería cada carácter y con condiciones puedes conocer el mayor.

Saludos
y como seria la instruccion utilizando esas funciones amigo???
  #5 (permalink)  
Antiguo 24/10/2014, 10:40
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Suma de registros y conteo

Sería algo así:

Código PHP:
Ver original
  1. <?php
  2. $sql = mysql_query("Select Id_encuesta,Id_user, concat(Respuesta1,Respuesta2,Respuesta3,Respuesta4,Respuesta5) from encuestas");
  3. while($resp = mysql_fetch_array($sql))
  4. {
  5.   $cont=1;
  6.   $resultado = 'A';
  7.   $arr = array('B', 'C','D','E');
  8.   foreach($arr as $letra) //Cantidad de respuestas
  9.   {
  10.     if(substr_count($resp[2], $resultado) < substr_count($resp[2], $letra))
  11.     {
  12.       $resultado = $letra;
  13.     }
  14.   }
  15.   echo "El usuario ".$resp[1]." es ".$resultado."<br>";
  16. }
  17. ?>

Claro que si cuentas con la tabla en la base de datos de las descripciones de cada respuesta es mejor.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #6 (permalink)  
Antiguo 24/10/2014, 11:07
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Suma de registros y conteo

Me parece que su problema es mas SQL que PHP... con un GROUP BY... o en todo caso cuenta los caracteres por separado como te dijeron y quien tenga mayor cantidad le asignas un valor... son cosas que se me ocurren.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 24/10/2014, 14:11
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Suma de registros y conteo

Cita:
Iniciado por the_web_saint Ver Mensaje
Sería algo así:

Código PHP:
Ver original
  1. <?php
  2. $sql = mysql_query("Select Id_encuesta,Id_user, concat(Respuesta1,Respuesta2,Respuesta3,Respuesta4,Respuesta5) from encuestas");
  3. while($resp = mysql_fetch_array($sql))
  4. {
  5.   $cont=1;
  6.   $resultado = 'A';
  7.   $arr = array('B', 'C','D','E');
  8.   foreach($arr as $letra) //Cantidad de respuestas
  9.   {
  10.     if(substr_count($resp[2], $resultado) < substr_count($resp[2], $letra))
  11.     {
  12.       $resultado = $letra;
  13.     }
  14.   }
  15.   echo "El usuario ".$resp[1]." es ".$resultado."<br>";
  16. }
  17. ?>

Claro que si cuentas con la tabla en la base de datos de las descripciones de cada respuesta es mejor.
Gracias muchas gracias amigo me sirvio de mucha ayuda. ahora tengo una duda dentro de mi tabla.
Lo que quiero es que me sume los valores dentro de la tabla y despues de sumarlas guardar en la misma tabla en otra columna su estilo de aprendizaje .

Algo asi:
Id_encuesta,Id_user,Respuesta1,Respuesta2,Respuest a3,Estilo_aprendizaje
1 1476 A B B Auditivo

No se si se pueda pero lo he estado intentando y espero me ayuden por favor.
  #8 (permalink)  
Antiguo 24/10/2014, 14:21
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Suma de registros y conteo

Si te sirvió lo que te pase arriba, solo debajo del echo haz un update a ese mismo registro usando el id de encuesta que ya tienes en el ciclo.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 24/10/2014, 14:41
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Suma de registros y conteo

Cita:
Iniciado por the_web_saint Ver Mensaje
Si te sirvió lo que te pase arriba, solo debajo del echo haz un update a ese mismo registro usando el id de encuesta que ya tienes en el ciclo.
Muchas gracias amigo por tu respuesta de verdad que me ayudaron bastante con respecto al update lo intentare pero aun asi muchas gracias por ayudarme a resolver mis problemas amigo.
  #10 (permalink)  
Antiguo 25/10/2014, 10:12
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Respuesta: Suma de registros y conteo

Cita:
Iniciado por the_web_saint Ver Mensaje
Sería algo así:

Código PHP:
Ver original
  1. <?php
  2. $sql = mysql_query("Select Id_encuesta,Id_user, concat(Respuesta1,Respuesta2,Respuesta3,Respuesta4,Respuesta5) from encuestas");
  3. while($resp = mysql_fetch_array($sql))
  4. {
  5.   $cont=1;
  6.   $resultado = 'A';
  7.   $arr = array('B', 'C','D','E');
  8.   foreach($arr as $letra) //Cantidad de respuestas
  9.   {
  10.     if(substr_count($resp[2], $resultado) < substr_count($resp[2], $letra))
  11.     {
  12.       $resultado = $letra;
  13.     }
  14.   }
  15.   echo "El usuario ".$resp[1]." es ".$resultado."<br>";
  16. }
  17. ?>
Hola amigo si me sirvio gracias por ayudarme pero tengo una duda si quiero que me muestre con base al resultado si es: por ejemplo el usuario es visual

A = Visual, B = Auditivo, C = Lectura, D = Kinesico

dependiendo del numero de letras iguales como lo haria??? en que parte del codigo que me proporcionastes iria amigo???
  #11 (permalink)  
Antiguo 25/10/2014, 17:20
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Suma de registros y conteo

Yo diría que crees una tabla con esos valores y hagas por ejemplo:
Código PHP:
Ver original
  1. <?php
  2. $sql = mysql_query("Select Id_encuesta,Id_user, concat(Respuesta1,Respuesta2,Respuesta3,Respuesta4,Respuesta5) from encuestas");
  3. while($resp = mysql_fetch_array($sql))
  4. {
  5.   $cont=1;
  6.   $resultado = 'A';
  7.   $arr = array('B', 'C','D','E');
  8.   foreach($arr as $letra) //Cantidad de respuestas
  9.   {
  10.     if(substr_count($resp[2], $resultado) < substr_count($resp[2], $letra))
  11.     {
  12.       $resultado = $letra;
  13.     }
  14.   }
  15.   $apren = mysql_fetch_array(mysql_query("Select Descripcion from tipos_respuestas where Codigo='$resultado'"));
  16.   echo "El usuario ".$resp[1]." es ".$apren[0]."<br>";
  17. }
  18. ?>
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #12 (permalink)  
Antiguo 25/10/2014, 21:57
 
Fecha de Ingreso: octubre-2014
Mensajes: 63
Antigüedad: 10 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Suma de registros y conteo

Cita:
Iniciado por the_web_saint Ver Mensaje
Yo diría que crees una tabla con esos valores y hagas por ejemplo:
Código PHP:
Ver original
  1. <?php
  2. $sql = mysql_query("Select Id_encuesta,Id_user, concat(Respuesta1,Respuesta2,Respuesta3,Respuesta4,Respuesta5) from encuestas");
  3. while($resp = mysql_fetch_array($sql))
  4. {
  5.   $cont=1;
  6.   $resultado = 'A';
  7.   $arr = array('B', 'C','D','E');
  8.   foreach($arr as $letra) //Cantidad de respuestas
  9.   {
  10.     if(substr_count($resp[2], $resultado) < substr_count($resp[2], $letra))
  11.     {
  12.       $resultado = $letra;
  13.     }
  14.   }
  15.   $apren = mysql_fetch_array(mysql_query("Select Descripcion from tipos_respuestas where Codigo='$resultado'"));
  16.   echo "El usuario ".$resp[1]." es ".$apren[0]."<br>";
  17. }
  18. ?>
Muchisimas gracias maigo me sirvio de mucha ayuda de verdad que te lo agradezco mucho amigo. Gracias por tu ayuda.

Etiquetas: conteo, registros, suma, tabla
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 22:42.