Utilisation de la boucle for

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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 '&nbsp;&nbsp;';
	}
}

Pourquoi l'affichage de l'alphabet s'arrête à la lettre W, alors que j'ai un nom avec la lettre Z (Zorro) ?

Merci
A voir également:

5 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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;
	}
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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 !
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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;
	}
?>
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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)
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
tu as cette reeur parce que dans ton script avant la ligne mysql_fetc_array() il y a un pb avec la requette
0