La boucle "for"

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 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
A voir également:

7 réponses

t671 Messages postés 1476 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
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
pour faire un saut de ligne c'est \n
donc tu as juste a faire un test :)
0
titus22 Messages postés 1918 Date d'inscription   Statut Membre Dernière intervention   639
 
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 1476 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
titus22 Messages postés 1918 Date d'inscription   Statut Membre Dernière intervention   639
 
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 1476 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
titus22 Messages postés 1918 Date d'inscription   Statut Membre Dernière intervention   639
 
$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 1476 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
t671 Messages postés 1476 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
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,
Est-ce qu'au final, tu as réussi à faire ce que tu voulais ?
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Oui, à peu près .............
0