IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Calcul sur valeur de tableau issue d'une requête sql


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut Calcul sur valeur de tableau issue d'une requête sql
    Bonjour
    Je demande votre aide sur une operation que j'esai de faire en vain.

    J'exécute une requête afin de récupérer des données d'une bdd, je voudrais récupérer ces données et exécuter des calculs pour ensuite les envoyer coté client dans un tableau.
    En utilisant mon code, j'arrive à récupérer les données mais en bouclant sur celles ci le tableau renvoyé ne contient qu'une seule ligne du résultat.
    Ensuite ce que je souhaiterais c'est d'abord boucler sur les notes de chaque matière, faire une addition avec un variable $majoration et ensuite créer un tableau de sorti qui avec chaque couple matière => note .

    Mes codes actuels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sqls = 'SELECT n_matiere AS matiere, SUM(note) AS note FROM tbl_examen GROUP BY n_matiere ORDER BY col_matiere ASC';
    			$stmt = $this->conn->prepare($sqls);
    			$stmt->execute();
    			$result = $stmt->fetchAll();
    			return $result;
    le résultat de la requête
    Nom : ed.png
Affichages : 154
Taille : 3,6 Ko

    ce que j'aimerai pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach($result as $row)
    				{
    					$data["matiere"] = $row["matiere"];
    					$data["note"] = $row["note"] + $majoration;
                                            $data["moyenne"] = $row["note"] / 2;
    				}
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Tu fais un GROUP BY sur une colonne non sélectionnée
    La colonne n_matiere n'est pas groupée
    => Il faut revoir ta requête, toutes les colonnes sélectionnées et non agrégées doivent être groupées

    Ensuite tu devrais pouvoir intégrer ton calcul au SQL, à voir

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    En fait c'est une erreur lors de la saisie du message sinon la requette est ok et renvoie les données en les groupant comme souhaité.
    C'est vrai que ca serai facile d'effectuer les calculs directement dans le sql mais cette option n'est pas possible dans mon cas parce que les variables utilisés pour les calculs proviennent d'autres operations portées par des fonctions et les calculs a realiser dans les boucles ne sont pas uniquement des additions, il peut y avoir des equations assez complexe et ce que je souhaite c'est arriver a effectuer des calculs et recuperer les resultats dans un tableau. La je bug serieusement et je demande de l'aide.

    Merci pour votre aide

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    En fait c'est une erreur lors de la saisie du message sinon la requette est ok et renvoie les données en les groupant comme souhaité.
    Quel est le problème alors ?
    Donne un exemple 1. de ce que tu aimerais obtenir et 2. de ce que tu obtiens

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    A partir du code ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT matiere AS matiere, SUM(notes) AS note FROM examen GROUP BY matiere ORDER BY matiere ASC';
    $stmt = $this->conn->prepare($sql);
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result;
    j'obtient le résultat ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [
        {
            "matiere": "CHIMIE",
            "note": "21"
        },
        {
            "matiere": "SVT",
            "note": "22"
        }
    ]
    Ce que je souhaiterai pouvoir faire, c'est récupérer la note, effectuer l'opération (par exemple une addition de 5) et envoyer la matière concernée ainsi que la nouvelle note vers un nouveau tableau qui sera utilisé dans JS pour afficher les résultats finaux.

    Le tableau finale en considérant qu'on fait + 5 donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [
        {
            "matiere": "CHIMIE",
            "note": "26"
        },
        {
            "matiere": "SVT",
            "note": "27"
        }
    ]
    Merci pour l'aide que tu m'apportes

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Dans ton foreach() $data ne contiendra que le dernier tour de boucle.
    => Il faut empiler les résultats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $data = [];
    foreach($result as $row) {
        $data[] = [
            "matiere" => $row["matiere"],
            "note" => $row["note"] + $majoration,
            "moyenne" => $row["note"] / 2,
        ];
    }

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    Bonjour
    C'est exactement ce que je cherchais, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Les données issues d'une requête SQL sont erronées
    Par edenreal dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2009, 00h41
  2. Image issue d'une requête SQL ne s'affichent pas toutes
    Par princesse95 dans le forum Langage
    Réponses: 21
    Dernier message: 13/03/2009, 15h22
  3. [SQL] Accéder aux données d'un tableau issue d'une requete SQL
    Par richard038 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/03/2008, 11h20
  4. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  5. Afficher une image issue d'une requête SQL
    Par aygitci dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2007, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo