La boucle "for"

Résolu/Fermé
t671 Messages postés 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 - Modifié par t671 le 16/01/2012 à 11:17
t671 Messages postés 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 - 3 févr. 2012 à 13:22
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 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
16 janv. 2012 à 11:14
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 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
16 janv. 2012 à 11:20
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 jeudi 1 décembre 2011 Statut Membre Dernière intervention 16 février 2012 638
16 janv. 2012 à 11:22
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 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
16 janv. 2012 à 11:27
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 jeudi 1 décembre 2011 Statut Membre Dernière intervention 16 février 2012 638
Modifié par titus22 le 16/01/2012 à 11:29
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 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
16 janv. 2012 à 11:32
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 jeudi 1 décembre 2011 Statut Membre Dernière intervention 16 février 2012 638
Modifié par titus22 le 16/01/2012 à 11:38
$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 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
16 janv. 2012 à 11:45
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 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
16 janv. 2012 à 11:55
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 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
3 févr. 2012 à 11:16
Bonjour,
Est-ce qu'au final, tu as réussi à faire ce que tu voulais ?
0
t671 Messages postés 1462 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 21 décembre 2024 11
3 févr. 2012 à 13:22
Oui, à peu près .............
0