La boucle "for"

Résolu
t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -
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. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
     
    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++ ?
    0
    1. vordano Messages postés 1981 Statut Membre 316
       
      pour faire un saut de ligne c'est \n
      donc tu as juste a faire un test :)
      0
  2. titus22 Messages postés 2352 Statut Membre 668
     
    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
    ...

    0
  3. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
     
    Effectivement, ce serait possible. Mais je suis obligé de répéter 26 fois la même condition. Je voulais l'éviter ..........
    0
    1. titus22 Messages postés 2352 Statut Membre 668
       
      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 ?
      0
  4. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
     
    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 !
    0
    1. titus22 Messages postés 2352 Statut Membre 668
       
      $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'].' ';
      }
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
     
    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)))
    0
  7. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
     
    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 ...........
    0
  8. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,
    Est-ce qu'au final, tu as réussi à faire ce que tu voulais ?
    0
    1. t671 Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   11
       
      Oui, à peu près .............
      0