Problème de boucle php

Fermé
bilane Messages postés 13 Date d'inscription samedi 2 septembre 2006 Statut Membre Dernière intervention 21 mars 2007 - 21 mars 2007 à 15:31
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 - 22 mars 2007 à 11:13
Bonjour à tous,

J'ai un problème d'affichage de tableau. j'ai voudrais un tableau de 4 colonnes et 3 lignes mais il s'affiche comme ceci :


janvier fevrier mars
n°1 n°3 n°5
n°2 n°4 n°6

avril mai juin juillet
n°9 n°11 n°13 n°15
n°10 n°12 n°14 n°16

aout septembre octobre novembre decembre
n°17 n°19 n°21 n°15 n°23
n°18 n°20 n°22 n°16 n°24


code :
<?php

if (isset($_GET['annee'])){
$an=$_GET['annee'];
echo "<center> ANNEE ".$an."</center><br><br>";


$req = mysql_query("SELECT DISTINCT id_jo, num_jo, date_jo, type_jo FROM jo where DATE_FORMAT(date_jo,'%Y')='$an' ORDER BY date_jo ASC;");
$res = mysql_num_rows($req);
$i=0; $mois = ""; $j=0; $lien = "";

$nb_col = 4;
$k=0;

echo '<table width="75%" border="1">';
WHILE ($i < $res){

$id = mysql_result($req,$i,"id_jo");
$num = mysql_result($req,$i,"num_jo");
$type = mysql_result($req,$i,"type_jo");
$dat = mysql_result($req,$i,"date_jo");
list($year, $month, $day) = explode("-", $dat);
$months = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
$aux = $months[$month-1];

if ($k == $nb_col) {
echo "</tr>";
$k=0;
}
if ($k==0) {
echo "<tr>";
}

if ($aux != $mois) { if ($mois != '')
echo "<td valign='top' align='center' width=15% height=1 ><font color='blue'>".$mois."<br><br>".$lien."</font></td>";
$mois = $aux; $lien = ""; $k++;
}

$lien .= "\r\n <a href=rechercheannee3essai.php?n=$id>$type n° $num</a> <br> \r\n";
$i++;}

echo "<td valign='top' align='center' width=50% height=1><font color='blue'>".$mois. "<br><br>".$lien."</td></font>";


echo '</table>'; }
mysql_close();
?>

merci d'avance.

2 réponses

Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
21 mars 2007 à 15:37
Moi je serais toi j'utiliserais l'opérateur modulo (%) avec 4 comme seconde opérande et un compteur qui évolue constamment.
0%4 -> 0
1%4 -> 1
2%4 -> 2
3%4 -> 3
4%4 -> 0
5%4 -> 1
6%4 -> 2
7%4 -> 3
8%4 -> 0
etc.

0
bilane Messages postés 13 Date d'inscription samedi 2 septembre 2006 Statut Membre Dernière intervention 21 mars 2007
21 mars 2007 à 16:02
excuse moi, je suis debutante. je n'ai pas compris modulo (%). si vous pourriez m'expliquer . merci.
0
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
22 mars 2007 à 11:13
Quelques détails :

Avant le </table> il te manque un <tr></tr> :

echo "<tr><td valign='top' align='center' width=50% height=1>".$mois. "<br><br>".$lien."</font></td></tr>"; 


Il te manque également un </tr> pour la dernière ligne que tu sors, donc :
echo "</tr><tr><td valign='top' align='center' width=50% height=1>".$mois. "<br><br>".$lien."</font></td></tr>"; 


tu devrais définir le $months en dehors de la boucle... il le refait à chaque fois pour rien !

0