{PostgreSQL}

logoni -  
 logoni -
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. sluthole
     
    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
  2. logoni
     
    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
  3. logoni
     
    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
  4. logoni
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. logoni
     
    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