Page 1 sur 1

Tableau HTML

Posté : 28 mars 2006, 11:40
par filouche29
Bonjour,
je créé un tableau en HTML à partir d'une requête qui me renvoie des enregistrements. Par exemple 30 enregistrements, le 1er champ des 10 premiers contient la même valeur(ex: A), le 1er champ des 10 suivants contient la même valeur(ex: B) et le 1er champ des 10 derniers contient la même valeur (ex: C).
Je souhaite lister tous les enregistrements et rajouter une ligne(<tr><td>...</td></tr>) à chaque fois que la valeur du 1er champ change.
Merci de votre aide

Posté : 28 mars 2006, 11:49
par edison1986
salut

avec une boucle while() tu doit pouvoir faire sa mais je ne peu pas t aider bocoup plus car tu a ete un peu vague dans ta description...

..en complément, un exemple de mon code

Posté : 28 mars 2006, 11:51
par filouche29
en clair lorsque $xxxxx change de valeur je veux rajouter une ligne...
$req = mysql_query($sql);
$nb_col = mysql_num_fields($req );

//entete de tableau
         for ($i = 1;$i < $nb_col; ++$i)
               {
               $nom_col = mysql_field_name($req,$i );
               echo '<td align="center" nowrap >';
               echo $nom_col;
               echo '</td>';
               }
         echo '</tr>';
//details des enregistrements

while ($data = mysql_fetch_array($req))
             {
            $xxxxx = $data[0];
            echo '<tr>';
            for ($titre = 1;$titre < $nb_col; ++$titre)
            {
            echo '<td>';
            echo $data[mysql_field_name($req ,$titre)];
             }
            echo '</td></tr>';
            }
            echo '</table>';
mysql_free_result($req);
// Déconnexion
mysql_close();

Posté : 28 mars 2006, 17:31
par Hermès
Tu mémorises ton $xxxxxx dans une variable et à chaque cycle de boucle tu compares le nouve $xxxxxx avec l'ancien. S'ils sont différents (déjà tu changes l'ancien), tu rajoutes une ligne.

Ca répond à ta problématique (j'espère avoir compris ce que tu souhaitais).

Posté : 29 mars 2006, 10:20
par filouche29
Tu as tout à fait compris ce que je veux faire....................et j'ai aussi tout à fait compris la mécanique à utiliser, mais c'est la mise en oeuvre qui me pose problème, je n'arrive pas à localiser précisément les début et fin de cycle, et anciennevaleur est toujours égale à nouvellevaleur .

Posté : 29 mars 2006, 11:27
par Maitrepylos
Bonjour, puisqu'il on la même valeur (a,b,c), en fait tu veux un tableaux avec Trois lignes?(ou le nombre de ligne en rapport avec le nombres de valeurs différentes).

Dans ce cas ton code est bon, mais dans ta commande sql met un "DISTINCT", ce qui élémineras tous les doublons.

Posté : 29 mars 2006, 11:38
par Hermès
$xxxx = "";
while ($data = mysql_fetch_array($req)) {
   // Si $xxxx est vide, c'est qu'on se trouve au premier cycle de boucle
   if ($xxxx == "") {
      // On initialise donc $xxxx avec la valeur de la premiere colonne de notre premiere ligne
      $xxxx = $data[0];
   }

   // Sinon, c'est qu'on est déjà en train de parcourir la boucle.
   // Donc si $data[0] est différente de notre donnée sauvegardée, c'est qu'on est sur un "changement"
   elseif ($data[0] != $xxxx) {
      // Alors on écrit la ligne "en plus" (je sais pas trop ce que tu veux mettre dedans)
      echo "<TR>...</TR>";
      // Et on met à jour $xxxx pour qu'il prenne la nouvelle valeur
      $xxxx = $data[0];

   } else {
      // On ne fait rien : $data[0] est identique à $xxxx donc on n'affiche pas la ligne "en plus"
   }
   // Le reste de l'affichage des données de la boucle
}

Posté : 29 mars 2006, 18:22
par Invité
Merci Hermès tu es un dieu !! ( je sais il est facile celui là!!)
C'est presque parfait car j'avais juste oublié de préciser que je voulais la ligne en plus AVANT d'afficher les données et non APRES.
J'ai juste fais une ou 2 modif et c'est OK.

Merci
A+

Posté : 29 mars 2006, 18:24
par filouche29
Oups j'avais oublié de me connecter avant de répondre :oops: :oops:
Merci Hermès