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

PostgreSQL Discussion :

Lister le contenu d'une table sans connaitre ses champs


Sujet :

PostgreSQL

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 49
    Points : 59
    Points
    59
    Par défaut Lister le contenu d'une table sans connaitre ses champs
    Bonjour a tous !

    J'ai un bien joli probleme pour vous tous :

    J'essaye d'afficher dans une page web (en PHP) le contenu d'une table jusque la pas de problème, mais ca se corse si je vous dit que la table je ne la connais pas (on donne le nom de la table dans l'url ex: view?table=personnel pour afficher le contenu de la table). Donc, dans mon code php, je ne peut pas savoir quel champ j'aurais (champ nom, prenom ou puissance, poid ?) En gros, il me faudrait une fonction qui me retrouve les differents champs d'une table

    Est-ce que cela existe/est possible de faire ?

    Merci beaucoup de votre aide généreuse..

    Je tiens a m'escuser platement si je me suis trompé de forum (j'ai hésité longuement avec le celui de PHP )

  2. #2
    Membre du Club
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    il s'agit d'une base postgresql ?

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 49
    Points : 59
    Points
    59
    Par défaut
    oui

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Salut,

    En lisant la doc des tables systèmes, tu peux avoir les attributs des tables avec pg_class et pg_attributes. Une requête de ce genre pourrait, je pense, t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select c.relname,a.attname 
    from pg_class as c, pg_attribute as a 
    where relname = 'nomTable' and c.oid = a.attrelid and a.attnum > 0;
    A+

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Je précise que le:

    est présent uniquement pour enlever les tables systèmes. Il y a peut-être d'autres moyens.

    A+

  6. #6
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    Salut,

    A mon avis, il faut plutôt voir du côté de PHP :
    - pg_num_fields() te permet de connaitre le nombre de champ de ta requête,
    - pg_field_name() te permet de connaitre le nom des champs,

    D'ailleurs, un exemple vaut mieux qu'un long discours : l'exemple fourni dans la doc de pg_field_name devrait beaucoup t'aider car il répond exactement à ta question.

    @+

  7. #7
    Membre du Club

    Profil pro
    Inscrit en
    Février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 49
    Points : 59
    Points
    59
    Par défaut
    Merci a vous !

    Je confirme que la methode de Bouboubou fonctionne parfaitement.

    Par contre je n'ai pas testé la methode de Krapulax (désolé, mais merci quand meme pour ton aide, elle m'a été précieuse tout de même)

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Salut,

    J'ai de nouveau lu le post un peu vite, je cherche toujours une solution dans le SGBD et j'ai peut-être pas regardé le problème assez globalement.

    Franchement, je ne connais pas bcp PHP, mais les procédures que Krapulax, t'a indiquées sont à mon avis meilleures que de devoir faire tes requêtes toi-même. Surtout que je ne suis pas à 100% sur que ma requête fonctionne dans toutes les conditions.

    Utilise ce que PHP t'offre au lieu de faire des procédures toi-même.

    A+

  9. #9
    Membre du Club

    Profil pro
    Inscrit en
    Février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 49
    Points : 59
    Points
    59
    Par défaut
    Personnelement j'aime vraiment bien ta solution Bouboubou car j'essaye de faire le plus abstraction possible du dbms. Evidement pour des requetes de ce type, je suis bien obligé d'aller voir dans les tables systemes donc des tables propres au dbms...

    Le probleme (attention, je précise: dans mon cas!) avec la solution de Krapulax, est qu'il fait appel a des procédures propres a PostgreSQL qui ne seront peut-etre plus la avec un autre dbms. J'ai en projet de mettre dans des variables les noms des tables systemes du dbms et donc de faire un fichier de configuration par dbms. Un peu le meme principe que PHPLib pour ceux qui connaisse (fichier local.inc, db_pgsql.inc ou db_mysql.inc pour etre précis )

    Les deux solutions marchent. Et elles ont toutes deux des avantages (et des petits désagréments mineurs)

    En tout cas, je vous remercie tout les deux, Bouboubou & Krapulax de m'avoir guidé si rapidement !

    Vraiment, c'est cool de votre part

  10. #10
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    Si tu veux une librairie puissante en php pour faire abstraction de la base, je te revoie sur ADODB, qui est, AMHA, ce qui se fait de mieux.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/01/2011, 08h43
  2. Lister le contenu d'une table dans un DataGrid
    Par Imad_ing dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/12/2007, 13h46
  3. [MySQL] Lister le contenu d'une table selon un champ
    Par MisteroL dans le forum Langage SQL
    Réponses: 1
    Dernier message: 29/01/2007, 23h19
  4. Lister le contenu d'une table
    Par lerico dans le forum Access
    Réponses: 9
    Dernier message: 15/01/2007, 16h48
  5. [MySQL] Lister le contenu d'une table dans un tableau HTML
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/04/2006, 19h40

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