Page 1 sur 1

Controle du Classement de donnée

Posté : 20 janv. 2006, 00:15
par zyclope
Hello

Voilà mon problème conseptuel

je clique sur un lien de mon tableau ca me classe suivant cette colone ...
Comment faire quand je reclique dessus que ca me classe mais dans l'autre sense.

Voilà le code qui conserne cela

Code : Tout sélectionner

$cl= $_GET["cls"]; if($cl == NULL) $cl = "ages"; $sqlg ='SELECT idj,equipe,nom,ages,position,pdb,plo,ref,agi,tac,tete,pas,tir,tec,vit,forc,posi,pot,idjoueur FROM '.$base.' WHERE position = "Gardien" ORDER BY '.$cl.' DESC';
Je pense bien qu'il faut remplacer mon DESC par $ordre par exemple.

mais comment trouver si il a eu un clique ou deux sur le meme lien ?

J'ai pensé a une sorte de compteur mais j'arrive pas bien a visualiser comment l'implémenter ...

mon lien est de ce genre

Code : Tout sélectionner

<a href=?pid='.$pid.'&cls=position>Position</a>
pid est une autre variable qui me sert a choisire quel jeux de module j'affiche sur ma page
Help

A++

Posté : 20 janv. 2006, 00:31
par Truc
Salut,

tu peux récupèrer une variable GET comme le champ de tri:
$cl= isset($_GET["cls"]) ? $_GET["cls"] : "ages"; // opérateur ternaire
$tri= isset($_GET["tri"]) ? $_GET["tri"] : "";

$sqlg ='SELECT idj,equipe,nom,ages,position,pdb,plo,ref,agi,tac,tete,pas,tir,tec,vit,forc,posi,pot,idjoueur FROM '.$base.' WHERE position = "Gardien" ORDER BY '.$cl.' '.$tri; 

$ordre = ($tri == "") ? "DESC" : ""; //inverse le tri, si $tri est égal à "" (ASC) on passe DESC dans le lien et inversement
echo '<a href=?pid='.$pid.'&cls=position&tri='.$ordre.'>Position</a>'; 
opérateur ternaire:
$cl= isset($_GET["cls"]) ? $_GET["cls"] : "ages";
ceci est égal à:
if( isset($_GET["cls"]) )
  $cl=$_GET["cls"];
else
  $cl= "ages";
Il faut également teter l'existence de la variable GET, avec isset(), pour éviter des messages d'erreurs

Posté : 20 janv. 2006, 00:48
par zyclope
merci ... ;-)

Quel rapidité ...

Mais une question, je suis fatigué mais il me semble pas avoir vu comment faire pour que la page devine si c'est le premier clique ou le 2ème.

cette partie

Code : Tout sélectionner

$ordre = ($tri == "") ? "DESC" : "";
que ce passe-t-il si on arrive avec un trie de ASC
je refléchit mal se soir j'ai le buffer plein :D sorry

Et ca marche ... tu pourrais m'orienter ...


Edit : Voilà me suis consentré , enlever la musique et je crois avoir compris.
Par defaut il met le trie en ASC ?
Donc si c'est vide c'est que c'es ASC alors il met à DESC et si c'est DESC il met vide donc ASC

Posté : 20 janv. 2006, 01:00
par Truc
dans une requete le ASC est facultatif (tri par défaut) donc ici j'ai remplacé par "" (vide):
$ordre = ($tri == "") ? "DESC" : "";
donc si $tri (qui est égal au tri en cours) est égal à "" (ASC) $ordre passe à "DESC" et si le tri en cours est en "DESC" $ordre passe à "" (ASC)

Posté : 20 janv. 2006, 01:02
par zyclope
tu ma grillé....

regarde mon édite ... :oops:

Je suis désolé,
j'ai pourtant des bonne notions de pascal (vive les cours qui vous apprenne des languages inutiles)

Mais acctuellement je fait une certification Cisco à plein temps, ca me fait l'effet de buffer overflow dans mon cerveau...

je me sent presque honteux sur ce coup :D

encore merci

Edit: Il subsite un tous petit problème, qui en soit est pas trop génant.
J'ai ma colonne age classé en DESC, quand je vais cliquer sur la colonne x après il va la classer en ASC.
Mon tableau est un tableau de caractéristique pour des joueurs d'un jeux en ligne, l'utilisateur va cliquer de colonne en colonne pour mettre les meilleures caractéristique en haut du tableau.

Posté : 20 janv. 2006, 12:08
par Truc
Edit: Il subsite un tous petit problème, qui en soit est pas trop génant.
J'ai ma colonne age classé en DESC, quand je vais cliquer sur la colonne x après il va la classer en ASC.
Mon tableau est un tableau de caractéristique pour des joueurs d'un jeux en ligne, l'utilisateur va cliquer de colonne en colonne pour mettre les meilleures caractéristique en haut du tableau.
Il faut pour cela tester si le lien est différent du tri en cours (champ sur lequel le tri est fait):

Donc avant chaque lien:
$ordre = ($tri == "") ? "DESC" : "";

//Exemple avec Position
$ordre_url= ($cl != "position") ? "" : $ordre ;      
echo '<a href=?pid='.$pid.'&cls=position&tri='.$ordre_url.'>Position</a>';

//Exemple avec nom
$ordre_url = ($cl != "nom") ? "" : $ordre ;      
echo '<a href=?pid='.$pid.'&cls=nom&tri='.$ordre_url.'>Nom</a>';

Posté : 20 janv. 2006, 15:24
par zyclope
Merci...

voilà que je suis heureux ... :D