Page 1 sur 1
tri par ordre alphabétique
Posté : 15 mars 2006, 19:08
par mimitnt
Bonjour
j'ai une liste de noms que je voudrais trier par ordre alphabétique.
Mais certains noms ne commencent pas par une lettre mais par un symbole tel que [,{,( ...
Ex: {A.T.C}
Comment faire en sorte que le tri ignore ces symboles et tienne compte que de la 1ère lettre?
Merci de votre aide
Posté : 15 mars 2006, 19:20
par mario
Les noms sont stockés dans une table ou dans un array() ?
Posté : 15 mars 2006, 19:21
par mimitnt
Ils sont stockés dans une table
Posté : 15 mars 2006, 19:40
par Spols
place les dans un tableau avec une requete et ne met que les lettres dans les clé
ensuite, tu trie avec ksort($tableau);
Posté : 15 mars 2006, 20:01
par mario
effectivement j'ai epluché la doc. Il semble impossible d'utiliser les REGEXP avec un TRIM ou un REPLACE, ce qui aurait permis de faire un ORDER BY sur une chaîne remise en forme.
apparament, ça ne renvoi que 0 ou 1
La bonne solution est donc celle du tri après stockage dans un array()
strtok ou preg_replace seront utiles alors.
Posté : 17 mars 2006, 15:20
par mimitnt
Je suis débutante et je n'arrive vraiment pas. J'ai essayé de chipoté à tout mais je bloque
Voici ma requete
Code : Tout sélectionner
<?php
require('../includes/_connexion.php')
$requete = "SELECT clan FROM ETS_liste_clans";
$resultat = mysql_query($requete);
?>
Je voudrais supprimer les caractères ()[]{} autres que des lettres de tous les noms commençant par ces caractères
Ex: {A.T.E} devienne A.T.E
Posté : 17 mars 2006, 21:07
par mario
<?php
$requete = "SELECT clan FROM ETS_liste_clans";
$resultat = mysql_query($requete) or die(mysql_error());
$tableau = array(); // Créé un tableau pour stocker les clan
while ($ligne = mysql_fetch_assoc($resultat)){
/// REMPLISSAGE DU TABLEAU
$tableau[] = array( trim($ligne['clan'], " {}[]()") ); // supprime les caractères { } [ ] ( ) et ESPACE en début et fin de chaîne uniquement !!!
}
/* Le tableau se présentera de cette façon
Array
(
[0] => exemple1
[1] => exemple2
[2] => exemple3
)
*/
// Si tu souhaites parcourir le tableau pour un affichage:
foreach ($tableau AS $valeurs){
echo $valeurs.'<br/>';
}
?>
Nous sommes à ton écoute si tu n'as pas compris quelque chose ou si tu as d'autres questions

Posté : 17 mars 2006, 21:24
par Spols
Excuse moi mario mais je pense que d'aprés les données expliqué ci-dessus, ce code est plus approprié
<?php
$requete = "SELECT clan FROM ETS_liste_clans";
$resultat = mysql_query($requete) or die(mysql_error());
$tableau = array(); // Créé un tableau pour stocker les clan
while ($ligne = mysql_fetch_assoc($resultat)){
/// REMPLISSAGE DU TABLEAU
$tableau[trim($ligne['clan'], " {}[]()") ] = $ligne['clan']
}
/* Le tableau se présentera de cette façon
Array
(
[exemple1] => {exemple[1]}
[exemple2] => {exemple[2]}
[A.T.E] => {A.T.E} //dans ton cas particulier
)
*/
ksort (tableau);
// Si tu souhaites parcourir le tableau pour un affichage:
foreach ($tableau AS $valeurs){
echo $valeurs.'<br/>';
}
?>
Posté : 17 mars 2006, 21:39
par mario
J'ai oublié le tri
Voici le script corrigé:
<?php
$requete = "SELECT clan FROM ETS_liste_clans";
$resultat = mysql_query($requete) or die(mysql_error());
$tableau = array(); // Créé un tableau pour stocker les clan
while ($ligne = mysql_fetch_assoc($resultat)){
/// REMPLISSAGE DU TABLEAU
$tableau[] = array( trim($ligne['clan'], " {}[]()") ); // supprime les caractères { } [ ] ( ) et ESPACE en début et fin de chaîne uniquement !!!
}
/* Le tableau se présentera de cette façon
Array
(
[0] => exemple1
[1] => exemple2
[2] => exemple3
)
*/
sort($tableau); // tri le tableau par ordre alphabétique
// Si tu souhaites parcourir le tableau pour un affichage:
foreach ($tableau AS $valeurs){
echo $valeurs.'<br/>';
}
?>
Spols, je ne vois pas en quoi mon code est moins approprié que le tien, mon index numérique est bien

Posté : 17 mars 2006, 21:54
par Spols
je pense qu'il veut malgré tout garder chaque ligne intact, mais les trier par ordre alphabetique
Posté : 17 mars 2006, 22:40
par mario
je pense qu'il veut malgré tout garder chaque ligne intact, mais les trier par ordre alphabetique
ok effectivement, je n'avais pas pensé à cet aspect
