par
sadeq » 09 sept. 2008, 19:04
Bonjour tyjez,
Sois très attentif je t'explique.
ça tu sais le faire :
$sql="SELECT numéro FROM serie WHERE fraction='mafraction'";
$req=mysql_query($sql) OR DIE ("erreur de requête sql<br />".mysql_error());
Et tu l'as bien fait. Tu sais aussi, je suppose, comment lire le résultat de ta requête ligne par ligne :
while ( $req && $row = mysql_fetch_array($req) ) {
// récupérer un champ de $row
$numero = $row["numéro"];
// traitrement :
....
}
Alors, pour afficher les numéros lus sous forme de table HTML, il faut poser l'affichage de chaque cellule <td> dans la boucle while de lecture de $row. On est bien d'accord ? ok, comme ça :
while ( $req && $row = mysql_fetch_array($req) ) {
// récupérer un champ de $row
$numero = $row["numéro"];
// traitrement : afficher une cellule pour $numero
echo "<td>" . $numero . "</td>";
}
Seulement, il faut bien encadrer le <td> imprimé par la bonne structure HTML d'une table. C'est à dire : une <td> se trouve dans une <tr> qui se trouve dans une <table>
Et sachant que toi tu veux imprimer 4 <td> par <tr> alors il faut que la boucle while fasse un petit comptage jusqu'à 4 avant de placer le <tr> à chaque fois.
Ceci dit, voici l'algorithme récap :
- 1. afficher la balise <table> avant le while car ce dernier est sensé afficher des <tr> contenant chacune 4 <td>
2. initialiser à 1 un compteur $col qui comptera jusqu'à 4 avant de se remettre à 1. Il sera utilisé pour placer une <tr>
3. Dans la boucle while : afficher une <tr> si le compteur $col est = 1 (c'est normal, le <tr> doit être placé avant la première <td>
4. Dans la boucle while : afficher une <td> portant la donnée $numero
5. Dans la boucle while : incrémenter le compteur $col
6. Dans la boucle while : afficher une </tr> si le compteur $col >4, puis le réinitialiser à 1
7. Après la fin de la boucle while : fermer la table par </table>
As-tu compris ? si oui, écris le code PHP correspondant à cet algorithme.