Je débute en PHP...
Je voudrais afficher le résultat d'une requete sous forme d'un tableau.
Le truc c'est que je ne connais pas le nombre de colones de la requete ni les libellés.
J'aimerai que la premiere ligne du tableau contiennent les libellés.
En gros, j'ai créé une boucle avec mysql_fetch_assoc pour récupérer les
valeurs, mais comment faire pour récupérer et afficher la premiere ligne
des libellés des colones ?
J'ai finalement fait un code que je trouve
assez caca. Je fais un premier fetch puis je fait un array_keys pour récupérer
les clés qui sont les libellés des colones. Puis je crée la 1ère ligne qui contient ces libellés, mais je peux pas directement l'envoyer sur ma boucle car celle ci fais un fetch au début et donc, je perdrais les valeurs du premier fetch. j'ai donc recopié une fois le contenu de ma boucle avant celle-ci. en gros je trouve ça moche, et j'aimerai vos avis.
merci !!!
nicolas.
# oubli
Posté par Nicolas Blanco (site web personnel) . Évalué à 2.
merci :)
[^] # Re: oubli
Posté par Gyro Gearllose . Évalué à 2.
// Tout le blabla de connexion à la base et la requête suit :
$req = "select ...";
$connId = mysql_connect("...");
$resId = mysql_query ($req, $connId);
$x = 0;
// On obtient le premier enregistrement.
$rSet = mysql_fetch_assoc ($resId, $x);
reset ($rSet); // se place au début du tableau d'enregistrements
while (list($key, $val) = each ($rSet)) {
$ligneLib.="<th>{$key}</th>";
$ligneTab[$x] .= "<td>{$val}</td>"; }
$x++;
// A ce point, on a la ligne d'en-têtes de colonnes, et la première ligne du tableau. Poursuivons donc le remplissage du tableau html !
while ($rSet = @mysql_fetch_assoc($resId, $x++)) {
reset ($rSet);
while (list ($key) = each ($rSet))
$ligneTab[$x-1] .= sprintf ("<td>%s</td>", $rSet[$k]); }
mysql_close ($connId);
// Notre tableau est fini, il ne reste plus qu'à l'afficher
print ("<table>\n");
printf ("<tr>%s</tr>\n", $ligneLib);
reset ($ligneTab);
while (list ($k) = each ($ligneTab))
printf ("<tr>%s</tr>", $ligneTab[$k]);
echo "</table>";
Voilà, ce code n'est certainement pas parfait, mais c'est ma façon de faire. J'ai fait ce choix, car il sépare la récupération des données de leur affichage. C'est assez pratique pour faire une approche de front d'un problème, qui n'exclut pas ensuite de passer le tout en bibliothèques, sous forme d'objet (pour lancer un troll sur la poophp), ou tout simplement pour changer ensuite la façon de représenter les données.
J'ai volontairement cadré le tout dans la première boucle pour obtenir du code html dans ligneTab, mais ce n'est pas obligatoire. On peut facilement virer l'encadrement html et le faire après. J'ai aussi volontairement utilisé plusieures fonctions d'affichages et d'affectations pour montrer les possibilités de php. Voilà, j'espère n'être pas trop à côté de la plaque et que cet exemple inclomplet sera utile.
Ah, j'oubliais : le @ devant l'appel à mysql_fetch_assoc n'est pas une erreur, c'est simplement pour éviter à cette fonction d'afficher une erreur quand il n'y a plus d'enregistrements. Ca fonctionne évidement avec toutes les fonctions php....
# probleme courant = solution generique
Posté par botio2 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.