Foros del Web » Programando para Internet » PHP »

Extraer posiciones concretas en mysqli_query

Estas en el tema de Extraer posiciones concretas en mysqli_query en el foro de PHP en Foros del Web. Hola a todos, Estoy pensando la mejor forma de extraer información de una BD MySQL que manejo. Para extraer los datos utilizo una consula SELECT ...
  #1 (permalink)  
Antiguo 02/10/2015, 03:53
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 12 años
Puntos: 2
Pregunta Extraer posiciones concretas en mysqli_query

Hola a todos,
Estoy pensando la mejor forma de extraer información de una BD MySQL que manejo. Para extraer los datos utilizo una consula SELECT con mysqli_query tal que así:

Código:
$sql = 'SELECT idCuestionario, Grupo, Resultado FROM resultados WHERE idCuestionario = prueba';
$consulta = mysqli_query($db,$sql);
Todo correcto en la extracción de datos y ahora en la lectura del resultado

Código:
while ($fila = mysqli_fetch_assoc($consulta)){
  echo $fila['idCuestionario'], ' - ',$fila['Grupo'], ' - ', $fila['Resultado'],'<br />';
}
Obtengo una tabla tipo:

prueba - Grupo1 - 35
prueba - Grupo2 - 12
prueba - Grupo3 - 24
prueba - Grupo4 - 45
prueba - Grupo5 - 31

La complicación viene ahora que necesito utilizar los datos de la segunda columna y de la tercera en variables Javascript para pintar un gráfico, y me gustaría poder acceder fácilmente a una posición concreta viéndolo como si fuera un array.

Sé que existe el método fetch_array(MYSQLI_ASSOC); por ejemplo, pero al fin y al cabo obtengo pintado el mismo resultado que en la tabla anterior, y lo que busco es guardar esa información en un array asociativo, para luego poder recuperar el valor fácilmente con el id y la posición.

Tengo algo así:
Código:
/* array asociativo */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
Pero no paso de ahí.
¿Alguien ha hecho algo parecido?
Mil gracias
JC
  #2 (permalink)  
Antiguo 02/10/2015, 05:39
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 5 meses
Puntos: 263
Respuesta: Extraer posiciones concretas en mysqli_query

va a depender de como necesites los datos, yo estoy realizando unos graficos con la libreria AmChart y los recojo de la BD de esta manera:

Código PHP:
Ver original
  1. //con esta primera consluta genero los meses
  2. $grafiD = $db->query("SELECT * FROM tabla_meses WHERE dato1 AND dato2 AND dato3");
  3. $totalgrafiD = mysqli_num_rows($grafiD);
  4.  
  5. //luego en el area de data del grafico genero las consultas restante y muestro los datos a graficar
  6.  
  7. while($rowD = $grafiD->fetch_array())
  8. {
  9.  
  10.     //aperturas
  11. $grafiC = $db->query("SELECT cantidad FROM tablaB WHERE dato1 AND dato2 AND dato3 AND dato4");
  12. $totalgrafiC = mysqli_num_rows($grafiC);
  13. $row_apertura = $grafiC->fetch_assoc();
  14.  
  15. //cierres
  16. $grafiE = $db->query("SELECT cantidad FROM matriz_desviacion_cierres WHERE  dato1 AND dato2 AND dato3 AND dato4");
  17. $totalgrafiE = mysqli_num_rows($grafiE);
  18. $row_cierre = $grafiE->fetch_assoc();
  19.  
  20.     echo "{\"Mes\":".$rowD['mes'].",\"income\":".$row_apertura['cantidad'].",\"expenses\":".$row_cierre['cantidad']."},";  
  21.  
  22.     }
como te dije va a depender de como tengas que mostrar los datos para que los interprete tu libreria, en mi caso el grafico es de barras y deben mostrarse de esta manera:

Código Javascript:
Ver original
  1. [
  2.   {
  3.      "Mes:" Enero, /*Este lo obtengo de la primera consulta*/
  4.      "income:" 30, /*Este de la segunda dentro del while*/
  5.      "expenses:" 10, /*Este de la tercera dentro del while*/
  6.    }
  7. ]
y asi cada uno
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 02/10/2015, 09:06
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 12 años
Puntos: 2
Respuesta: Extraer posiciones concretas en mysqli_query

Hola que tal?
Yo estoy usando la librería CHART.JS, y como no quiero complicarme mucho con la automatización (de hecho tampoco lo necesito), estoy pensando en asignar una variable en PHP a cada valor y pasarlo a Javascript para luego completar el gráfico del estilo:
Código:
datasets: [
			{
				label: "Usuario",
				fillColor: "rgba(220,220,220,0.2)",
				strokeColor: "rgba(220,220,220,1)",
				pointColor: "rgba(220,220,220,1)",
				pointStrokeColor: "#fff",
				pointHighlightFill: "#fff",
				pointHighlightStroke: "rgba(220,220,220,1)",
				data: [<?php echo $Grupo1 ?>,<?php echo $Grupo2 ?>]
			}
		]
Como verás los valores en data son los que automatizo, y mi idea es conseguir asignar a la variable "GrupoXX" el valor desde el array que saque de la consulta del MySQL. Voy a ver tu código en detalle y comento.

Mil gracias!
JC
  #4 (permalink)  
Antiguo 02/10/2015, 10:36
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 5 meses
Puntos: 263
Respuesta: Extraer posiciones concretas en mysqli_query

y porque no solo impriumes el array dentro, ya lo he hecho:

Código PHP:
Ver original
  1. datasets: [
  2.             {
  3.                 label: "Usuario",
  4.                 fillColor: "rgba(220,220,220,0.2)",
  5.                 strokeColor: "rgba(220,220,220,1)",
  6.                 pointColor: "rgba(220,220,220,1)",
  7.                 pointStrokeColor: "#fff",
  8.                 pointHighlightFill: "#fff",
  9.                 pointHighlightStroke: "rgba(220,220,220,1)",
  10.                 data: [<?php
  11.                                              while($row = $query->fetch_array()){
  12.                                                 echo $row['Grupox'].",";
  13.                                                   }
  14.                                            ?>]
  15.             }
  16.         ]

y asi no tienes que asignar una variable por cada campor que tengas sino que el array de datos necesario se crea automaticamente, aunque te recomiendo mas la libreria AmChart, es más modular y permite varios graficos del mismo tipo en la misma pagina sin tantos problemas
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 05/10/2015, 03:26
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 12 años
Puntos: 2
Respuesta: Extraer posiciones concretas en mysqli_query

Por partes... primero gracias por la respuesta y por una solución de más calidad... tengo que probarla todavía porque llevo días trabajando con fetch_array, fetch_assoc, etc. con un libro que me compré y no consigo llegar a la solución que busco, no tengo clara la salida que crea...

Ahora el tema de usar la librería "CHART.JS" es porque es de los pocos que tienen la opción de un gráfico "Polar" que es lo que necesito (que yo sepa sólo este y HIGHCHARTS lo tienen)... además es gratuita y en principio no me parecía difícil la implentación... tan sólo necesito 1 gráfico (de momento) en una misma página.

En cuanto lo pruebe escribo un mensaje en el foro.
Muchas gracias!
JC

P.D. 1: Inicialmente no pintaba nada, pero era un problema de la cosulta.

P.D. 2: GENIAL! Creo que gracias a tus consejos he visto la luz. Sólo me falta rematar para que no me saque una coma junto con el último valor de la columna.

Saludos!

Última edición por majete; 05/10/2015 a las 10:27

Etiquetas: mysql, posiciones, select, sql, tabla, variable
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:26.