Utilisation de la boucle for
Résolu
Bonjour,
Dans mon script je lis les noms d'une table et je les affiches avec la première lettre du nom.
Pourquoi l'affichage de l'alphabet s'arrête à la lettre W, alors que j'ai un nom avec la lettre Z (Zorro) ?
Merci
Dans mon script je lis les noms d'une table et je les affiches avec la première lettre du nom.
for($i=A;$i<=Z;$i++)
{
while ($row = mysql_fetch_array($result))
{
$lettre_nom = substr($row['nom'],0,1);
if ($lettre_nom == $i)
{
echo ''.$row['nom'].' ';
}
else
{
$i=$i++;
echo $i++;
echo '<br>';
echo $i;
echo ' ';
}
}
Pourquoi l'affichage de l'alphabet s'arrête à la lettre W, alors que j'ai un nom avec la lettre Z (Zorro) ?
Merci
5 réponses
-
parce que ta boucle for doit être avec des nombres et pas des lettres
essayes d'ajouter +1 à une lettre ?
donc ton affichage se fait par la boucle while uniquement
<?php $array_lettre=array(); while ($row = mysql_fetch_array($result)) { $lettre_nom = substr($row['nom'],0,1); $array_lettre[]=$lettre_nom; //on empile dans l'array } //tri de l'array par ordre alpha sort($array_lettre); //affichage foreach($array_lettre as $value){ echo '<br />'.$value; } -
OK ! Merci Alain_42 ! Je pensais qu'on pouvais utiliser la boucle for avec l'alphabet .....
Là, je voudrais afficher les noms associés à la lettre de l'alphabet.
Soit :
A ALBERT ARTHUR ANTOINE
B BERNARD
C CHARLES CHRISTIAN
D
E EMILE ..................
J'y arrive pas ! -
essayes comme ça (seules les lettres ayant un prénom sont affichées:
<?php $array_lettre=array(); while ($row = mysql_fetch_array($result)) { $lettre_nom = substr($row['nom'],0,1); //on va faire un array a deux dimentions première dimention les lettres, deuxieme les noms correspondants (il peut y en avoir plusieurs pour chaque lettre ?) $array_lettre[$lettre_nom][]=$row['nom']; //on empile dans l'array } //tri de l'array par ordre alpha suivant clef ksort($array_lettre); //affichage foreach($array_lettre as $clef=>$s_array){ $liste='<br />'.$clef; for($i=0;$i<sizeof($s_array);$i++){ $liste.=' '.$s_array[$i]; } echo $liste; } ?> -
Merci Alain_42, mais j'ai l'erreur :
mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Et moi je viens de trouver ceci qui fonctionne :$lettre_nom1 = substr($row['nom'],0,1); echo $lettre_nom ; echo ' '.$row['nom'].' '; while ($row = mysql_fetch_array($result)) { $lettre_nom = substr($row['nom'],0,1); if ($lettre_nom == $lettre_nom1) { echo ' '.$row['nom'].' '; $lettre_nom = substr($row['nom'],0,1); } else { echo '<br>'; echo $lettre_nom ; echo ' '.$row['nom'].' '; $lettre_nom1 = substr($row['nom'],0,1); } }
A ++ ;o) -
tu as cette reeur parce que dans ton script avant la ligne mysql_fetc_array() il y a un pb avec la requette