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 moyenne éléve-classe PHP SQL [SQL-Server]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut Calcul moyenne éléve-classe PHP SQL
    Bonjour à tous,
    Je suis entrain de développer un outil permettant de suivre la progression d'une classe d'élèves.
    Je voudrais afficher dans un tableau les informations suivantes

    Matière | Moyenne élève | Moyenne classe

    J'ai créé les tables suivantes

    alp_notes
    `id`
    `id_classe`
    `id_mat`
    `trimestre`
    `id_elv`
    `dat_note`
    `designation`
    `coeff`
    `note`

    alp_matieres
    `id_matiere`
    `id_prof`
    `matiere`
    `coef`

    alp_eleves
    `id_eleve`
    `id_classe`
    `nom`

    Pour le PHP :

    data.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     <?php
    		$querynew ="SELECT `matiere`, SUM(`note_c`) / SUM(`coeff`) AS moyenneELV 
    						FROM `alp_notes` A, `alp_eleves` B, `alp_matieres` C 
    						WHERE A.`id_classe` = '1' 
    						AND `trimestre`= 'T1' 
    						AND `id_elv` = '1' 
    						AND `id_mat` = `id_matiere` 
    						GROUP BY `id_matiere`
    						UNION
    						SELECT `matiere`, SUM(`note_c`) / SUM(`coeff`) AS moyenneCLASSE 
    						FROM `alp_notes` A, `alp_eleves` B, `alp_matieres` C 
    						WHERE A.`id_classe` = '1' 
    						AND `trimestre`= 'T1'  
    						AND `id_mat` = `id_matiere` 
    						GROUP BY `id_matiere`";
     
    		$records_per_page=20;
    		$newquery2 = $crud->paging($querynew,$records_per_page);
    		$crud->dataview($newquery2);
    	 ?>
    et class.crud.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public function dataview($querynew)
    	{
    		$stmt = $this->db->prepare($querynew);
    		$stmt->execute();
     
    		if($stmt->rowCount()>0)
    		{
    			while($row=$stmt->fetch(PDO::FETCH_ASSOC))
    			{
    				?>
                    <tr>
     
     
                    <td><?php print($row['matiere']); ?></td>				
                    <td><span class="label label-success"><?php print($row['moyenneELV']); ?></span>
                            <span class="label label-default"><?php print($row['moyenneCLASSE']); ?></span></td>							
     
     
     
     
     
                    </tr>
                    <?php
    			}
    		}
    		else
    		{
    			?>
                <tr>
                <td>Aucune donnée...</td>
                </tr>
                <?php
    		}
     
    	}
    Le soucis est qu'il m'affiche bien la moyenne de l'élève et de la classe mais l'un en dessous de l'autre....si vous pouvez m'éclairer car je débute là dedans et tourne en rond.... Merci beaucoup

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Regarde ton fichier css, aux lignes .label ET .label-success ET .label-default



    edit : tu ne veux pas un peu arrondir ta moyenne ? Ca doit faire bizarre quand tu as 10 chiffres après la virgule ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ROUND(SUM(`note_c`) / SUM(`coeff`) , 2) AS moyenneELV
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Merci pour l'arrondi
    A vrai dire je ne m'y étais pas attardé en espérant avant pouvoir résoudre ce soucis mais au moins vous me faites gagner du temps


    J'ai regardé au niveau du CSS

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .label{border:1px solid #000}
     
    .label-success{background-color:#5cb85c}
    .label-success[href]:focus,
    .label-success[href]:hover{background-color:#449d44}
     
    .label-default{background-color:#777}
    .label-default[href]:focus,
    .label-default[href]:hover{background-color:#5e5e5e}

    Mais ne vois pas ce qui pourrais ce pb de moyenne de l'élève et de la classe qui se superposent au lieu d'être côte à côte
    ... Merciii

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Tu sais quoi... On va d'abord vérifier que c'est bien un problème de CSS...

    Teste ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <td>
       <span><?php print($row['moyenneELV']); ?></span>
       <span><?php print($row['moyenneCLASSE']); ?></span>
    </td>
    edit : et à la réflexion, tu peux nous montrer tout ton fichier css ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    J'ai testé mais le résultat est le même...donc pas au niveau CSS alors ?
    Je soupçonne un pb au niveau de la requête car les select pris à part ras mais peut être que le fait de les mettre bout à bout donne un affichage à la suite...peut être les joindre par l'id_matiere mais comment ?

    Nb: J'ai copié le fichier CSS mais comme il regroupe plusieurs éléments de l'appli ADMIN LTE il fait trop de caractéres et mon message doit être validé par un modérateur

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Une requête du type
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT `matiere`, SUM(`note_c`) / SUM(`coeff`) AS moyenneELV, AVG(SUM(`note_c`) / SUM(`coeff`)) AS moyenneCLASSE	
    FROM `alp_notes` A, `alp_eleves` B, `alp_matieres` C 						
    WHERE A.`id_classe` = '1' 						
    AND `trimestre`= 'T1' 						
    AND `id_elv` = '1' 						
    AND `id_mat` = `id_matiere` 						
    GROUP BY `id_matiere`

    (Qui plante pour "Invalid use of group function ")
    où on aurais côté a cote la moyenne de l'élève et la moyenne de la classe par matière.
    Si vous voyez où cela peut clocher mercii

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/04/2015, 14h06
  2. Requête sql server pour calculer moyenne entre deux dates
    Par JérômeKGS dans le forum Développement
    Réponses: 2
    Dernier message: 17/04/2015, 12h04
  3. [WD14] calcul de la moyenne de classe
    Par hassdevelop dans le forum WinDev
    Réponses: 12
    Dernier message: 10/04/2012, 17h22
  4. Réponses: 35
    Dernier message: 10/05/2006, 01h11

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