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 :

Affichage linéaire / transversal


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut Affichage linéaire / transversal
    Bonjour à tous

    Je viens solliciter votre aide sur un problème qui m'empèche de dormir depui qq jours.

    Détails de mes 4 table:

    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
    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.........
    Le problème est que j'aimerais pouvoir en affichant un tableau ressemble a ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ----------------|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..
    En éspérant que vous pourrez m'aider et enfin en finir avec ce projet

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Bonjour lilia_dream,
    J'espere que tu as bien progressé depuis la dernière fois.
    D'après le tableau que tu veux obtenir, il ne peut y avoir qu'une seule note par matiere (nom matiere 1,nom matiere 2...) et par élève.
    Est ce bien le cas ?
    Z.

  3. #3
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Bonjour Zwiter
    Merci pour la reponse rapide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D'après le tableau que tu veux obtenir, il ne peut y avoir qu'une seule note par matiere (nom matiere 1,nom matiere 2...) et par élève.
    effectivement

    Merci encore

  4. #4
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Alors, je vois 2 methodes :
    La 1ere reside en la selection de toutes les informations en une seule requete SQL, suivit du traitement de ces données via PHP pour definir d'une part les entetes du tablea (nom des eleves), puis d'autre les lignes du tableaux (soit les notes pour chacun par matière).

    L'autre solution serait de faire une requete pour selectionner tout tes eleves par ordre alphabetique, ou id.
    Afficher l'entete de ton tableau.
    ENsuite, une requete pour selectionner les notes de chaque matière, trièes exactement selon le meme ordre que precédament.
    Afficher chaque matière en tant que ligne du tableau.

    Personnellement, je favoriserai la 1ere solution.
    il existe encore d'autres solutions (concatenation de champ, utilisation de procedure/fonctions) plus complexes a mettre en oeuvre.

    Z.

  5. #5
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Bonjour Zwiter

    j'ai debutee par cet exemple

    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
     
    <?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 idnote ,notes.idetudiant,idmatiere ,idetudiant,NomEtud ,titre ,note 
                 FROM matiere 
                JOIN matiere USING (idmatiere) 
                JOIN notes USING (idmatiere) 
                JOIN etudiant USING (idetudiant)';
    	$result = mysql_query($query)or exit('Erreur: '.mysql_error());
     
    echo '
    <table bgcolor="#FFFFFF" width="80" border="1" cellspacing="1" cellpadding="1">
    <tr>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Code_Note</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Code_Etudiant</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Nom_Etudiant</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Nom_Matiere</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Notes</b></div></td>
    </tr>';
    while ($row = mysql_fetch_array($result)) {
    echo'
    <tr>
    <td bgcolor="#CCCCCC">'.$row["idnote"].'</td>
    <td><div align="center">'.$row['idetudiant'].'</div></td>
    <td><div align="center">'.$row['NomEtud'].'</div></td>
    <td><div align="center">'.$row['titre'].'</div></td>
    <td><div align="center">'.$row['note'].'</div></td>
    </tr>';
    }
    echo '</table>';
    ?>

  6. #6
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Bonjour

    la requete de jointure ca marche pas ,j'ai trouvee cet erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur: Table/alias: 'matiere' non unique
    Merci D'avance

  7. #7
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    bonjour,
    Pourquoi realises-tu une equijointure entre matiere et matiere ?
    Z.

  8. #8
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Bonjour Zwiter

    Merci beaucoup


    Sauriez-vous svp me dire comment je peux resoudre ce probleme ?

    Merci d'avance

  9. #9
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Retirer la ligne :
    JOIN matiere USING (idmatiere)
    serait une solution.

    Z.

  10. #10
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    ben j'ai enlevee la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOIN matiere USING (idmatiere)
    mais une nouveau erreur vient apparaitre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur: Champ: 'idmatiere' dans field list est ambigu
    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
     
    <?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 idnote ,notes.idetudiant,idmatiere ,idetudiant,NomEtud ,titre ,note 
                 FROM matiere 
                JOIN notes USING (idmatiere) 
                JOIN etudiant USING (idetudiant)';
    	$result = mysql_query($query)or exit('Erreur: '.mysql_error());
     
    echo '
    <table bgcolor="#FFFFFF" width="80" border="1" cellspacing="1" cellpadding="1">
    <tr>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Code_Note</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Code_Etudiant</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Nom_Etudiant</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Nom_Matiere</b></div></td>
    <td bgcolor="#FFAD5B"><div style="text-align: center"><b>Notes</b></div></td>
    </tr>';
    while ($row = mysql_fetch_array($result)) {
    echo'
    <tr>
    <td bgcolor="#CCCCCC">'.$row["idnote"].'</td>
    <td><div align="center">'.$row['idetudiant'].'</div></td>
    <td><div align="center">'.$row['NomEtud'].'</div></td>
    <td><div align="center">'.$row['titre'].'</div></td>
    <td><div align="center">'.$row['note'].'</div></td>
    </tr>';
    }
    echo '</table>';
    ?>

  11. #11
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Recuperes-tu le idmatiere de note, ou de matiere ?
    Il faut tout preciser a moins de faire des NATURAL JOIN
    Z.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Recuperes-tu le idmatiere de note, ou de matiere ?
    je recupere l'idmatiere de matiere et celui de notes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query = 'SELECT idnote ,notes.idetudiant,idmatiere ,idetudiant,NomEtud ,titre ,note 
                 FROM matiere 
                JOIN notes USING (idmatiere) 
                JOIN etudiant USING (idetudiant)';

  13. #13
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Oui, mais SQL lui ne le sais pas. Il faut lui dire !

  14. #14
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Citation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Oui, mais SQL lui ne le sais pas. Il faut lui dire !

    comment puis-je resoudre ca

  15. #15
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Tu connais la solution, puisque tu l'as utilisé pour tes autres attributs :
    tu dois prefixer l'attribut par le nom de la table.
    Z.

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



    Citation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Tu connais la solution, puisque tu l'as utilisé pour tes autres attributs : 
    tu dois prefixer l'attribut par le nom de la table.
    Z.
    stp,franchement je ne sais pas d'ou vient le probleme


  17. #17
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    utilsie matiere.idmatiere ou bien note.idmatiere a la place de idmatiere

  18. #18
    Membre confirmé Avatar de lilia_dream
    Inscrit en
    Mars 2009
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 267
    Par défaut
    Merci Zwiter

    cette requete ca marche nikle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query = 'SELECT idnote ,notes.idetudiant,notes.idmatiere,NomEtud ,titre ,note 
                  FROM matiere 
                  JOIN notes USING (idmatiere) 
                  JOIN etudiant USING (idetudiant)';
    mais j'ai un probleme au niveau d'affichage
    je voudrais personnaliser l'affichage en fait dans la table etudiant contient le champ niveau et le champ filiere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Niveau [Premiere Annee,.....4Annee]
    Filierer [soit TSI,TSGI]
    Sauriez-vous svp me dire comment je peux faire cela

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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