{PostgreSQL}

Fermé
logoni - 6 août 2009 à 09:50
 logoni - 13 août 2009 à 16:34
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
A voir également:

5 réponses

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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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