Tri alphabetique

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 : Tri alphabetique

par Victor BRITO » 24 oct. 2007, 19:02

Et pourquoi ne pas faire plus simple avec la fonction sort() ? :wink:

par typog » 24 oct. 2007, 18:47

Merci pour vos reponses bien que je ne sois arrivé a rien -_-'
je continue de chercher :wink:

par Ryle » 24 oct. 2007, 15:34

Et plutôt qu'une liste de 36 "case" pourquoi pas un simple if ? :)
if (ctype_digit($premier_caractere)) 
   $tab['chiffre'][] = $row_tab_boutik; 
else
   $tab[$premier_caractere][] = $row_tab_boutik;

Ps : penser à délimiter d'apostrophes ou guillemets les chaines utilisées comme index pour éviter les warning et du travail en plus de php qui du coup vérifie qu'il ne s'agit pas d'une constante avant d'utiliser la valeur comme une chaine :
$premier_caractere = $row_tab_boutik['nom'][0]
Et ne pas mettre d'apostrophes autour d'une variable (sortez vos variables !! Image)
$tab[$premier_caractere][] 
// et pas 
$tab['$premier_caractere'][]

par d0m » 24 oct. 2007, 15:09

il suffit d'utiliser les chaines de caractères.

Premièrement tu ranges toutes tes résulats dans un tableau associatif.
Ce tableau sera constitué de nombres de groupes différents (27 par exemple si tu veux 0-9 et chaque lettre)
$tab = array();
while ($row_tab_boutik = mysql_fetch_assoc($tab_boutik)){
  $premier_caractere = $row_tab_boutik[nom][0] //la premiere lettre/chiffre
  switch($premier_caractere){
    case '0':case '1':...case '9':$tab['chiffre'][] = $row_tab_boutik;break;
    case 'a':....case 'z' : $tab['$premier_caractere'][] = $row_tab_boutik;break;
  }
}
ensuite tu n'a plus qu'à utiliser ce tableau pour ton affichage.

Tri alphabetique

par typog » 24 oct. 2007, 14:33

Bonjour,
je souhaite afficher sur une page une liste de données et les classer par ordre alphabetique, jusque la tout va bien :
<?php
mysql_select_db($database_connectdb, $connectdb);
$query_tab_boutik = "SELECT nom, `description`, image, url, vote FROM boutik_lien ORDER BY nom ASC";
$tab_boutik = mysql_query($query_tab_boutik, $connectdb) or die(mysql_error());
$row_tab_boutik = mysql_fetch_assoc($tab_boutik);
$totalRows_tab_boutik = mysql_num_rows($tab_boutik);
?>
  <?php do { ?> 
<div class="gentab1">    
<div class="bloc1"><img src="<?php echo $row_tab_boutik['image']; ?>" /></div>
<div class="bloc2"><?php echo $row_tab_boutik['nom']; ?><br /></div>
<div class="bloc3"><?php echo  $row_tab_boutik['vote']; ?><br /></div>
<div class="bloc4"><a href="<?php echo $row_tab_boutik['url']; ?>" target="_blank">Visiter</a></div>
<div ><?php echo $row_tab_boutik['description']; ?></div> </div>
 <?php } while ($row_tab_boutik = mysql_fetch_assoc($tab_boutik)); ?>
        
Mon souci est de classer tout cela sur ma page par groupe et le lier au raccourci rapide, exemple :

(lien vers les lettres sur la page) : 0-9 A C G ...

0-9
->données dont le nom commence par un chiffre

A
->données dont le nom commence par A

C
->données dont le nom commence par C

G
etc....


Et la c'est le drame, je ne vois pas du tout comment proceder :oops:
Si quelqu'un peut m'aiguiller, ou me pousser dans le trou directement, merci beaucoup :lol: