Bonjour.
Je remarque quelque chose de bizarre dans un script tout simple. Je veux créer un tableau de résultats d'une requête MySQL en découpant les résultats dans 4 colonnes pour commodité de lecture. Je divise donc le nombre de résultats par 4 et je compte les lignes, je veux insérer une nouvelle cellule de tableau à chaque fois que j’atteins ce nombre, ce que je déduis en disant que la division "nombre de ligne écrites / nombre de lignes par cellule" est un entier.
ça ne coupe pas en cellules malgré que la ligne de vérification affiche bien un nombre entier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $cut = ceil(mysql_num_rows($select) / 4); echo mysql_num_rows($select).'-'.$cut; //pour vérifier $i = 1; echo '<table border=0 align="center"><tr><td valign="top">'; while ($db = mysql_fetch_array($select)){ if (is_int($i / $cut)) echo '</td><td valign="top">'; echo "$i-<a href=\"$dir/".str_replace($search, $replace, $db['trans']).".html\">$db[trans] ($l$db[n])</a><br>"; $i++; } echo '</td></tr></table>';
La fonction round à la place de ceil donne le même problème.
Si mon test est if ($i == $cut) ça coupe bien mais seulement à cut, pas à ses multiples, bien sûr.
La solution est de rajouter un intval() dans la ligne 1 :
Et là je ne comprends pas la logique. ceil et round doivent renvoyer des entiers non ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part $cut = intval(ceil(mysql_num_rows($select) / 4));
Le problème est réglé avec intval() mais j'aimerai comprendre le bug.
Partager