Plusieurs tableaux pour un affichage de données.

Spinner
Invité n'ayant pas de compte PHPfrance

14 sept. 2021, 11:28

Bonjour à tous !

Bon voilà, ça fait plusieurs jours que je me casse le crâne sur un problème qui va peut-être vous sembler ridicule mais qui me bloque... J'ai essayé plusieurs méthodes, j'ai tenté de m'inspirer de scripts déjà existants mais je n'arrive pas à faire exactement ce que je souhaite.

Voici mon code simple:

Code : Tout sélectionner

<?php $connexion=mysqli_connect("localhost","root","","Test2"); $requete="SELECT * FROM Clients1 WHERE ID <= 5"; $requete1=$connexion->query($requete); while ($data=mysqli_fetch_array($requete1)) { echo "<center><p>".$data['NOM']."</p></center>"; } ?>
Jusque-là, rien de compliqué. Seulement, ce que j'aimerais créer, c'est un tableau initial qui affiche les différentes données de ma table mais qui au bout d'un certain nombre de lignes, de <tr> concrètement, disons 3 par exemple, créer un nouveau tableau qui lui-même ne comportera que trois lignes et ainsi de suite, et ce jusqu'à épuisement des lignes de la table.
Je sais afficher un tableau avec une simple boucle, j'ai pensé à une boucle for sinon mais ce qui me bloque est précisément cette instruction que je dois donner de créer un nouveau tableau au-delà de la taille que j'aurai déterminé pour le tableau précédent. Je ne parviens pas à le traduire précisément dans le langage du PHP. Pourriez-vous me mettre sur la voie? Merci.

Mammouth du PHP | 2703 Messages

14 sept. 2021, 13:03

$i = 0;
while (){
$i++;
if(($i % 3) == 0){
echo "...";
}
}

Spinner
Invité n'ayant pas de compte PHPfrance

14 sept. 2021, 14:56

Merci bien, j'essaye de concrétiser tout ça !

Spinner
Invité n'ayant pas de compte PHPfrance

15 sept. 2021, 10:10

Bonjour,

J'ai donc réussi à faire ce que je voulais en adaptant le code que vous m'avez donné et en le mixant avec un autre exemple que j'ai trouvé:

Code : Tout sélectionner

$i=0; while($data=mysqli_fetch_array($requete1)) { if($i%3==0) echo "Mes résultats : <table><tr><td>".$data['NOM']."</td>etc."; if ($i%3==2) </tr> $i++; } if($i%3!=0) echo "</tr>"; echo "</table>;
C'est ainsi que cela fonctionne bien, mais l'affaire reste trouble pour moi...
En effet, je sais bien que le modulo correspond au reste d'une division euclidienne. Ce que je comprends moins, c'est pourquoi il faut l'utiliser à ce moment, pour cet effet là en PHP ?
De plus, j'ai du mal à comprendre les différentes étapes du if ($i%3): que vient faire le ==2 et le </tr> qui s'y trouve ? Pourquoi fermer la boucle après ce if là et non pas le dernier ?

Merci !

Spinner
Invité n'ayant pas de compte PHPfrance

15 sept. 2021, 10:30

Surtout que lorsque j'enlève la dernière partie, après la fin de la boucle - donc if($i%3!=0) - ça semble marcher quand même. Toutefois j'avais vu dans le script dont je m'étais inspiré qu'il était mieux de le mettre... Bref si vous pouvez éclairer ma lanterne ce serait génial car les tutos concernant ce point précis ne sont pas pléthore !

Mammouth du PHP | 2703 Messages

15 sept. 2021, 10:50

il faudrait connaitre le code html valide à produire pour pouvoir répondre.
echo "<table>";
$i = 0;
while (){
$i++;
if(($i % 3) == 0){
echo "</table>";
echo "<table>";
}
echo "<tr><td>...</td><td>...</td></tr>";
}
echo "</table>";

Spinner
Invité n'ayant pas de compte PHPfrance

15 sept. 2021, 11:36

Voici l'entièreté du code:

Code : Tout sélectionner

$i=0; while($data=mysqli_fetch_array($requete1)) { if($i%3==0) echo "<table>"; echo "<tr>"; echo"<td>".$data['NOM']."</td><td>".$data['WEED']."</td><td>".$data['MONTANT']."</td><td>".$data['PRIX_AU_GRAMME']."</td>"; if ($i%3==2) </tr> $i++; } if($i%3!=0) echo "</tr>"; echo "</table>";

Spinner
Invité n'ayant pas de compte PHPfrance

15 sept. 2021, 11:38

Juste au cas où, pour les noms de champ je signale qu'il s'agit juste d'un script destiné à l'entraînement ^^