affichage d'un tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : affichage d'un tableau

par x@v » 23 mars 2007, 06:40

avec le modulo si je remplace 3 par 2 j'ai deux vignette qui s'affiche
http://88.167.164.83/jean-paul/site_xajax/
C'est un grand avantage.

par Ryle » 22 mars 2007, 09:25

Ben disons que tu peux également le faire sans le modulo, avec une variable dédié que tu incrémentes à chaque tour de boucle, et que tu remets à zéro à chaque fois qu'elle arrive à N éléments pour indiquer la nouvelle ligne
$cptLigne = 0;
while (...) {

  if($cptLigne==0) {// nouvelle ligne
    ...
  }

  $cptLigne++; // incrémentation du compteur

  if($cptLigne==$N) {// fin de la ligne
    $cptLigne = 0; // raz du compteur
    ...
  }
}
L'avantage du modulo, c'est de profiter du compteur global quand tu en as un, et d'éviter une seconde variable :)

par x@v » 22 mars 2007, 03:31

la logique est très interressante et pas courante.
Merci

par Ryle » 22 mars 2007, 01:42

Le résultat du modulo est le reste de la division euclidienne (partie entière) :

Code : Tout sélectionner

0 / 3 = 0, reste 0 (0 % 3 = 0) 1 / 3 = 0, reste 1 (1 % 3 = 1) 2 / 3 = 0, reste 2 (2 % 3 = 2) 3 / 3 = 1, reste 0 (3 % 3 = 0) 4 / 3 = 1, reste 1 (4 % 3 = 1) 5 / 3 = 1, reste 2 (5 % 3 = 2) 6 / 3 = 2, reste 0 (6 % 3 = 0) ...
Ainsi à chaque fois que ton modulo N est égal à 0 c'est une nouvelle ligne qui commence et à chaque fois que modulo N est égal à N-1, c'est que ta ligne se termine.... reste plus qu'à ajouter les <tr> et </tr> dans ces cas là :)

affichage d'un tableau

par x@v » 22 mars 2007, 01:30

Bonjour,
j'ai une fonction que je ne comprend pas, elle affiche 3 cellule par 3.
function produitvu() {
  $reponse = new xajaxResponse();
  $req = "SELECT * FROM produits ORDER BY id";
  $query = mysql_query($req);
  $txt = '<table width="100%" border="0" cellspacing="5">';
  $i=0;
  while($tb = mysql_fetch_assoc($query)){
    if($i%3 == 0)  $txt .= '<tr>';
	$txt .= '<td align="center">' . $tb['nom'] . '<br><img width="110" height="161" src="' . $tb['photo'] . '" alt="' . $tb['nom'] . '" OnClick="xajax_detailvu(' . $tb['id'] . ');"><br>' . $tb['prix'] . '</td>';
    if(($i+1%3) == 0)  $txt .= '</tr>';
	$i++;
  } 
  $txt .= '</table>';      
  $reponse->addAssign("detail", "innerHTML", $txt);
  return $reponse->getXML();
}
donc je bloque sur le contrôle
 if($i%3 == 0)  $txt .= '<tr>';
et
    if(($i+1%3) == 0)  $txt .= '</tr>';
$i+1%3 sa fait 1 modulo de 3 = 0.33
Merci