Comment trier les resulats TRADUITS de mon tableau?

Comment trier les resulats TRADUITS de mon tableau? - PHP - Programmation

Marsh Posté le 02-10-2008 à 10:52:53    

Bonjour,
Le script que j'utilise permet d'afficher une liste de noms de pays qu'il va chercher dans la base SQL dans la table 'countries' et colonne 'country'. Les pays sont listés dans la table en anglais.
Selon la langue choisie par l'internaute le nom des pays est traduit dans cette langue.  
Mon probleme est qu'il fait le tri alphabetique grace a Order By'country' ASC donc qu'il fait le tri par rapport aux noms en anglais quel que soit la langue choisie ce qui fait que l'ordre alphabetique n'est pas respecté en français par exemple.
Y'a t'il une solution pour qu'il fasse le tri alphabetique en fonction des resultats affichés??
 
Je vous mets 2 extraits de codes :  
Le premier sert donc a aller chercher les informations dans la base :
 
function getZipCodeCountry() {
    $aCountryList = array();
    $aCountries = ( $sCoutry = db_value( 'SELECT value FROM `search_settings` WHERE name = "countries"' ) ) ? explode( ';', $sCoutry ) : array( 0 );
    $rCountryList = db_res( 'SELECT `ISO2`, `Country` FROM `Countries` WHERE `ISO2` IN ("'. implode( '","', $aCountries ) .'" ) ORDER BY `Country` ASC' );
    while( $aCountry = mysql_fetch_array( $rCountryList ) )
        $aCountryList[$aCountry['ISO2']] = $aCountry['Country'];
    return $aCountryList;    
}

 
Le 2ème sert a affciher le resultat sur ma page :
<select name="country" id="country">
<?
echo '<option value="">'. _t('All') .'</option>';
foreach( $aCountryList as $ISO => $Country )
echo '<option value="'. $ISO .'" >'._t("__". $Country ) .'</option>';
?>
</select>

 
La traduction se fait grâce a : .t("__".
 
Quelqu'un peux t'il me sauver????
Merci d'avance
 
Denis


---------------
ralpflo
Reply

Marsh Posté le 02-10-2008 à 10:52:53   

Reply

Marsh Posté le 02-10-2008 à 11:00:52    

la traduction est faite en php , donc il faut faire le tri coté php  
 
tu construit un tableau $iSO => nomPaysTraduit , et tu trie ca avec asort


---------------

Reply

Marsh Posté le 02-10-2008 à 11:02:43    

Merci Flo pour ta reponse... mais je suis autodidacte en php et je ne sais pas comment onfait un tableu $ISO

Reply

Marsh Posté le 02-10-2008 à 17:43:42    

ralpflo a écrit :

Merci Flo pour ta reponse... mais je suis autodidacte débutant en php et je ne sais pas comment onfait un tableu $ISO

 

tu as déjà ton tableau, il s'appelle $aCountryList, tu le construis dans ton premier morceau de code.
y a plus qu'à appliquer la fonction de tri en php avant l'affichage.


Message édité par PunkRod le 02-10-2008 à 17:44:03
Reply

Marsh Posté le 02-10-2008 à 17:56:55    

D'accord mais j'ai essayé de metter des osrt ou des asort un peu partout et fca ne marche pas. Ca serait trop te demander que de me dire où je dois mettre le asort et en gros ce que je dois ecrire???
Merci beaucoup Flo :-)

Reply

Marsh Posté le 02-10-2008 à 18:55:33    

ralpflo a écrit :


La traduction se fait grâce a : .t("__".


 
Comment tu fais pour faire ta traduction ca m'intéresse ?

Reply

Marsh Posté le 02-10-2008 à 21:07:09    

ralpflo a écrit :

D'accord mais j'ai essayé de metter des osrt ou des asort un peu partout et fca ne marche pas. Ca serait trop te demander que de me dire où je dois mettre le asort et en gros ce que je dois ecrire???
Merci beaucoup Flo :-)


normalement y a tout dans la doc, surtout pour filtrer un tableau associatif à une dimension...
 
...et tu as déjà la réponse : pour trier les valeurs en conservant les clés, c'est asort() qu'il faut utiliser.

Reply

Marsh Posté le 03-10-2008 à 16:21:47    

J'ai mis ca comme code :
<? echo '<option value="">'. _t('All') .'</option>';
asort($aCountryList);
foreach( $aCountryList as $ISO => $Country )
echo '<option value="'. $ISO .'" >'._t("__". $Country ) .'</option>'; ?>
 
mais ca continue a trier en fonction de l'ordre alphabetique dans ma base et non pas par ordre alphabetique des pays traduits.
 
Tbox je suis désolé mais je ne sais pas comment fonctionne la traduction c'est un script que j'ai recupéré en l'etat et que j'essaie d'améliorer.

Reply

Marsh Posté le 04-10-2008 à 12:30:46    


i18n

Reply

Marsh Posté le 04-10-2008 à 12:37:02    

remplace

Code :
  1. while( $aCountry = mysql_fetch_array( $rCountryList ) )
  2.        $aCountryList[$aCountry['ISO2']] = $aCountry['Country'];


par  

Code :
  1. while( $aCountry = mysql_fetch_array( $rCountryList ) )
  2.        $aCountryList[$aCountry['ISO2']] =_t("__". $aCountry['Country']);
  3. asort($aCountryList);



---------------

Reply

Marsh Posté le 04-10-2008 à 12:37:02   

Reply

Marsh Posté le 05-10-2008 à 12:46:33    

MERCI INFINIMENT FLO!!!
Ca marche nickel
You're the Best

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed