Classement par ordre alphabetique

Eléphanteau du PHP | 41 Messages

02 juil. 2006, 19:47

Bonjour,

Voilà j'administre un site qui enregistre les scores de joueurs avec des prises d'écran ou des vidéo de la partie. Et j'aimerais créer une base de donnée avec 5 champs : Pseudo, Score, Commentaire, Taille, Type (image ou vidéo).

Mais de façon à s'y retrouver j'aimerais qu'on puisse classer les colone. Comme dans les boite mail où quand on clique sur Sujet par exemple ça les classe par ordre alphabétique.

J'aimerais aussi classer les taille de fichier et les score du plus grand au plus petit.

Merci d'avance

ViPHP
ViPHP | 649 Messages

02 juil. 2006, 20:01

Classer les colonnes? Tu veux dire laisser le choix d'ordonner par différents élément, croissant ou décroissant? Comme la liste des membres sur ce forum phpBB?

D'abord tu dois connaître la clause ORDER BY de MySQL. On peut ordonner des nombres dans l'ordre décroissant en ajoutant le mot DESC après le nom du champ et en ordre croissant en ajoutant le mot ASC (par défaut, facultatif).

Ordonné par id décroissant :

Code : Tout sélectionner

SELECT * FROM table ORDER BY id DESC
Ordonné par id croisant :

Code : Tout sélectionner

SELECT * FROM table ORDER BY id
Maintenant, si tes champs contiennent des chaînes de caractères, ce sera l'ordre alphabétique qui sera appliqué.

Sur mon site, pour la liste des membres, ce que je fais :

Code : Tout sélectionner

<form action="membres.php" method="get"> <p>Trier par : <select name="order"> <option value="pseudo">Pseudo</option> <option value="date">Date d'inscription</option> <option value="statut">Statut</option> </select> </p> <p>Dans l'ordre : <select name="sens"> <option value="croissant">Croissant</option> <option value="decroissant">Décroissant</option> </select> </p> <p><input type="submit" value="Classer" /></p> </form>
Ensuite, dans mon code PHP, je construis la requête en fonction de ces données :
<?php
$ordre = 'ASC';
$by = 'pseudo';
if (isset($_GET['sens']))
­{
     if ($_GET['sens'] == 'decroissant')
    {
          $ordre = 'DESC';
     }
     else
     {
          $ordre = 'ASC';
      }
}
if (isset($_GET['order']))
{
     if ($_GET['order'] == 'pseudo' || $_GET['ordre'] == 'date' || $_GET['order'] == 'statut')
     {
           $by = $_GET['order'];
      }
}

$requete = "SELECT * FROM membres ORDER BY " . $by . " " . $ordre;
?>
Si j'ai bien compris ta question initiale ça devrait t'aider ;) .
Image

Eléphanteau du PHP | 41 Messages

03 juil. 2006, 10:55

Oui c'est parfaitement ça merci. Il y a juste une chose que je ne comprend pas, c'est où sont stockées ces informations (pseudo, date d'inscription, statut) ? Est-ce qu'il faut les mettre dans un fichier texte ? Dans la même page ?

Mammouth du PHP | 1353 Messages

03 juil. 2006, 11:01

Bonjour,

je te conseille d'utiliser une base de données. Regarde les tutoriaux phpfrance par exemple sur les bases de données Mysql et le commandes PHP associées...
Tell me and I forget. Teach me and I remember. Involve me and I learn.