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 :

connexion à une bdd PostgreSQL [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut connexion à une bdd PostgreSQL
    Bonjour à toutes et à tous,

    Je n'arrive pas à récupérer et à afficher le résultat de ma requête SQL; pourtant dans l'invite de shell psql la requête s'exécute correctement et renvoi un résultat
    Voici le code PHP
    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
     
    <body bgcolor="white">
    		<div class="header">
    			<img src="img/header.png" alt="The Forgotten Garden"/>   
    	    </div><!-- header -->
     
     
            <div id="container">
        	<h5>Fiche article</h5>
     
            </div><!-- container -->
            <div class="footer">
                <img src="img/footer.png" alt="The Forgotten Garden"/>               
            </div><!-- footer -->     
        <?php 
    		include('connection.inc.php');                     
     
    		$select = "SELECT * FROM marques ORDER BY marque_libelle DESC";
    		$clients = pg_query($select,$dbconn) or die ('Erreur : '.pg_last_error());
    		$total = pg_num_rows($clients);
     
    		if($total) {
    			echo '<table bgcolor="white"'."\n";
    			echo '<tr>';
    			echo '<td bgcolor="#006498"><font color="white"><b><u>Num</u></b></font></td>';
    			echo '<td bgcolor="#006498"><font color="white"><b><u>Marque</u></b></font></td>';
    			echo '</tr>'."\n";
     
     
    		//
    			while($row = pg_fetch_array($clients)) {
    				echo '<tr>';
    				echo '<td bgcolor="#dddddd">'.$row["marque_id"].'</td>';
    				echo '<td bgcolor="#dddddd">'.$row["marque_libelle"].'</td>';
    				echo '</tr>'."\n";
    			}
    			echo '</table>'."\n";		
    		}
    		else {
      			echo "Une erreur s'est produite.\n";
    			echo "Pas d\'enregistrements dans cette table...";
      			exit;
    		}
    		//*on libère le résultat*//
    		pg_free_result($clients);
        ?>     
        </body>
    Merci d'avance.
    Sophonie.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu controlé ce que valait $total dans ton script ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Non, par contre $total est supposé me renvoyer les enregistrements
    présents dans la Base de données (ie 5 au total).

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    ...
    est-ce que c'est le cas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    J'aurai voulu faire un echo '$total' mais rien ne s'affiche dans le
    navigateur, pas même le contenu de mon tag HTML <TABLE>.
    Ce qui est embêtant ...

  6. #6
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Je vous prie de m'excuser, je comprends pourquoi aucun affichage
    n'est possible dans le navigateur.

    Explication : La Base de données PostgreSQL est sur mon poste local
    donc en tant que localhost alors que les FICHIERS PHP sont déposés
    sur le serveur de prod. Ce qui entraine que dans la variable de
    connexion je mets host=localhost, l'exécution recherche une Base de
    données sur le serveur de prod. alors qu'elle n'est pas déployé sur un
    serveur mais dans mon poste de travail.

    Je vais donc installer la Base de données sur le serveur de prod.

    Désolé.
    [Résolu]

  7. #7
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut Affichage du résultat d'une requête
    Bonjour à tous et à toutes,

    Dans le fichier PHP suivant :
    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
     
    <?php 
    		include('connection.inc.php');                     
     
    		$select = 'SELECT * FROM marques ORDER BY marque_libelle DESC';
    		$clients = pg_query($select) or die ('Error in query procedural --> '.pg_last_error());
    		$total = pg_num_rows($clients);
     
    		if($total) {
    			echo '<table bgcolor="white"'."\n";
    			echo '<tr>';
    			echo '<td bgcolor="#006498"><font color="white"><b><u>Num</u></b></font></td>';
    			echo '<td bgcolor="#006498"><font color="white"><b><u>Marque</u></b></font></td>';
    			echo '</tr>'."\n";
     
     
    		//
    			while($row = pg_fetch_array($clients)) {
    				echo '<tr>';
    				echo '<td bgcolor="#dddddd">'.$row["marque_id"].'</td>';
    				echo '<td bgcolor="#dddddd">'.$row["marque_libelle"].'</td>';
    				echo '</tr>'."\n";
    			}
    			echo '</table>'."\n";		
    		}
    		else {
      			echo "Une erreur s'est produite.\n";
    			echo "Pas d\'enregistrements dans cette table...";
      			exit;
    		}
     
    		pg_free_result($clients);
    		pg_close($dbconn)
        ?>
    j'aurai voulu l'affichage suivant qui correspond aux tuples présents dans ma Base de données Postgres.
    Les tuples sont biens présents puisque j'ai testé la requête sur le serveur de base de données.

    Merci d'avance.
    Sophonie.

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'obtiens-tu actuellement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Uniquement l'affichage du message d'erreur, ie
    Error in query procedural -->

  10. #10
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas l'erreur postgresql au bout ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    non, mais comment "catcher" cette erreur Postgres?

  12. #12
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    essai d'afficher pg_result_error(), pg_result_error_field(), pg_result_status() et pg_connection_status() à la place.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    en remplaçant pg_last_error() par pg_result_status($select) rien
    ne s'afffiche d'autre que le message d'erreur initial que j'ai mis en
    paramètre de echo ...

  14. #14
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    [Résolu]

    Dans le code, il faut utiliser la syntaxe de pg_query(resource connection , string query) et non l'ancienne
    syntaxe ie sans la variable de connection à la Base de données --> c'est pour cela que la requête ne
    renvoyait aucun résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	$select = pg_query($conn_string,"SELECT * FROM marques ORDER BY marque_libelle DESC") or die("Error in query procedural --> ");
            $total = pg_num_rows($select);
    // puis test sur la variable $total; construction du tableau, etc ...

    Merci encore.
    Sophonie.

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

Discussions similaires

  1. Connexion à une BDD SQL Server via postgreSQL
    Par siin44 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 26/01/2012, 15h15
  2. connexion a une BDD PostgreSql sous Delphi
    Par Matt_NewDev dans le forum Bases de données
    Réponses: 5
    Dernier message: 16/06/2010, 10h44
  3. Réponses: 0
    Dernier message: 28/10/2009, 07h00
  4. [Applet][MySQL] connexion à une BDD
    Par Michel38 dans le forum JDBC
    Réponses: 19
    Dernier message: 20/07/2005, 14h59
  5. Erreur de connexion à une BDD SQL Server 2000 avec BDE
    Par SchpatziBreizh dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2005, 11h22

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