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

Langage PHP Discussion :

Indiquer que c'est ID de la table inscrits_en et non de la table etudiants [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Indiquer que c'est ID de la table inscrits_en et non de la table etudiants
    Bonjour tout le monde,

    Je viens de découvrir un bug dans ma page web.

    Mon but est d'afficher l'ID de la table inscrits_en, la note se trouvant dans la table inscrits_en, le matricule de l'étudiant se trouvant dans la table inscrits_en, le nom de l'étudiant se trouvant dans la table etudiants, le prénom se trouvant dans la table etudiants, la note se trouvant dans la table inscrits_en.

    Le problème, c'est que c'est l'ID de la table etudiants qui est utilisé dans la page web et non celui de la table inscrits_en (ce qui crée un gros bug, une cote pour un étudiant va dans un autre étudiant).

    J'utilise cette chaine SLQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_Affichage_Etudiants = 
    "SELECT *
    FROM `inscrits_en`
    LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
    WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ";
    Je pense que le problème vient de là.

    Comment puis-je indiquer que c'est l'ID de la table inscrits_en que je dois utiliser et non l'ID de la table étudiants ?

    voici l'entiérté de la page :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
    session_start();
    include('../connexion.php');
    $_SESSION['id_categories'] = $_POST['id_categories']; 
     
     
    //affiche le bouton "clôturer" en le désactivant si le cours est clôturé ou en l'activant si le cours n'est pas clôturé
    // IMPORTANT : il faut laisser le code ici pour que le bouton apparaisse au-dessus !!!!
     
    $sql_check_cloture = "SELECT Cloture FROM cours WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND Categorie = '".$_POST['id_categories']."' ";
    //echo $sql_check_cloture;
    $query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
    $row_Cloture = mysql_fetch_assoc($query_check_cloture);
     
    $sql_Affichage_Etudiants = 
    "SELECT *
    FROM `inscrits_en`
    LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
    WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ";
     
    $query_comptage = mysql_query($sql_Affichage_Etudiants);
     
    if(!$query_comptage) {echo('Attention, la requete ne fonctionne pas ! '); }
     
    //ici viendra le tableau
     
    // A REMETTRE
    // <td style="display:none"></td> 
    // <td style="display:none"></td> 
     
    $compteur = 0;
    echo '<table width="100%" border="1"> 
    		<tr>
    			<td align="center">Note originale</td>
    			<td align="center">ID</td>
    			<td align="center">Matricule</td> 
    			<td align="center">Nom</td> 
    			<td align="center">Prénom</td> 
    			<td align="center" width="5">Cote</td> 
    			<td align="center">Report</td> 
    		</tr>';	 
    while ($tab = mysql_fetch_array($query_comptage)){
    //gestion de la couleur des lignes, fait appel ? CSS/couleurs.css
    $couleur = ($compteur % 2 == 0) ? "ligne0" : "ligne1";
     
    //onblur="comparer(document.getElementById(\'note_originale'.$tab['ID'].'\').value, document.getElementById(\'note_zone_de_texte'.$tab['ID'].'\').value);"
     
    //chiffres(event) est la fonction javascript qui vérifie les caract?res entrés par l'utilisateur (voir js/ChiffresOnly.js)
    //Comparer est la fonction javascript qui vérifie si la cote encodée par le Professeur est la m?me que celle de la base de données, si
    //c'est la m?me, on n'exécute pas le code ajax, autrement, on exécute le code AJAX qui va mettre ? jour la bd.
    //onfocus="this.select();" permet de donner le focus a la zone de texte soit si il prend le focus par un clic de souris, soit si il prend le focus apr?s une mauvaise entrée (exemple si le visiteur tape "w")
     
    //A REMETTRE
    // <td style="display:none"><input type="hidden" name="note_originale" id="note_originale'.$tab['ID'].'"  value="' . $tab['NOTE'] . '" /></td>  
    // <td style="display:none"><input type="hidden" name="i_d" id="i_d" value="' . $tab['ID'] . '" /></td>  
    echo'	 
     <tr class="'.$couleur.'">  
     			<td width="5%" align="center">' . $tab['NOTE'] . '</td>  
        		<td width="25%" align="center">' . $tab['ID'] . '</td>			
    			<td width="5%" align="center">' . $tab['MATRICULE_ET'] . '</td>  
        		<td width="25%" align="center">' . $tab['NOM_ET'] . '</td>  
        		<td width="35%" align="center">' . $tab['PRENOM_ET'] .'</td>'
    			;  
     
    $sql_check_cloture = "SELECT Cloture FROM cours WHERE MNEMONIC = '".$tab['MNEMONIC']."' AND TYPE_DE_COURS = '".$tab['TYPE_DE_COURS']."' AND Categorie = '".$tab['CATEGORIE']."' ";
    //echo $sql_check_cloture;
    $query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
    $row_Cloture = mysql_fetch_assoc($query_check_cloture);
    //echo $row_Cloture['Cloture']; 
    echo' <td><input name="note_zone_de_texte'.$tab['ID'].'" type="text"';
    if($row_Cloture['Cloture'] == 1)  //si le cours est clôturé, on désactive les zones de texte
    {
      echo ' disabled="disabled" ';
    }
     
    echo 'id="note_zone_de_texte'.$tab['ID'].'" onfocus="this.select();this.style.backgroundColor=\'yellow\'" onchange="verif(this.value,'.$tab['ID'].');" onblur="this.style.backgroundColor=\'white\'"  size="4" style="text-align:center" width="3	%" value="' . $tab['NOTE'] . '"   /> </td>';
    echo' <td width="25%" align="center"></td> </tr>';
     $compteur++; 
     
    } 
     
    echo'</table>'; 
     
     
    //si le cours est clôturé, le bouton "clôturer" est désactivé
     
     
     
     
    ?>
    Merci d'avance pour votre aide.

    beegees

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    les méfaits du SELECT *
    SELECT inscrits_en.ID ....
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    les méfaits du SELECT *
    Salut Sabotage,

    Merci pour ta réponse qui règle un premier bug.

    Je vais voir pour le reste et je reviens.

    Merci encore.

    beegees

  4. #4
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Deux informations n'apparaissent pas dans mon tableau
    Bonjour tout le monde,

    J'ai cette chaine SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_Affichage_Etudiants = 
    "SELECT inscrits_en.ID, inscrits_en.MATRICULE_ET, inscrits_en.MNEMONIC, inscrits_en.ANNEE_ACADEMIQUE, inscrits_en.CATEGORIE, inscrits_en.DECISION_ANNEE, inscrits_en.SESSION, inscrits_en.TYPE_DE_COURS, inscrits_en.NOTE
    FROM `inscrits_en`
    LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
    WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ";
    J'aurais voulu afficher le nom et le prénom des étudiants.

    Ces deux informations viennent de la table cours.

    J'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($tab = mysql_fetch_array($query_comptage)){
    echo'	 
     <tr class="'.$couleur.'">  
     			<td width="5%" align="center">' . $tab['NOTE'] . '</td>  
        		<td width="25%" align="center">' . $tab['ID'] . '</td>			
    			<td width="5%" align="center">' . $tab['MATRICULE_ET'] . '</td>  
        		<td width="25%" align="center">' . $tab['NOM_ET'] . '</td>  
        		<td width="35%" align="center">' . $tab['PRENOM_ET'] .'</td>'
    			;
    Le problème, est que le nom et le prénom des étudiants n'apparaissent pas.

    Dois-je changer quelque chose dans la chaine SQL ?

    Merci d'avance pour l'aide.

    beegees

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les champs ne sont pas dans le SELECT
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Les champs ne sont pas dans le SELECT
    beegees =>

    Je ne savais pas que je pouvais faire comme ça.

    ça marche, merci beaucoup Sabotage.

    Tu es vraiment hyper, super sympa et très efficace en plus.

    Bonne soirée à toi.

    beegees

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/12/2013, 21h22
  2. Réponses: 1
    Dernier message: 14/07/2009, 09h37
  3. variable qui m'indique que l'impression s'est bien exécutée
    Par lionelenza dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2008, 17h34
  4. [GD] imagedestroy qui m'indique que son paramètre n'est pas correct
    Par karaemrah dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/08/2007, 17h55
  5. Réponses: 2
    Dernier message: 26/05/2007, 21h22

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