La boucle "for"

Résolu
Bonjour,

Dans mon script, j'ai mis une boucle for qui me liste les noms de ma table.

$select = 'SELECT nom,COUNT(*) AS nb FROM individus WHERE famille LIKE "%TOTO%" GROUP BY nom ORDER BY nom ASC'; 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 

while ($row = mysql_fetch_array($result))     
{   
         for($i=A;$i<=Z;$i++) 
        {  
         $lettre_nom = substr($row['nom'],0,1); 

     if ($lettre_nom == $i) 
     { 
        echo ''.$row['nom'].' '; 
 } 
         } 
} 


Mais quand la lettre de l'initiale du nom change ($i), je voudrais aller à la ligne.
Comment faire ?
Merci

7 réponses

  1. Merci titus22. Je comprends un peu ce que tu veux dire, mais j'ai du mal à le mettre par écrit.

    Et je vais devoir écrire 26 lignes pour les 26 lettres de l'alphabet !
    Ne peut-on pas l'écrire avec $i et $i++ ?
    1. pour faire un saut de ligne c'est \n
      donc tu as juste a faire un test :)
  2. A quoi te sert le for et le if ?

    Pourquoi ne pas faire directement : echo ''.$row['nom'].' ';

    Car la en gros si je comprend bien tu fait
    i = A
    tu regarde si ta variable commence par A, si oui tu l'affiche
    i = B
    tu regarde si ta variable commence par B, si oui tu l'affiche
    ...

    1. Effectivement, ce serait possible. Mais je suis obligé de répéter 26 fois la même condition. Je voulais l'éviter ..........
      1. Déja je te propose de remplacer ça :

        for($i=A;$i<=Z;$i++)
        {
        $lettre_nom = substr($row['nom'],0,1);

        if ($lettre_nom == $i)
        {
        echo ''.$row['nom'].' ';
        }
        }

        par ça :

        echo ''.$row['nom'].' ';

        au final tu auras le même résultat non ?
    2. Oui, j'ai le même résultat. Mais j'aurais voulu éviter de tester 26 fois la première lettre du nom.
      Mais faire un <br> quand celle-ci change !
      1. $select = 'SELECT nom,COUNT(*) AS nb FROM individus WHERE famille LIKE "%TOTO%" GROUP BY nom ORDER BY nom ASC';
        $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

        $row = mysql_fetch_array($result);
        $lettre_nom = substr($row['nom'],0,1);

        while ($row = mysql_fetch_array($result))
        {
        if($lettre_nom != $substr($row['nom'],0,1))
        {
        echo "<BR>";
        $lettre_nom = substr($row['nom'],0,1);
        }

        echo ''.$row['nom'].' ';
        }
    3. Ca me semble pas mal, mais j'ai le msg :
      Fatal error: Function name must be a string
      pour if ($lettre_nom != ($substr($row['nom'],0,1)))
      1. Là :
        $lettre_nom = substr($row['nom'],0,1);
        
        while ($row = mysql_fetch_array($result)) 
        { 
        echo ''.$row['nom'].' '; 
        $lettre_nom = substr($row['nom'],0,1);
        	if ($lettre_nom != substr($row['nom'],0,1));
        	{ 
        	echo "<BR>"; 
        	$lettre_nom = substr($row['nom'],0,1);
        	} 
        }		
        


        J'ai tous les noms, sans saut de ligne ...........
        1. Contributeur
          Bonjour,
          Est-ce qu'au final, tu as réussi à faire ce que tu voulais ?
          1. Oui, à peu près .............