recuperation du sens de tri d'une colonne

Petit nouveau ! | 7 Messages

14 avr. 2007, 15:24

Bonjour,
j'arrive a trier un tableau sur le titre des colonne mais toujours avec asc
or quand l'on clique deux fois sur le meme titre j'aimerais que le tri s'effectue dans l'autre sens
j'espere que quelqu'un pourra m'aider

voici mon code

Code : Tout sélectionner

<div id="table_liste"> <table summary="Liste des tôles INOX en stock à la CDE"> <?php $date= date("j/m/Y"); $tri= "$order"; if (isset($_GET["order"])){ $order = $_GET[order]; if ($order ==$tri){ $sens = "desc"; }else{ $sens = "asc"; } }else{ $order= " NUM_TOLE asc"; } ?> <caption>Stock des tôles INOX au <?php print "$date"; ?></caption> <tr> <th><a href="index.php?op=liste_tole_in&order=NUM_TOLE">numéro</a></th> <th><a href="index.php?op=liste_tole_in&order=MAT_TOLE">matière</a></th> <th>N° coulée</th> <th>Largeur</th> <th>Longueur</th> <th><a href="index.php?op=liste_tole_in&order=EPAIS_TOLE">Epaisseur</a></th> <th><a href="index.php?op=liste_tole_in&order=EMPL_TOLE">Emplacement</a></th> <th>Affectation</th> <th>Observations</th> </tr> <?php $query_liste_tole_inox = "SELECT ID_TOLE, NUM_TOLE, MAT_TOLE, COUL_TOLE, LARG_TOLE, LONG_TOLE, EPAIS_TOLE, AFFEC_TOLE, N_AFF_TOLE, EMPL_TOLE, OBSER_TOLE FROM tole_cde order by '$order' '$sens '"; $result_liste_tole_inox = mysql_query($query_liste_tole_inox) or die("Erreur dans la requête query_liste_tole_inox"); while ($row_liste_tole_inox = mysql_fetch_array($result_liste_tole_inox, MYSQL_NUM)) { $id__tole_inox=$row_liste_tole_inox[0]; print "<input type=\"hidden\" name=\"id\" size=40 maxlength=40 value=\"$id_arti\">"; $num_tole_inox=$row_liste_tole_inox[1]; $mat_tole_inox=$row_liste_tole_inox[2]; $coul_tole_inox=$row_liste_tole_inox[3]; $larg_tole_inox=$row_liste_tole_inox[4]; $long_tole_inox=$row_liste_tole_inox[5]; $epais_tole_inox=$row_liste_tole_inox[6]; $affec_tole_inox=$row_liste_tole_inox[7]; $naff_tole_inox=$row_liste_tole_inox[8]; $empla_tole_inox=$row_liste_tole_inox[9]; $obser_tole_inox=$row_liste_tole_inox[10]; ?> <tr> <td width="11%" ><?php print"$num_tole_inox"; ?></td> <td width="11%"><?php print "$mat_tole_inox"; ?></td> <td width="11%"><?php print "$coul_tole_inox"; ?></td> <td width="11%"><?php print "$larg_tole_inox"; ?></td> <td width="11%"><?php print "$long_tole_inox"; ?></td> <td width="11%"><?php print "$epais_tole_inox"; ?></td> <td width="11%"><?php print "$empla_tole_inox"; ?></td> <?php if($affec_tole_inox==1){ ?> <td width="11%"><?php print "stock"; ?></td> <?php }else{ ?> <td width="11%"><?php print "affaire<br>$naff_tole_inox"; ?></td> <?php } ?> <td width="11%"><?php print "$obser_tole_inox"; ?></td> <?php } ?> </tr> </tr> </table> </div>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 avr. 2007, 12:14

En fait, il te faut passer deux valeur dans ton lien : "order" indiquant la colonne de tri, et "sens" pour donner le sens. Il te suffit ensuite juste de d'inverser la valeur de $tri à chaque affichage pour la passer dans ton lien :)
<?php

$sens = (isSet($_GET["sens"]) ? $_GET["sens"] : 'asc'; // récupère la valeur passée en paramètre ou utilise ascendant par défaut
$order = (isset($_GET["order"])) ?  $_GET["order"] : "NUM_TOLE"; 

if($sens == 'desc') // si le sens n'est pas défini ou descendant
  $prochainSens = 'asc'; // on le rend ascendant
else // sinon 
  $prochainSens = 'desc'; // on le rend descendant
?>

<a href="index.php?op=liste_tole_in&order=NUM_TOLE&sens=<?php echo $prochainSens;?>">numéro</a>

A virer également dans ta requête les apostrophes inutiles autour des infos de tri :

Code : Tout sélectionner

by '$order' '$sens '";
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 avr. 2007, 12:30

Modération :
modeste, le multipostage est interdit sur le forum.
(1er sujet)

Merci de prendre le temps de lire les règlements.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

15 avr. 2007, 12:47

Merci Ryle pour ton explication qui fonctionne à merveille

Problème résolu


Concernant le doublon de mon sujet
j'ai posté le sujet une prémière fois en tant qu'invité et ne le trouvant nul part après mon inscription je l'ai remis en tant que membre, mais sinon j'ai bien lu le mode de fonctionnement de ce forum

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 avr. 2007, 13:10

Concernant le doublon de mon sujet
j'ai posté le sujet une prémière fois en tant qu'invité et ne le trouvant nul part après mon inscription je l'ai remis en tant que membre, mais sinon j'ai bien lu le mode de fonctionnement de ce forum
ça marche :wink:
Toujours s'inscrire avant de poster :P
(ou au moins relever l'url :wink: )

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute