8791 sujets

Développement web côté serveur, CMS

Bonjour,

j'affiche 9 résultats d'une requête sql sur mon site de la manière suivante :

$requete = mysql_query("SELECT * FROM "ma_table" ") or die(mysql_error());

while ($affichage = mysql_fetch_array($requete) )
{
 Bla Bla Bla 
}

Jusqu'ici rien de compliqué, j'affiche mes neuf résultats a suivre dans ma page.

Je souhaiterais afficher les résultats de cette requête de manière fractionné par trois résultats.

c'est à dire

$requete = mysql_query("SELECT * FROM "ma_table" ") or die(mysql_error());

Afficher les 3 premiers résultats. (du 1er au 3éme)
autre contenu (html)
Afficher 3 autres résultats (du 4éme au 6éme)
autre contenu (html)
Afficher les 3 derniers résultats (du 6éme au 9éme)

Comment pourrais-je faire ?
En espérant avoir réussi à me faire comprendre.

Merci d'avance.
y a t il toujours 9 résultats ? auquel cas c'est facile remplace ton while par 3 for ($i=0;$i<2;$i++) {
$r = mysql_fetch_array()
suivi de la description du traitement a réaliser.( sans utiliser la variable $i bien sur pour pas emmeler les pinceaux du for)
} séparé par tes blocs html

sinon c'est un peu plus compliqué. il faut que tu définisses comment tu vas découper chaque cas. tu peux déjà t'appuyer sur mysql_num_rows qui te retourne le nombre de résultats.

a chaque fois que tu fais un mysql_fetch_array tu utilises un élément du result

edit: a oui exact heyoan
Modifié par CPascal (22 Dec 2007 - 00:32)
Merci cela fonctionne très bien.

Juste pour que je comprenne mieux l'utilisation de for ($i=0;$i<2;$i++).
La première fois que je le fais, il affiche les trois premiers résultats.

Lorsque j'ai affiché mes trois premiers résultats les valeurs sont perdu et c'est pour cela que lorsque je refais for ($i=0;$i<2;$i++) il affiche du quatrième au sixième résultats.

et rebelote pour le troisième affichage.

Est-ce bien cela ?

Merci encore.

PS: Oui, il y a toujours 9 résultats.
Salut,

en fait la boucle for permet juste d'effectuer une même action un certain nombre de fois (ici 3).

Aucune valeur n'est perdue mais comme le disait CPascal, chaque fois que tu fais mysql_fetch_array un résultat de la requête est récupéré et le pointeur se positionne sur le prochain résultat (si ce n'était pas le dernier Smiley murf ). Donc on pourrait faire :
$requete = mysql_query("SELECT * FROM "ma_table" ") or die(mysql_error());

$affichage = mysql_fetch_array($requete);
echo $affichage['zone1'].' -  '.$affichage['zone2'];

$affichage = mysql_fetch_array($requete);
echo $affichage['zone1'].' -  '.$affichage['zone2'];

$affichage = mysql_fetch_array($requete);
echo $affichage['zone1'].' -  '.$affichage['zone2'];

etc, etc...
Comme ça ne serait pas très pratique, on préfère utiliser les boucles for, while, foreach, etc... Smiley lol !

A+

Edit: en passant, la boucle for permet également d'incrémenter une variable ($i dans ton exemple), ce qui peut être bien pratique.
Modifié par Heyoan (22 Dec 2007 - 02:18)
Merci encore.

J'avais réussi mais en faisant une requête a chaque fois qui allait chercher 3 éléments (donc lourd)
Modifié par yann123 (22 Dec 2007 - 02:31)