{PostgreSQL}

Bonjour,
j'ai une table principale Projet qui contient des identifants(clés étrangères) liés à d'autres tables (Localisation,nature,mo,date,etat), contenant la liste des projets, et des références à d'autres informations liées au projet : code-localisation, id-nature, code-etat,code-mo,id-date.
dans ma base, j'ai pour chaque code une table qui me donne la correspondance entre le code, et un libellé plus compréhensible. ce que je veux pour chacun des codes: remplacer les codes numériques par leurs valeurs textuelles.
pour cela il me faut aller chercher les infos dans les autres tables.
ça c'est le code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title> gestion de projet </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>
<body>

<?php
$conn =("host=localhost port=5432 dbname= gdt user=postgres password=gabero");
$dbconn = pg_connect("$conn");
// connexion à une base de données nommée "gdt" sur l'hôte "localhost" avec un
// nom d'utilisateur"postgres" et un mot de passe"gabero"
// éxecution de la requète SQL
$sql = pg_query("select * from projet");
//En-tete du tableau
echo "<table border=\"1\" >
<caption><strong> PROJET</strong></caption>
<tr>
<td>id-projet</td>
<td>nom-projet</td>
<td>code-mo</td>
<td>resultat-projet</td>
<td>montant-projet</td>
<td>code-localisation</td>
<td>id-nature</td>
<td>id-date</td>
<td>code-etat</td>
</tr>";
// utilisation de la boucle tant que
while($infos = pg_fetch_array($sql)) {
// affichage des resultats
echo"<tr>";//ligne du tableau
echo "<td>";echo $infos['id-projet'];echo "</td>";
echo "<td>";echo $infos['nom-projet'];echo "</td>";
echo "<td>";echo $infos['code-mo'] ;echo "</td>";
echo "<td>";echo $infos['resultat-projet'] ;echo "</td>";
echo "<td>";echo $infos['montant-projet'] ;echo "</td>";
echo "<td>";echo $infos['code-localisation'] ;echo "</td>";
echo "<td>";echo $infos['id-nature'] ;echo "</td>";
echo "<td>";echo $infos['id-date'] ;echo "</td>";
echo "<td>";echo $infos['code-etat'];echo "</td>";
echo"</tr>"; //fermeture de la ligne
} //fermeture du tant que
echo "</table>";//fermeture du tableau
pg_close($dbconn);
?>
</body>
</html>

ce code me permet d'afficher des lignes du genre

id-projet nom-projet code-mo resultat-projet montant-projet code-localisation id-nature id-date code-etat
1 FORAGE 1 réalisé 500000 1 1 1 1
et je voudrais avoir un code qui m'affiche mes lignes de cette façon suivante:

