par
@rthur » 20 août 2008, 18:20
Autre idée à la con alors:
$select = "SELECT * FROM references ORDER BY REPLACE(REPLACE('".$refSelected."','RX',''),'R','')";
Bon c'est pas très propre, peut être pas très optimisé non plus mais bon ça devrait fonctionner...
Sinon avec sort():
<?php
if ($refSelected != '0') {
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($database) or die ('Erreur :'.mysql_error());
$select = "SELECT * FROM references ORDER BY '$refSelected'";
$result = mysql_query($select,$link) or die ('Erreur :'.mysql_error());
$total = mysql_num_rows($result);
if ($total) {
$tablo_ref=array();
while ($val = mysql_fetch_array($result)) {
$refList = $val[$refSelected];
// On construit un tableau qui contient toutes les références
$tablo_ref[] = $refList;
if (!empty($refList)) {
...
}
}
}
// On trie le tableau de références
sort($tablo_ref);
// On affiche toutes les références => là il faudra ajouter la mise en page HTML pour ta liste déroulante
foreach($tablo_ref as $ref) {
print $ref;
}
?>
La meilleure solution, est probablement la deuxième car elle est évolutive si un jour tu as d'autres références que R ou RX.
Au niveau performance, honnêtement je n'en sais rien. D'expérience, ce sont souvent les serveurs MySQL qui sont le plus chargés donc il vaudrait mieux éviter de leur faire faire le REPLACE mais bon, ça reste à vérifier si l'optimisation est un critère important dans ton projet.

Autre idée à la con alors:
[php]$select = "SELECT * FROM references ORDER BY REPLACE(REPLACE('".$refSelected."','RX',''),'R','')";[/php]
Bon c'est pas très propre, peut être pas très optimisé non plus mais bon ça devrait fonctionner...
Sinon avec sort():
[php]
<?php
if ($refSelected != '0') {
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($database) or die ('Erreur :'.mysql_error());
$select = "SELECT * FROM references ORDER BY '$refSelected'";
$result = mysql_query($select,$link) or die ('Erreur :'.mysql_error());
$total = mysql_num_rows($result);
if ($total) {
$tablo_ref=array();
while ($val = mysql_fetch_array($result)) {
$refList = $val[$refSelected];
// On construit un tableau qui contient toutes les références
$tablo_ref[] = $refList;
if (!empty($refList)) {
...
}
}
}
// On trie le tableau de références
sort($tablo_ref);
// On affiche toutes les références => là il faudra ajouter la mise en page HTML pour ta liste déroulante
foreach($tablo_ref as $ref) {
print $ref;
}
?> [/php]
La meilleure solution, est probablement la deuxième car elle est évolutive si un jour tu as d'autres références que R ou RX.
Au niveau performance, honnêtement je n'en sais rien. D'expérience, ce sont souvent les serveurs MySQL qui sont le plus chargés donc il vaudrait mieux éviter de leur faire faire le REPLACE mais bon, ça reste à vérifier si l'optimisation est un critère important dans ton projet. :)