par
Kaoteknik » 18 nov. 2007, 11:35
Une autre solution serait peut-être de récupérer les enregistrements dans la base de données, les "couper" à l'aide de la fonction explode, les insérer dans un tableau, puis trier ce tableau en toute fin...
J'ai écrit ce code sans l'avoir testé... A voir :
<?php
// Ici j'enlève la clause ORDER BY. On effectuera le tri plus loin...
$req_client ="SELECT clients_id, label FROM ld_clients";
$req_client = mysql_query($req_client) or die("Echec de la requête<br/>".mysql_error());
// On crée un tableau contenant les particules des noms
$particules = array('Le ', 'La ', 'L\'', 'De ', 'De la ', 'De l\'', 'Du ');
// On initialise $label_c
$label_c = array();
while ($data_client = mysql_fetch_assoc($req_client)) {
// On scinde les particules et les noms en deux entitées
$cut = explode($particules, $data_client['label']);
// On replace la particule à la fin du nom entre parenthèses
$label_c[] = $cut[1].' ('.$cut[0].')';
}
// On effectue le tri une fois les chaînes traitées
rsort($label_c);
?>
Une autre solution serait peut-être de récupérer les enregistrements dans la base de données, les "couper" à l'aide de la fonction explode, les insérer dans un tableau, puis trier ce tableau en toute fin...
J'ai écrit ce code sans l'avoir testé... A voir :
[php]<?php
// Ici j'enlève la clause ORDER BY. On effectuera le tri plus loin...
$req_client ="SELECT clients_id, label FROM ld_clients";
$req_client = mysql_query($req_client) or die("Echec de la requête<br/>".mysql_error());
// On crée un tableau contenant les particules des noms
$particules = array('Le ', 'La ', 'L\'', 'De ', 'De la ', 'De l\'', 'Du ');
// On initialise $label_c
$label_c = array();
while ($data_client = mysql_fetch_assoc($req_client)) {
// On scinde les particules et les noms en deux entitées
$cut = explode($particules, $data_client['label']);
// On replace la particule à la fin du nom entre parenthèses
$label_c[] = $cut[1].' ('.$cut[0].')';
}
// On effectue le tri une fois les chaînes traitées
rsort($label_c);
?>[/php]