id-projet nom-projet code-mo resultat-projet montant-projet code-localisation id-nature id-date code-etat
1 FORAGE stp réalisé 500000 Mandé Agriculture 2000-04-12 en cours
VOUS comprenez un peu ma preocupation.merci de me precisé un point que vous ne comprenez.venez moi en aide ça des jours que je tourne en rond
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. Bonjour,

    Je ne suis pas certain d'avoir compris ton problème, tellement ça me parait évident.

    As-tu quelques notions de SQL?
    Il suffit d'ajouter une jointure dans ta requête SELECT, sur la table qui contient les libellés.

    Par ex :
    SELECT Projet.nom_projet, Localisation.Libellé
    FROM Projet, Localisation
    WHERE Projet.id_localisation = Localisation.id_localisation

    Tu devrais facilement trouver de bons tutoriels SQL sur google...

    Bonne journée.
    M.
    0
    1. bjour
      oui tout à fait tu as raison et j'ai pas telmen de notions en postgresql et en sql ,après avoir fait la jointure entre mes tables j'obtiens une erreur qui concerne la ligne
      $sql = pg_query_select projet.id-projet,projet.nom-projet,projet.id-date,projet.id-nature,
      projet.code-localisation,projet.code-etat,projet.code-mo,projet.resultat-projet,projet.montant-projet,
      localisation.libellé,mo.libellé,nature.libellé,date.debut-date,etat.libellé ,l'erreur affiche la phrase suivante:Parse error: parse error in C:\wamp\www\gdt\postgresql.php on line 17
      je reprends le code depuis le debut pour que tu vois les incorrections et les erreurs

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
      <head>
      <title> gestion de projet </title>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

      </head>
      <body>

      <?php
      $conn =("host=localhost port=5432 dbname= gdt user=postgres password=gabero");
      $dbconn = pg_connect("$conn");
      // connexion à une base de données nommée "gdt" sur l'hôte "localhost" avec un
      // nom d'utilisateur"postgres" et un mot de passe"gabero"
      // éxecution de la requète SQL
      $sql = pg_query_ select projet.id-projet,projet.nom-projet,projet.id-date,projet.id-nature,projet.code-localisation,projet.code-etat,projet.code-mo,projet.resultat-projet,projet.montant-projet,
      localisation.libellé,mo.libellé,nature.libellé,date.debut-date,etat.libellé
      from projet,date,etat,nature,mo,localistion
      WHERE(projet.code-localisation='localisation.code-localisation')
      AND(projet.id-date='date.id-date')
      AND(projet.code-mo='mo.code-mo')
      AND( projet.id-nature='nature.id-nature')
      AND(projet.code-etat='etat.code-etat');
      //En-tete du tableau
      echo "<table border=\"1\" >
      <caption><strong> PROJET</strong></caption>
      <tr>
      <td>id-projet</td>
      <td>nom-projet</td>
      <td>code-mo</td>
      <td>resultat-projet</td>
      <td>montant-projet</td>
      <td>code-localisation</td>
      <td>id-nature</td>
      <td>id-date</td>
      <td>code-etat</td>
      </tr>";
      // utilisation de la boucle tant que
      while($infos = pg_fetch_array($sql)) {
      // affichage des resultats
      echo"<tr>";//ligne du tableau
      echo "<td>";echo $infos['id-projet'];echo "</td>";
      echo "<td>";echo $infos['nom-projet'];echo "</td>";
      echo "<td>";echo $infos['code-mo'] ;echo "</td>";
      echo "<td>";echo $infos['resultat-projet'] ;echo "</td>";
      echo "<td>";echo $infos['montant-projet'] ;echo "</td>";
      echo "<td>";echo $infos['code-localisation'] ;echo "</td>";
      echo "<td>";echo $infos['id-nature'] ;echo "</td>";
      echo "<td>";echo $infos['id-date'] ;echo "</td>";
      echo "<td>";echo $infos['code-etat'];echo "</td>";
      echo"</tr>"; //fermeture de la ligne
      } //fermeture du tant que
      echo "</table>";//fermeture du tableau

      pg_close($dbconn);
      ?>
      </body>
      </html>
      merci d'avance
      0
      1. bjour,après avoir fait des recherches je suis parvenus à faire améliorer mon code mais je continue à penser qu'il ya des petits erreurs qui sont pas encore corriger et je comptes sur vous pour m'aidez à le corriger.
        comme vous le voyez j'ai fait une jointure de ma table principale à d'autres tables,et ces autres tables sont liées à ma table principale par des clés étrangères,l'idée c'est de remplacer dans ma table principale ces clés étrangères par leurs libellés correspondantes.aidez moi à obtenir la formule exacte pour cet exercice.
        pour cela vous avez le code suivant

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
        <head>
        <title> gestion de projet </title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        </head>
        <body>

        <?php
        $conn =("host=localhost port=5432 dbname= gdt user=postgres password=gabero");
        $dbconn = pg_connect("$conn");
        // connexion à une base de données nommée "gdt" sur l'hôte "localhost" avec un
        // nom d'utilisateur"postgres" et un mot de passe"gabero"
        // éxecution de la requète SQL

        $sql = pg_query("SELECT projet.id-projet,projet.nom-projet,projet.id-date,projet.id-nature,
        projet.code-localisation,projet.code-etat,projet.code-mo,projet.resultat-projet,projet.montant-projet,
        localisation.libellé,mo.libellé,nature.libellé,date.debut-date,etat.libellé FROM projet INNER JOIN date,projet INNER JOIN etat,projet INNER JOIN nature,projet INNER JOIN mo,projet INNER JOIN localistion
        ON projet.code-localisation = localisation.code-localisation
        AND projet.id-date = date.id-date
        AND projet.code-mo = mo.code-mo
        AND projet.id-nature = nature.id-nature
        AND projet.code-etat = etat.code-etat) ;

        where id-nature = 1,id-date =1,code-etat =1,code-localisation =1,code-mo =1 ");

        //En-tete du tableau
        echo "<table border=\"1\" >
        <caption><strong> PROJET</strong></caption>
        <tr>
        <td>id-projet</td>
        <td>nom-projet</td>
        <td>code-mo</td>
        <td>resultat-projet</td>
        <td>montant-projet</td>
        <td>code-localisation</td>
        <td>id-nature</td>
        <td>id-date</td>
        <td>code-etat</td>
        </tr>";
        // utilisation de la boucle tant que
        while($infos = pg_fetch_array($sql)) {
        // affichage des resultats
        echo"<tr>";//ligne du tableau
        echo "<td>";echo $infos['id-projet'];echo "</td>";
        echo "<td>";echo $infos['nom-projet'];echo "</td>";
        echo "<td>";echo $infos['code-mo'] ;echo "</td>";
        echo "<td>";echo $infos['resultat-projet'] ;echo "</td>";
        echo "<td>";echo $infos['montant-projet'] ;echo "</td>";
        echo "<td>";echo $infos['code-localisation'] ;echo "</td>";
        echo "<td>";echo $infos['id-nature'] ;echo "</td>";
        echo "<td>";echo $infos['id-date'] ;echo "</td>";
        echo "<td>";echo $infos['code-etat'];echo "</td>";
        echo"</tr>"; //fermeture de la ligne
        } //fermeture du tant que
        echo "</table>";//fermeture du tableau

        pg_close($dbconn);
        ?>
        </body>
        </html>
        merci d'avance,ça fait des jours que je tournes en rond
        0
        1. bjour ,c'est pour vous dire que j'ai fais d'autres améliorations mais j'obtiens toujours des messages d'erreurs que voici:

          Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xe92c6d HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". in C:\wamp\www\gdt\php.php on line 32
          PROJET id-projet nom-projet code-mo resultat-projet montant-projet code-localisation id-nature id-date code-etat

          Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\gdt\php.php on line 50

          en plus je voudrais injecter un compteur qui permettra d'incrementer les differents identifiants(id-projet,id-nature,id-date,code-localisation,code-mo,code-etat)
          merci d'avance.
          ça c'est le nouveau code :

          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
          <head>
          <title> gestion de projet </title>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

          </head>
          <body>

          <?php
          $conn =("host=localhost port=5432 dbname= gdt user=postgres password=gabero");
          $dbconn = pg_connect("$conn");
          // connexion à une base de données nommée "gdt" sur l'hôte "localhost" avec un
          // nom d'utilisateur"postgres" et un mot de passe"gabero"
          // éxecution de la requète SQL

          $sql = pg_query("
          SELECT projet.id-projet,projet.nom-projet,projet.id-date,projet.id-nature,
          projet.code-localisation,projet.code-etat,projet.code-mo,projet.resultat-projet,projet.montant-projet,
          localisation.libellé,mo.libellé,nature.libellé,date.debut-date,etat.libellé
          FROM projet
          INNER JOIN date
          ON projet.id-date = date.id-date
          INNER JOIN etat
          ON projet.code-etat = etat.code-etat
          INNER JOIN nature
          ON projet.id-nature = nature.id-nature
          INNER JOIN mo
          ON projet.code-mo = mo.code-mo
          INNER JOIN localistion
          ON projet.code-localisation = localisation.code-localisation
          WHERE id-nature = 1,id-date =1,code-etat =1,code-localisation =1,code-mo =1 ");
          ?>
          <!-- En-tete du tableau -->
          <table border="1" >
          <caption><strong> PROJET</strong></caption>
          <tr>
          <td>id-projet</td>
          <td>nom-projet</td>
          <td>code-mo</td>
          <td>resultat-projet</td>
          <td>montant-projet</td>
          <td>code-localisation</td>
          <td>id-nature</td>
          <td>id-date</td>
          <td>code-etat</td>
          </tr>
          <?php
          // utilisation de la boucle tant que
          while($infos = pg_fetch_array($sql)) {
          // affichage des resultats
          echo"<tr>";//ligne du tableau
          echo "<td>".$infos['id-projet']."</td>";
          echo "<td>".$infos['nom-projet']."</td>";
          echo "<td>".$infos['code-mo']."</td>";
          echo "<td>".$infos['resultat-projet']."</td>";
          echo "<td>".$infos['montant-projet']."</td>";
          echo "<td>".$infos['code-localisation']."</td>";
          echo "<td>".$infos['id-nature']."</td>";
          echo "<td>".$infos['id-date']."</td>";
          echo "<td>".$infos['code-etat']."</td>";
          echo"</tr>"; //fermeture de la ligne
          } //fermeture du tant que
          ?>
          </table> <!--fermeture du tableau-->

          <?php pg_close($dbconn); ?>
          </body>
          </html>
          bne journé M.
          0
          1. le message d'erreur que j'obtiens est le suivant:

            Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 16: WHERE id-nature = 1,id-date =1,code-etat =1,code-localisatio... ^ in C:\wamp\www\gdt\php.php on line 32
            PROJET id-projet nom-projet code-mo resultat-projet montant-projet code-localisation id-nature id-date code-etat

            Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\gdt\php.php on line 50

            voilà le code après les modifications ,cette fois j'ai changé "libellé" en "libelle"

            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
            <head>
            <title> gestion de projet </title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

            </head>
            <body>

            <?php
            $conn =("host=localhost port=5432 dbname= gdt user=postgres password=gabero");
            $dbconn = pg_connect("$conn");
            // connexion à une base de données nommée "gdt" sur l'hôte "localhost" avec un
            // nom d'utilisateur"postgres" et un mot de passe"gabero"
            // éxecution de la requète SQL

            $sql = pg_query("
            SELECT projet.id-projet,projet.nom-projet,projet.id-date,projet.id-nature,
            projet.code-localisation,projet.code-etat,projet.code-mo,projet.resultat-projet,projet.montant-projet,
            localisation.libelle,mo.libelle,nature.libelle,date.debut-date,etat.libelle
            FROM projet
            INNER JOIN date
            ON projet.id-date = date.id-date
            INNER JOIN etat
            ON projet.code-etat = etat.code-etat
            INNER JOIN nature
            ON projet.id-nature = nature.id-nature
            INNER JOIN mo
            ON projet.code-mo = mo.code-mo
            INNER JOIN localistion
            ON projet.code-localisation = localisation.code-localisation
            WHERE id-nature = 1,id-date =1,code-etat =1,code-localisation =1,code-mo =1 ");
            ?>
            <!-- En-tete du tableau -->
            <table border="1" >
            <caption><strong> PROJET</strong></caption>
            <tr>
            <td>id-projet</td>
            <td>nom-projet</td>
            <td>code-mo</td>
            <td>resultat-projet</td>
            <td>montant-projet</td>
            <td>code-localisation</td>
            <td>id-nature</td>
            <td>id-date</td>
            <td>code-etat</td>
            </tr>
            <?php
            // utilisation de la boucle tant que
            while($infos = pg_fetch_array($sql)) {
            // affichage des resultats
            echo"<tr>";//ligne du tableau
            echo "<td>".$infos['id-projet']."</td>";
            echo "<td>".$infos['nom-projet']."</td>";
            echo "<td>".$infos['code-mo']."</td>";
            echo "<td>".$infos['resultat-projet']."</td>";
            echo "<td>".$infos['montant-projet']."</td>";
            echo "<td>".$infos['code-localisation']."</td>";
            echo "<td>".$infos['id-nature']."</td>";
            echo "<td>".$infos['id-date']."</td>";
            echo "<td>".$infos['code-etat']."</td>";
            echo"</tr>"; //fermeture de la ligne
            } //fermeture du tant que
            ?>
            </table> <!--fermeture du tableau-->

            <?php pg_close($dbconn); ?>
            </body>
            </html>
            0