affichage des enregistrements, lorsque les champs ne sont pas connus

Raymond
Invité n'ayant pas de compte PHPfrance

30 juil. 2007, 13:39

bonjour à tous,
je souhaiterais pouvoir afficher les résultats d'une requête avec la contrainte suivante : le nom des champs de la table interogée me sont inconnus. D'habitude, lorsque j'interroge une table pour afficher ses enregistrements, je fais :
$requete = "SELECT champs1, champs2,...FROM latable";
$result = "mysql_query($requete)";
while($resultat = mysql_fetch_array($result)
{
$champs1 = $resultat['champs1'];
$champs2 = $resultat['champs2'];
...
//et j'affiche les enregistrements récupérés
}
Mais là je ne connais pas le nom des champs
L'idée serait donc de batir une boucle me permettant de récuperer tous les champs de la table (grâce à un SELECT *) et d'afficher les différents enregistrements de la table sous forme de tableau.
Auriez vous une idée à me suggérer??

D'avance merci

d0m
Mammouth du PHP | 1141 Messages

30 juil. 2007, 13:45

en utilisant mysql_fetch_assoc tu récupères le nom des champs en clé.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 juil. 2007, 13:50

Ca le fait également avec mysql_fetch_array() qu'il utilise puisque celui ci contient à la fois index numérique et nom du champ ;) Suffit effectivement pour chaque enregistrement lu avec le while, de faire une boucle
foreach($row as $key => $value)
pour avoir dans $key le nom du champ et dans value la valeur associée :)


Et euh.... à quoi te servent les guillemets de cette ligne au juste ?
$result = "mysql_query($requete)";
Tu appelles une fonction, tu lui passes une variable en argument, pourquoi vouloir transformer le tout en chaines de caractrès qui doivent ensuite être retransformées par php en variable et fonction ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Raymond
Invité n'ayant pas de compte PHPfrance

30 juil. 2007, 14:29

Merci à vous 2 pour vos réponses,
Ryle : les "" sont justes...une erreur de frappe :)) désolé.

Ce que vous m'avez indiqué fonctionne presque. Sauf que je souhaite afficher les resultats dans un tableau html, avec en 1èere ligne du tableau les noms des champs et ensuite les enregistrements retournés.

Avec vos indications, sur la 1ere ligne du tableau, je n'ai pas (par colonne) :
champs1, champs2, champs3...
mais :
Index du champs 1, Champs1, Index du champs 2, champs2, ...

Bref, le nombre de coonnes de mon tableau est doublé.
Savez-vous comment éviter ce désagrément??
Merci d'avance.

d0m
Mammouth du PHP | 1141 Messages

30 juil. 2007, 14:44

ta premiere ligne doit être les noms des champs donc tu peux par exemple dans ta boucle d'affichage tester si c'est la 1ère ligne (via un compteur) alors tu affiches les clés et ensuite les valeurs en boucles aux lignes suivantes du tableau html :
compteur = 0;

pourchaqueligne de la requete{
   if(compteur==0){
     echo '<TR>'
     foreach($row as $key => $value){
       echo '<td>'.$key.'</td>';
     }
     echo '</TR>';
   }
    echo '<TR>'
    foreach($row as $key => $value){
        echo '<td>'.$value.'</td>';  
    }
    echo '</TR>';
}
en cherchant un peu tu devrais en trouver d'autres, c'est juste une piste

Raymond
Invité n'ayant pas de compte PHPfrance

30 juil. 2007, 15:12

ok ca fonctionne :))
Merci pour votre aide.

Raymond

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 15:22

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute