Page 1 sur 1

affichage des enregistrements, lorsque les champs ne sont pa

Posté : 30 juil. 2007, 13:39
par Raymond
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

Posté : 30 juil. 2007, 13:45
par d0m
en utilisant mysql_fetch_assoc tu récupères le nom des champs en clé.

Posté : 30 juil. 2007, 13:50
par Ryle
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 ?

Posté : 30 juil. 2007, 14:29
par Raymond
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.

Posté : 30 juil. 2007, 14:44
par d0m
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

Posté : 30 juil. 2007, 15:12
par Raymond
ok ca fonctionne :))
Merci pour votre aide.

Raymond

Posté : 30 juil. 2007, 15:22
par Truc
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 !!! ;)