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 par matière / module


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut Calcul par matière / module
    Bonjour à tous

    depuis une semaine je travaille sur la calcule de somme par matiere et par module mais je n'arrive pas a faire ce calcule

    pourriez-vous m'aider

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    SAlut ,
    On pourrait avoir quelques infos supplémentaires ? du style le calcul se fait en PHP ? directement par un SGBD ? un peu de code ?

    merci
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Merci RideKick de ta reponse rapide

    se sont les tables de ma base de donne

    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
     
    Module([IdModule,NomModule) 
    ______________1_______Formation
    ______________2_______Math
    _____________... ______...
     
    Matiere(IdMatiere,IdModule,Matiere_Nom,Coefficient)
    ___________1________2________Mat-x_______3 
    ___________2________2________Mat-y_______4
    ___________3________2________Mat-z_______3
    ___________4________2________Mat-u_______3 
    ___________...________...________..._________...
    ___________5________1________Frnacais_____4
    ___________6________1________Englais______3
    ___________7________1_______Espagnole_____3 
    etc..............
     
    Etudiant(IdEtudiant,__Nom,___ Prénom______Niveau)
    ________1_________Beegees____Bernard______1erAn
    ________2_________Martin______Louis________2emeAn
    ________...__________...________...__________4emeAn
    etc..........
    Note(IdNote_____idMatiere_____idetudiant_____Notes )
    ______1___________1____________1__________12
    ______2___________1____________2__________10
    ______3___________1____________3__________12
    ______? ___________?_____________?__________?
    etc.........

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ----------------|nom élève|----|nom élève 2|---|nom élève 3|---|nom élève 4|etc...
    -----------------------------------------------------------------------------
    nom matiere 1|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc..
    nom matiere 2|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc..
    nom matiere 3|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc..
    nom matiere 4|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc..
    sommematiere |--|------------|--|------------|--|------------|--|------------|
    En éspérant que vous pourrez m'aider

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Hummmm
    Tu as pas la structure des tables comme ça je peux les creer de mon cote et m'appuyer dessus pour les requêtes ? (avec quelques données si possible lol)
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Re-bonjour
    Tu as pas la structure des tables comme ça je peux les creer de mon cote et m'appuyer dessus pour les requêtes ? (avec quelques données si possible lol)
    en faite c'est la structure de ma base de donnee ,j'ai seulement mis des enregistrement ,quoi

    je sollicite votre aide pour reussir le code

    Merci d'avance

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Bah justement , dans PHPMYADmin , tu fais "Exporter" et tu me fais passer le tout que je puisse de mon cote tester ce qu'on va tenter de coder
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  7. #7
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut Merci RideKick
    Merci RideKick

    voici le fichier de ma BDD


    Merci encore de votre aide

  8. #8
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    lol , y'a pas de données dans "notes"

    Bon le principe je pense :

    Sélectionner pour chaque matière la somme des notes (ou la moyenne) , donc on va faire dans un premier temps un SELECT sur la table matiere avec une jointure sur la table note
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    BOn alors une petite requete sur ce que je viens de dire :


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT m.titre, SUM( n.note ) AS SommeNote
    FROM matiere m
    LEFT JOIN notes n ON n.idmatiere = m.idmatiere
    GROUP BY m.idmatiere

    LA on fait la somme , pour faire la moyenne suffit de mettre AVG a la place de SUM.
    Remarque importante : le Group by est obligatoire sinon il te fais la somme de toute la table.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  10. #10
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Merci RideKick

    Ben j'ai testee la requete sous phpMyadmin et ca marche nikle

    alors j'aimerai mettre aussi un peu de cooperation au niveau de php mais ben ca marche pas

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
    $host='*****';
    $user='*****';
    $pass='';
    $dbase='*******';
     
    // Connexion au serveur
     
    $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion");
                 mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base");
     
    	$query=SELECT m.titre, SUM( n.note ) AS SommeNote
               FROM matiere m
               LEFT JOIN notes n ON n.idmatiere = m.idmatiere
               GROUP BY m.idmatiere
    	$result = mysql_query($query)or exit('Erreur: '.mysql_error());
     
    ?>
     
    		<table bgcolor="" width="50" border="1" cellspacing="1" cellpadding="1">
    			<tr>
    				<td bgcolor=""><div style="text-align: center"><b>Code_Note</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Code_Etudaint</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Nom_Etudiant</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Nom_Matiere</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Notes</b></div></td>
    			</tr>';
     
    		<?php
    		while ($row = mysql_fetch_array($result)) 
    		{
    		?>
     
    			<tr>
    				<td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td>
    				<td><div align="center"><?php echo $row['idetudiant'] ?></div></td>
    				<td><div align="center"> <?php echo $row['NomEtud'] ?></div></td>
    				<td><div align="center"><?php echo $row['titre'] ?></div></td>
    				<td><div align="center"> <?php echo$row['note'] ?></div></td>
    			</tr>
     
    		<?php
    		}
    		?>
    Merci de votre aide

  11. #11
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query="SELECT m.titre, SUM( n.note ) AS SommeNote
               FROM matiere m
               LEFT JOIN notes n ON n.idmatiere = m.idmatiere
               GROUP BY m.idmatiere";
    marchera beaucoup mieux
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  12. #12
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur: Champ 'NomEtud' inconnu dans field list
    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
    37
     
    $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion");
                 mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base");
     
    	$query="SELECT idnote,idetudiant,NomEtud,m.titre, SUM( n.note ) AS SommeNote
               FROM matiere m 
               LEFT JOIN notes n ON n.idmatiere = m.idmatiere
               GROUP BY m.idmatiere";
    	$result = mysql_query($query)or exit('Erreur: '.mysql_error());
     
    ?>
     
    		<table bgcolor="" width="50" border="1" cellspacing="1" cellpadding="1">
    			<tr>
    				<td bgcolor=""><div style="text-align: center"><b>Code_Note</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Code_Etudaint</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Nom_Etudiant</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Nom_Matiere</b></div></td>
    				<td bgcolor=""><div style="text-align: center"><b>Notes</b></div></td>
    			</tr>';
     
    		<?php
    		while ($row = mysql_fetch_array($result)) 
    		{
    		?>
     
    			<tr>
    				<td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td>
    				<td><div align="center"><?php echo $row['idetudiant'] ?></div></td>
    				<td><div align="center"> <?php echo $row['NomEtud'] ?></div></td>
    				<td><div align="center"><?php echo $row['titre'] ?></div></td>
    				<td><div align="center"> <?php echo$row['note'] ?></div></td>
    			</tr>
     
    		<?php
    		}
    		?>
    Merci d'avance

  13. #13
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Normal tu essaie de recuperer des infos dans une table que tu n'as pas mentionné:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT n.idnote,e.idetudiant,e.NomEtud,m.titre, SUM( n.note ) AS SommeNote
               FROM matiere m , etudiant e
               LEFT JOIN notes n ON n.idmatiere = m.idmatiere
               GROUP BY m.idmatiere";
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  14. #14
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Normal tu essaie de recuperer des infos dans une table que tu n'as pas mentionné:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT n.idnote,e.idetudiant,e.NomEtud,m.titre, SUM( n.note ) AS SommeNote
               FROM matiere m , etudiant e
               LEFT JOIN notes n ON n.idmatiere = m.idmatiere
               GROUP BY m.idmatiere";
    mea culpa cette requete ne marche pas , mieux vaut proceder ainsi :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT n.idnote, n.idetudiant, e.NomEtud, m.titre, SUM( n.note ) AS SommeNote
    FROM matiere m
    LEFT JOIN notes n ON n.idmatiere = m.idmatiere
    LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant
    GROUP BY m.idmatiere
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  15. #15
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Merci RideKick

    mais SommeNote n'est pas afficher dans le tableau

    Merci d'avance

  16. #16
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Surement parce que tu ne l'as pas demandé ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <tr>
    				<td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td>
    				<td><div align="center"><?php echo $row['idetudiant'] ?></div></td>
    				<td><div align="center"> <?php echo $row['NomEtud'] ?></div></td>
    				<td><div align="center"><?php echo $row['titre'] ?></div></td>
    				<td><div align="center"> <?php echo$row['note'] ?></div></td>
    			</tr>
    Il faudrait peut etre le rajouter dans ton html ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <tr>
    				<td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td>
    				<td><div align="center"><?php echo $row['idetudiant'] ?></div></td>
    				<td><div align="center"> <?php echo $row['NomEtud'] ?></div></td>
    				<td><div align="center"><?php echo $row['titre'] ?></div></td>
    				<td><div align="center"> <?php echo$row['note'] ?></div></td>
    <td><div align="center"> <?php echo$row['SommeNote'] ?></div></td>
    			</tr>
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  17. #17
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Bonjour RideKick

    Merci beaucoup de votre aide

    j'aimerai calculer la moyenne des matiere par module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $query="SELECT n.idnote,n.note, n.idetudiant, e.NomEtud, m.titre, AVG( n.note ) AS SommeNote
                FROM matiere m
                LEFT JOIN notes n ON n.idmatiere = m.idmatiere
                LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant
                GROUP BY m.idmatiere";
    	$result = mysql_query($query)or exit('Erreur: '.mysql_error());
    j'ai ajoutee la Fonction AVG mais ca marche pas

    Merci d'avance

  18. #18
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Normal la tu calcule la moyenne par matiere .....

    La bonne requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT n.idnote, n.note, n.idetudiant, e.NomEtud, mo.nom AS NomModule, m.titre as NomMatiere, AVG( n.note ) AS SommeNote
    FROM matiere m
    LEFT JOIN notes n ON n.idmatiere = m.idmatiere
    LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant
    LEFT JOIN module mo ON m.idmodule = mo.idmodule
    GROUP BY m.idmatiere
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  19. #19
    Membre du Club Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Points : 43
    Points
    43
    Par défaut
    Merci RideKick

    j'ai un erreur concernant le champ Notes

    Merci d'avance

  20. #20
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Faudrait penser peut être a réfléchir tu crois pas ?
    Apparemment titre n'existe pas .....donc si tu regarde dans la requête des modules , j'ai changé titre en NomMatiere, des fois c'est pas plus compliqué suffit de se donner la peine ....
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

Discussions similaires

  1. Requête syntaxe de calcul par comparaison
    Par valalu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2007, 11h41
  2. Réponses: 3
    Dernier message: 24/03/2007, 13h42
  3. Saisie de calcul par l'utilisateur
    Par zenaf dans le forum C
    Réponses: 11
    Dernier message: 26/10/2006, 19h42
  4. Pb Requetes et calcul par condition
    Par flagfight dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 10h30
  5. [Access] Calcule par ligne dans une requête
    Par Belze dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2006, 09h09

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