La boucle "for"

Résolu
t671 Messages postés 1632 Statut Membre -  
t671 Messages postés 1632 Statut Membre -
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
A voir également:

7 réponses

t671 Messages postés 1632 Statut Membre 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
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
titus22 Messages postés 2352 Statut Membre 641
 
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
t671 Messages postés 1632 Statut Membre 11
 
Effectivement, ce serait possible. Mais je suis obligé de répéter 26 fois la même condition. Je voulais l'éviter ..........
0
titus22 Messages postés 2352 Statut Membre 641
 
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
t671 Messages postés 1632 Statut Membre 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
titus22 Messages postés 2352 Statut Membre 641
 
$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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
t671 Messages postés 1632 Statut Membre 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
t671 Messages postés 1632 Statut Membre 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
AssassinTourist Messages postés 7838 Statut Contributeur 1 312
 
Bonjour,
Est-ce qu'au final, tu as réussi à faire ce que tu voulais ?
0
t671 Messages postés 1632 Statut Membre 11
 
Oui, à peu près .............
0