Autor Tema: manipular varios resultados en PHP+AJAX  (Leído 3057 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
manipular varios resultados en PHP+AJAX
« : abril 08, 2016, 03:55:18 pm »
tengo que hacer un tipo dashboard con varias gráficas y tablitas de datos, y la pregunta es?

como debo hacer?...
1- retornar varias consultas en un mismo PHP y manipularlos con DOM?
2- usar varios archivos PHP con una única consulta?
 2.1- no hay problema que se abra y cierre la conexión tantas veces?


este es mi app.js

Código: [Seleccionar]
    $.post("db/consultas.php", { fecha: "31/12/2015" }, function(data) {
        try {
            JSON.parse(data);
        } catch (e) {
            alert(data);
            return;
        }
        var arr = JSON.parse(data);
        chart.load({
            json: vales
        });
    });

y  mi consultas.php
Código: [Seleccionar]
<?php        
    
require_once 'conexion.php';

    if(!isset(
$_POST['fecha']))
        { 
            echo 
'No ha pasado la variable FECHA';
            exit;
        }
    
$sql "SELECT * FROM test_chart ";
    
$query $pdo->prepare($sql);
    
$query->execute();
    
    
$list $query->fetchAll(PDO::FETCH_ASSOC);
    
    
$resultado=array();
    foreach (
$list as $query) {
       if(isset(
$resultado[$query['entidad_descripcion']]) ){
       
array_push($resultado[$query['entidad_descripcion']],$query['costo_adquisicion']);
       }
    else {
       
$resultado[$query['entidad_descripcion']]=array($query['costo_adquisicion']);
       }
    }    
    
$jsonResultado=json_encode($resultado);
    echo 
$jsonResultado;
    
?>


como hago?

meto en divs el $jsonResultado por cada consulta?
o creo varios archivos consulta.php y hacer varios .post en JS ?

la idea es que debe ser rápido para ejecutarse y manteniendo las mejores prácticas... acepto comentarios incluso de mis archivos que he puesto..

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:manipular varios resultados en PHP+AJAX
« Respuesta #1 : abril 08, 2016, 04:04:11 pm »
men ahi tenes que aplicar el concepto de MVC. tus modelos se tendrian que hacer asi;
uno para abstraer la base de datos.
uno para cada tipo de juego de respuestas que vas a tener desde la bd. (osea vas a tener un entidades_de_datos.php y dentro de ese vas a poner function tabla1(), function grafico_2(), etc.  )

tu controlador deberia simplemente ser una coleccion de llamadas hacia entidades_de_datos.php que le pasas una sola peticion desde la vista y el controlador va a llamar a la lista pertinente de funciones de entidades_de_datos.php y va a retornar un consolidado.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:manipular varios resultados en PHP+AJAX
« Respuesta #2 : abril 08, 2016, 04:14:44 pm »
ajajajaajajaja puya,,... no te estoy trolleando, pero asi me senti



nambe loco, me estas tomando como un programador paloma... barajiamela mas despacito... traduciendo eso de convertir en MVC, con los archivos que tengo como es?

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:manipular varios resultados en PHP+AJAX
« Respuesta #3 : abril 08, 2016, 04:34:30 pm »
ajajajaajajaja puya,,... no te estoy trolleando, pero asi me senti

nambe loco, me estas tomando como un programador paloma... barajiamela mas despacito... traduciendo eso de convertir en MVC, con los archivos que tengo como es?



vaya es sencillo. el MVC es que repartis las tareas que tiene que hacer tu codigo. esto significa que vas a abstraer tu codigo en capas como el ejemplo clasico de la cebolla.

en el modelo imaginate que estas definiendo las piezas de lego que componen tu apliacion
en los modelos agarras tus fuentes de datos (tu bd) y haces una clase que le hable directamente y tenga todas las posibles queries que tengas que hacerle a tu BD. no hace nada mas que eso. le pasas una pregunta y la clase te regresa la respuesta de la BD sin meterte a hacer queries desde ninguna otra parte. de ahi modelas los juegos de datos que componen cada elemento de tu apliacion osea las tablas y las graficas. entonces esos modelos van a hacer peticiones a tu modelo de BD y te van a construir los objetos o los arrays que queres sacar para cada elemento.

el controlador es donde si queres armar un carrito hecho de legos este sabe que piezas ir a buscar y armar de forma correcta
en tu caso, vas a tener un controlador predefinido que se llame por ejemplo "juego_de_datos_estandar.php" y ese sabe que modelos de juegos de datos ir a pedir y que te regrese los datos como vos lo definas. osea podes pedir que te regrese un solo blob de datos o podes ser tan granular como te de la gana (osea podes hasta tener un controlador por modelo/ por tipo de grafica pues).

la vista lo unico que hace es pedirle el carrito de legos al controlador.
en tu caso, la vista (en JS) tiene la logica de presentacion y solo tiene que ir a pedirle los datos al controlador que es el que funciona como el director de la orquesta. osea si tenes una vista default que te carga al ir a misreportes.com y de un solo queres cargar los graficos y demas lo unico que tiene que pedir la vista es alguna funcion dentro del controlador "juegos_de_datos_estandar.php"

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:manipular varios resultados en PHP+AJAX
« Respuesta #4 : abril 08, 2016, 06:00:32 pm »
jum... aunque son varias gráficas, todas recibirán los mismos parámetros y graficaran datos de una misma tabla...

en la misma tabla tengo varios clientes y varias fechas, no más que una sola tabla.. lo que quiero graficar digamos son, por departamentos de esos clientes:
en un grafico los 4 clientes que son de ahuachapan, y comparar las tendencias solo de ellos
en otro gráfico los 3 de sonsonate
y así para los 4 departamentos que tengo.. no son muchos departamentos pero si son demasiados clientes para plancharlos en una misma gráfica, por eso los agrupare según su departamento

pero, siempre de una misma tabla
y en otra gráfica poner por ejemplo, los totales por departamento, siempre de la misma tabla...

en conclusión, utilizar un MVC siento que es muy al extremo de implementación... siento que es demasiado espacio o demasiado granular para algo tan pequeño

ahora que ya explique mas detalles de lo que necesito, vuelvo y pregunto: como modifico mi app.js y mi consulta.php para algo como lo que quiero hacer, según las dos alternativas que plantee al inicio, cuál es lo mas correcto, práctico y rápido... o hay otras formas?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:manipular varios resultados en PHP+AJAX
« Respuesta #5 : abril 08, 2016, 06:14:51 pm »
ooooooOOOO!!!!!

será que mi problema es que quiero hacer varios querys y no es necesario... o sea, yo estaba pensando hacer varios querys según cada departamento, pero será que en lugar de eso es mejor traer todos los clientes de un solo mameyaso y en el codigo de php, el que me pasaste vos g00mba, separar en arrays distintos según su departamento?
algo así:

Citar
$depto1=array();  <-- para sonsonate
$depto2=array();  <-- para sivar


    foreach ($list as $query) {

si el departamento es "sonsonate"  <---INCLUIR UNA VALIDACIÓN ASÍ

       if(isset($depto1[$query['entidad_descripcion']]) ){
       array_push($depto1[$query['entidad_descripcion']],$query['costo_adquisicion']);
       }
    else {
       $depto1[$query['entidad_descripcion']]=array($query['costo_adquisicion']);
       }

si el departamento es "sivar"  <---INCLUIR UNA VALIDACIÓN ASÍ
       if(isset($depto2[$query['entidad_descripcion']]) ){
       array_push($depto2[$query['entidad_descripcion']],$query['costo_adquisicion']);
       }
    else {
       $depto2[$query['entidad_descripcion']]=array($query['costo_adquisicion']);
       }

LAS DEMÁS DEPTOS

    }


y armar arrays separados, con una sola consulta, porque los departamentos son fijos, ya se cuantos son y que no van a cambiar tán facilmente, no necesito hacer algo tan dinámico, pero si me gustaría mejorar la idea del código que puse en el ARRAY si el IF se puede modificar más dinámicamene para los CUATRO deptos que tengo, se puede optimizar?

así hasta los totales se armarian de un solo vergazo... creo que es lo mas óptimo o no?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:manipular varios resultados en PHP+AJAX
« Respuesta #6 : abril 08, 2016, 09:52:49 pm »
eh si es una solucion tambien ahuevo