Tableau multi dimensionnel

Fermé
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023 - 12 juin 2021 à 10:38
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 12 juin 2021 à 13:54
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

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 juin 2021 à 11:08
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 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
12 juin 2021 à 12:03
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 juin 2021 à 12:23
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 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
12 juin 2021 à 12:29
Quel est l'équivalent de ça en PHP svp :

for (int i=0, i<tab[NbEléments], i++)
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
12 juin 2021 à 13:54
0