Tableau multi dimensionnel

ceda13 Messages postés 88 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à relever pas mal de données sur une BDD et les ranger dans un tableau multi dimensionnel pour les afficher ensuite.
Je poste les codes côté javascript et côté PHP je pense avoir une erreur dans mes empilements de tableau. Est-ce que vous voyez quelque chose d'anormal svp ?

Javascript :

$.getJSON("php/controleur.php", {action: "getListeMesures", debut: dateDeb, fin: dateFin, ID: site})
            .done(function (data, textStatus, jqXHR) {

                $.each(data, function (index, ligne) {                    
                    $("#tableauMesures>tbody:last").append("<tr><td>" + ligne.date + "</td><td>" + ligne.temperature + "°C</td><td>" + ligne.pression + "hPa</td><td>" + ligne.hygrometrie + "%</td></tr>");

                });


PHP :

if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') == 'GET') {
    $action = filter_input(INPUT_GET, "action");
    switch ($action) {
        case 'getListeMesures':
            $debut = filter_input(INPUT_GET, 'debut');
            $fin = filter_input(INPUT_GET, 'fin');
            $IDSITE = filter_input(INPUT_GET, 'ID');
            getListeMesures($debut, $fin,$IDSITE);
            break;
        case 'getPeriode':
            getPeriodeMinMax();
            break;
    }
}
function getListeMesures($debut, $fin,$IDSITE) {
    try {
        // connexion à la base de données
        $bdd = connexionBdd();
        $requete = $bdd->prepare("SELECT valeur FROM mesure WHERE id_capteur<5 AND id_site=:id AND (date_mesure BETWEEN :deb AND :fin )ORDER BY date_mesure DESC;");
        $requete->bindParam(":id", $id);
        $requete->bindParam(":deb", $debut);
        $requete->bindParam(":fin", $fin);
        // execution de la requete
        $requete->execute() or die(print_r($requete->errorInfo()));
        $temperature=array();
        while ($ligne = $requete->fetch()){
            array_push($temperature,array(
                'temperature' => $ligne['valeur']));
        }
        $requete->closeCursor();
        $bdd = connexionBdd();
        $requete = $bdd->prepare("SELECT valeur FROM mesure WHERE id_capteur>8 AND id_site=:id AND (date_mesure BETWEEN :deb AND :fin )ORDER BY date_mesure DESC;");
        $requete->bindParam(":id", $id);
        $requete->bindParam(":deb", $debut);
        $requete->bindParam(":fin", $fin);
        // execution de la requete
        $requete->execute() or die(print_r($requete->errorInfo()));
        $hygrometrie=array();
        while ($ligne = $requete->fetch()){
            array_push($hygrometrie,array(
                'hygrometrie' => $ligne['valeur']));
        }
        $requete->closeCursor();
        $bdd = connexionBdd();
        $requete = $bdd->prepare("SELECT valeur FROM mesure WHERE id_capteur>4 AND id_capteur<9 AND id_site=:id AND (date_mesure BETWEEN :deb AND :fin )ORDER BY date_mesure DESC;");
        $requete->bindParam(":id", $id);
        $requete->bindParam(":deb", $debut);
        $requete->bindParam(":fin", $fin);
        // execution de la requete
        $requete->execute() or die(print_r($requete->errorInfo()));
        $pression=array();
        while ($ligne = $requete->fetch()){
            array_push($pression,array(
                'pression' => $ligne['valeur']));
        }
        $requete->closeCursor();
        $bdd = connexionBdd();
        $requete = $bdd->prepare('SELECT DATE_FORMAT(date_mesure,"%d/%m/%Y %H:%i:%s") as datee FROM mesure WHERE id_site=:id AND (date_mesure BETWEEN :deb AND :fin )ORDER BY date_mesure DESC;');
        $requete->bindParam(":id", $id);
        $requete->bindParam(":deb", $debut);
        $requete->bindParam(":fin", $fin);
        // execution de la requete
        $requete->execute() or die(print_r($requete->errorInfo()));
        $date=array();
        while ($ligne = $requete->fetch()){
            array_push($date,array(
                'date' => $ligne['datee']));
        }
        $requete->closeCursor();
        $tabMesures = array('date' => $date, 
            'temperature' => $temperature,
            'pression' => $pression, 'hygrometrie' => $hygrometrie);
        // libération de la ressource
        
        //envoyer les données au format json
        header('Content-Type: application/json');
        echo json_encode($tabMesures, JSON_NUMERIC_CHECK);
    } catch (PDOException $e) {
        print "Erreur !: " . $e->getMessage() . "<br/>";
        die();
    }
}    


Résultat :



Console :


Configuration: Windows / Chrome 91.0.4472.77
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Je t'ai déjà dit de virer les " OR DIE" et d'utiliser ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

En plus, tu n'as pas besoin de faire une boucle avec un fetch pour stocker les données dans un array...; un fetchAll suffirait.
https://www.php.net/manual/fr/pdostatement.fetchall.php

Si malgré ça, tes array restent vides.. il faudra se pencher sur tes requêtes qui ne retournent peut-être rien.. tout simplement...
0
ceda13 Messages postés 88 Date d'inscription   Statut Membre Dernière intervention  
 
Qu'est ce qui ne te plait pas dans les OR DIE ?

Bon alors en fait j'avais fait une erreur de nom de variable ($id à la place de $IDSITE). Maintenant mes tableaux se remplissent bien mais pas comme je veux.

Je voudrais me retrouver avec un tableau "tabMesures"comme ça à la fin:

[{date: "xxxxx", temperature: xxx, pression: xxx, hygrometrie: xxx}, {date: "xxxxx", temperature: xxx, pression: xxx, hygrometrie: xxx},….......]

Comment je peux faire ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Applique les modifS que je t'ai indiqué...
Si tu neux pas tenir compte des bonnes pratiques/conseils qu'on te donne... On ne t'aidera pas !!
0
ceda13 Messages postés 88 Date d'inscription   Statut Membre Dernière intervention  
 
Quel est l'équivalent de ça en PHP svp :

for (int i=0, i<tab[NbEléments], i++)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
0