Affichage résultat et tri alphanumérique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage résultat et tri alphanumérique

par hemi » 20 août 2008, 20:04

Ca marche nickel !!!

Je viens de t'élever au rang de demi-Dieu et j'érigerais un temple qui portera ton nom !!! :lol:

Tu me fais gagner un temps précieux !

Encore merci.

@+

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. :)

par hemi » 20 août 2008, 17:57

Merci pour ta réponse rapide !

Excellente idée ! Mais malheureusement, j'ai également une série de référence qui commencent par deux lettres (RX1234). :roll:

Par contre, après diverses (heures de) lectures, je me demande si il serait possible de placer mes résultats de requête dans un "array" et ensuite d'utiliser la fonction "sort()"... Cependant, je ne sais pas, mais alors pas du tout comment faire !

To be continued...

par @rthur » 20 août 2008, 16:21

Bonjour,

Une idée qui me passe par la tête:
$select = "SELECT * FROM references ORDER BY SUBSTRING('".$refSelected."',2)";
La fonction MySQL SUBSTRING permet dans mon exemple d'ignorer le premier caractère de ta référence et donc devrait permettre un tri plus logique...
http://dev.mysql.com/doc/refman/5.0/fr/ ... #id2943793

Affichage résultat et tri alphanumérique

par hemi » 20 août 2008, 15:56

Hello!

Ça fait maintenant plusieurs heures que je fais des recherches sur le Ouaibe pour trouver une solution à mon problème, mais que ni-ni... :(

Je m'explique :

J'ai un formulaire avec une liste de choix de références récupérées dans une base de données (voir code ci-dessous). Ces références sont sous la forme "R123", "R1234", "R456", "R4567"... et mon problème vient du fait qu'elles s'affichent comme ceci :
- R123
- R1234
- R456
- R4567
- ...

au lieu de comme cela :
- R123
- R456
- R1234
- R4567
- ...

Avez-vous une petite idée ?

Code : Tout sélectionner

<?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) { while ($val = mysql_fetch_array($result)) { $refList = $val[$refSelected]; if (!empty($refList)) { ... } } } ?>
Merci d'avance pour vos réponses.

@+