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.
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. 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
    1. 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
      1. 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
        1. 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
          1. tu as cette reeur parce que dans ton script avant la ligne mysql_fetc_array() il y a un pb avec la requette
            0