Tableau HTML

Petit nouveau ! | 6 Messages

28 mars 2006, 11:40

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

edison1986
Invité n'ayant pas de compte PHPfrance

28 mars 2006, 11:49

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...

Petit nouveau ! | 6 Messages

28 mars 2006, 11:51

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();

Eléphant du PHP | 312 Messages

28 mars 2006, 17:31

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).

Petit nouveau ! | 6 Messages

29 mars 2006, 10:20

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 .

Mammouth du PHP | 1029 Messages

29 mars 2006, 11:27

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.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 312 Messages

29 mars 2006, 11:38

$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
}

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2006, 18:22

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+

Petit nouveau ! | 6 Messages

29 mars 2006, 18:24

Oups j'avais oublié de me connecter avant de répondre :oops: :oops:
Merci Hermès