Utilisation de la boucle for

Résolu
t671 Messages postés 1478 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5413 Statut Membre -
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

5 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  2. t671 Messages postés 1478 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
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  4. t671 Messages postés 1478 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    tu as cette reeur parce que dans ton script avant la ligne mysql_fetc_array() il y a un pb avec la requette
    0