La communauté ALL HTML c'est 60442 membres à ce jour dont 0 inscrits aujourd'hui et 5 depuis une semaine.

Créer des tableaux avec N cellules par ligne (modulo)

Photo de telnes Article publié le mercredi 12 décembre 2007 par telnes.
Cet article est classé dans les catégories « Ergonomie, HTML, PHP »

Comment créer un tableau avec 3 cellules par ligne par exemple ? ou 10 cellules... Pour cela on va s'intérresser au modulo.

Modulo kezako

L'opérateur modulo est représenté par "%" en informatique.

Définition

 

Il y a une definition sur wikipédia http://fr.wikipedia.org/wiki/Arithm%C3%A9tique_modulaire mais il faut s'accrocher :)

je vais donc donner une définition simple !


a % b est le reste de la division entière de a par b

en prenant un exemple :

13 % 10 = 3

parce que 13 / 10 = 1 reste 3
Exemple

tester le code suivant
<?php

for($i=0;$i<16;$i++){
echo "$i % 4 =".($i%4)."<br />";
}

?>

qui devrait vous donner


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
9 % 4 =1
10 % 4 =2
11 % 4 =3
12 % 4 =0
13 % 4 =1
14 % 4 =2
15 % 4 =3


explication de 2%4 : combien de fois on peut mettre 4 dans 2, 0 fois donc il reste 2

Trève de mathématique et passons à la pratique

<?php $nb = 3; //nombre de cellule par ligne echo "<table border=1>\n"; for($i=0;$i<16;$i++){ $start = ($i%$nb == 0)?"<tr>":""; //si 1ere élement on commence une ligne $end = ($i%$nb == $nb-1)?"</tr>\n":""; //si dernier élément on finit la ligne echo "$start<td>$i</td>$end"; //on affiche } echo "</table>\n"; ?>

qui retournera le code :

<table border=1>
<tr><td>0</td><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td><td>5</td></tr>
<tr><td>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td>10</td><td>11</td></tr>
<tr><td>12</td><td>13</td><td>14</td></tr>
<tr><td>15</td></table>

ceci est un exemple d'utilisation du modulo, d'autre solution sont possible en utilisant les if différament. Il n'y a jamais une solution.

VOS COMMENTAIRES ...

Commenter cette publication

Photo de pchlj Commentaire publié le lundi 17 décembre 2007 à 14 h 42 par pchlj
Comme en effet il n'existe jamais qu'une solution voici celle que j'utilise de temps en temps en parallèle d'une solution avec modulo :) (quasi comme la tienne :)

<? $nb = 3; print "<table><tr>"; for($i=0;$i<16;$i++) { print "<td>$i</td>"; $tour++; if($tour == $nb) { $tour=0; print "</tr><tr>"; } } print "</tr></table>"; ?>

ce qui donne ceci

<table>
<tr><td>0</td><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td><td>5</td></tr>
<tr><td>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td>10</td><td>11</td></tr>
<tr><td>12</td><td>13</td><td>14</td></tr>
<tr><td>15</td></tr>
</table>

cad la même chose lol :)
Photo de telnes Commentaire publié le lundi 17 décembre 2007 à 20 h 39 par telnes
ca chipotte ca chipotte ^^
Photo de Dr_von_scott Commentaire publié le lundi 24 décembre 2007 à 17 h 21 par Dr_von_scott
Histoire de chipoter un peu plus,

Un tableau ou le nombre de <td> par <tr> n'est pas identique
c'est pas terrible.
Il est aussi vrai que je ne fais pas mieux mais il serait interressant de travailler sur l'insertion d'un colspan en derniere ligne.

N'est'il pas ? :p
Photo de keul Commentaire publié le jeudi 11 décembre 2008 à 14 h 49 par keul
Pourquoi en pas en profiter pour utiliser la propriété flottante de CSS?
http://css.maxdesign.com.au/floatutorial/tutorial0407.htm
Photo de telnes Commentaire publié le vendredi 12 décembre 2008 à 10 h 06 par telnes
si mais c'était pas le sujet. après oui les CSS une très bonne solution.

mais cette question revenais souvent sur le forum donc ... elle a eu droit à un tuto

++
Photo de taourirt Commentaire publié le jeudi 21 mai 2009 à 10 h 49 par taourirt
slt
Photo de harleyluya Commentaire publié le vendredi 15 janvier 2010 à 17 h 02 par harleyluya
Salut,
Moi j'utilise le modulo pour griser une ligne sur deux... Il y a peut-être mieux, alors n'hésitez pas à me donner le truc.
A+

if ($i%2 == 1)
{
echo "<tr valign='top'>";
echo "<td align='center' bgcolor='#E8E8E8'>";
echo "<a href=EditMember.php?MBR=$ligne->MemberID'><img src='edit.png' alt='Edit' border='0'></a>&nbsp;";
echo "</td>";
echo "<td align='right' bgcolor='#E8E8E8'>$ligne->MemberID</td>";
echo "<td align='left' bgcolor='#E8E8E8' nowrap><b>$ligne->LastName</b>&nbsp;</td>";
echo "<td nowrap align='left' bgcolor='#E8E8E8'>$ligne->FirstName&nbsp;</td>";
echo "</tr>";

}else{

echo "<tr valign='top'>";
echo "<td align='center'>";
echo "<a href=EditMember.php?MBR=$ligne->MemberID'><img src='edit.png' alt='Edit' border='0'></a>&nbsp;";
echo "</td>";
echo "<td align='right'>$ligne->MemberID</td>";
echo "<td align='left' nowrap><b>$ligne->LastName</b>&nbsp;</td>";
echo "<td nowrap align='left'>$ligne->FirstName&nbsp;</td>";
echo "</tr>";

}

Commenter cette publication

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

Forums de discussions associés

Discutez et échangez sur ce thème dans nos forums XHTML - HTML - CSS, PHP - SQL.

Liens sponsorisés

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.