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 :

Libellé de clé étrangère [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut Libellé de clé étrangère
    Bonjour,

    J'ai crée des pages PHP qui questionnent une base de données que j'ai créé.
    Jusque là tout va bien...

    Mais lorsque je lis une de mes tables en demandant de mettre l'intitulé de la clé étrangère au lieu de son code, ça bug.......

    Dans ma table j'ai les données suivantes pour la clé étrangère :
    code_a, code_b, code_a, code_c, code_b

    Et quand je lui demande de m'afficher ma table avec le libellé de mes clés étrangères, il m'affiche :
    lib_a, lib_a, lib_a, lib_c, lib_c

    Voici mon code :

    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
    <?php
     
    //Connexion à la base de données
    mysql_connect('localhost','root','');
    mysql_select_db('test_si');
    $table ='contrat';
    $messagesParPage=6; //Nous allons afficher 6 messages par page.
     
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total=mysql_query("SELECT COUNT(*) AS total FROM logpp_contrat;"); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    // La requête sql pour récupérer les messages de la page actuelle.
    $query =('SELECT * FROM logpp_contrat ORDER BY NUM_CONT ASC LIMIT '.$premiereEntree.', '.$messagesParPage.';');
    $retour_messages=mysql_query($query) or die($query . " - " . mysql_error());
    //$result = mysql_query($query, $link) or die($query . " - " . mysql_error());
    //echo ".'$retour_messages'.";
    echo "<h2>Lecture de la table contenant les contrats</h2>";
    	 echo '<p /><table border="1" width="auto">';
    	 echo "<tr><th>Numéro du contrat</th><th>Libellé du SI</th><th>Restrictions(s)</th><th>Date</th></tr>";
     
    while($ligne=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    //print_r($ligne);
    {
     
    	$numero=$ligne['NUM_CONT'];
    	$si=$ligne['CODE_SI'];
    	$systeme=mysql_query("SELECT NOM_SI FROM logpp_si, logpp_contrat where logpp_si.CODE_SI=logpp_contrat.CODE_SI and logpp_contrat.CODE_SI = '$si';");
    	while ($ligne2 = mysql_fetch_assoc($systeme)){ //or die($code_systeme . " - " . mysql_error()))
    		$nom_si=$ligne2['NOM_SI'];
    	}
    	$restriction=$ligne['RESTRICTION_CONT'];
    	$date=$ligne['DATE_CONT'];
    	echo "<tr>";
    	echo "<td>".$numero."</td>";
    	echo "<td>".$nom_si."</td>";
    	echo "<td>".$restriction."</td>";
    	echo "<td>".$date."</td>";
    	echo "<tr>";
    	//echo '</table><br /><br />';
    	//$ligne=mysql_fetch_assoc($retour_messages);
    }
     
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="lecture_contrat.php?page='.$i.'&table='.$table.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
     
    ?>
    Auriez-vous une idée sur mon problème ?

    Cela fait un moment que je me casse la tête dessus........

    Je vous remercie.

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonjour,

    La requête pour récupérer NOM_SI ne devrait-elle pas être tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM_SI FROM logpp_si where CODE_SI = '$si';
    Fred

  3. #3
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Effectivement c'est plus simple........

    Mais même en simplifiant la requête, j'ai encore mon problème...

    Je te remercie pour ton aide.

  4. #4
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Tu pourrais peut-être modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td>".$nom_si."</td>";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td>"$si." : ".$nom_si."</td>";
    juste pour voir si, effectivement,
    tu as bien
    tantôt code_b lib_a
    tantôt code_b lib_c
    à ce niveau-là du code
    ou si le problème se situe ailleurs.

    Fred

  5. #5
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    J'ai fait ce que tu m'as suggéré, en remplaçant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td>".$nom_si."</td>";
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td>".$si. ":" .$nom_si."</td>";
    Et je trouve en résultat :

    code_a : lib_a
    code_b : lib_a
    code_a : lib_a
    code_c : lib_c
    code_b : lib_c

    (Je retrouve toujours mon bug )

  6. #6
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Est-ce que dans ta table logpp_si,
    tu as vraiment une ligne avec CODE_SI=code_b ?
    J'ai bien peur que non.
    Fred

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

Discussions similaires

  1. Affichage d'une clé étrangère par son libellé
    Par gagaz21 dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/07/2011, 09h13
  2. [EJB2.1 Entity] [BES] Mapping automatique et clés étrangères
    Par Bobby McGee dans le forum Java EE
    Réponses: 3
    Dernier message: 15/10/2003, 10h33
  3. [clé primaire et étrangère]
    Par viny dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/08/2003, 18h23
  4. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  5. [Script]prob de clés étrangères
    Par Seb7 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/07/2003, 17h37

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