Organiser les infos d'un tableau / liens entêtes

Petit nouveau ! | 2 Messages

24 févr. 2008, 13:12

Bonjour a tous,

après plusieurs heures de recherches, je me décide à poster sur le forum pour vous demander de l'aide. Je souhaiterai trier les informations d'un tableau en cliquant sur le titre de la colonne.

Dans mon cas, il y a 4 colonnes : Année, auteur, type et intitulé.

J'aimerai que quand on clique une première fois sur le mot Année par exemple, cela trie les infos par ordre croissant et quand on clique une deuxième fois, que ça trie par ordre décroissant, bref ce qu'on voit assez souvent sur le web.

J'ai essayé plusieurs méthodes trouvées au cours de mes recherches mais ça n'a pas marché. Ca vient en partie du fait que c'est un projet que j'ai récupéré et je dois le terminer. Le truc c'est que je ne sais pas trop comment le code de base a été pensé et la logique de celui qui s'en est occupé avant moi, et en plus, je ne suis pas super doué en PHP.

Y'a t-il quelqu'un pour m'aider svp ?

Merci beaucoup ;)

NioX

Voici le code de la page gestion_realisation.php:

Code : Tout sélectionner

<?php session_start(); include "config.inc.php"; include "fonctionssup.inc.php"; $mb=new bd(logu,pass,base,serveur); $mb->connexion(); $mb->requete("select * from realisation_galerie order by annee DESC"); $color[0]="#CCCCCC"; $color[1]="#EEEEEE"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>gestion des réalisations</title> <script type="text/javascript"> function confirmation(valid) { if(confirm('Si vous voulez supprimer, cliquez sur OK sinon cliquez sur Annuler')) location.href = valid; } </script> <link href="style.css" rel="stylesheet" type="text/css"> <link href="style_info.css" rel="stylesheet" type="text/css"> </head> <body> <div id="page"> <div id="header">&nbsp;</div> <div id="menu"> <a href="form_galerie.php?commande=ajout">Ajouter une r&eacute;alisation</a><br /> <a href="../realisation.html" target="_blank">visu de html</a><br /> <a href="index.php">retour &agrave; l'index</a> <hr /> <a href="gestion_admin.php">Gestion administrateurs</a><br /> <a href="gestion_calendrier.php">Gestion du calendrier</a><br /> <a href="gestion_contact.php">Gestion des contacts</a><br /> <a href="gestion_debouche.php">Gestion des d&eacute;bouch&eacute;s</a><br /> <a href="gestion_formation.php">Gestion de la formation</a><br /> <a href="gestion_intervenant.php">Gestion des intervenants</a><br /> <a href="gestion_lien.php">Gestion des liens</a><br /> <a href="gestion_meta.php">Gestion des meta</a><br /> <a href="gestion_partenaire.php">Gestion des partenaires</a><br /> <a href="gestion_realisation.php">Gestion des r&eacute;alisations</a><br /> <a href="gestion_stage.php">Gestion des stages</a><br /> <a href="gestion_txtsite.php">Gestion des textes du site</a><br /> <a href="gestion_txtgalerie.php">Gestion des textes de la galerie</a><br /> </div> <div id="corps"> <!-- Début --> <h1>Gestion des r&eacute;alisations</h1> <table border="0" cellspacing="2" cellpadding="0"> <tr> <td>Annee</td> <td>Auteur</td> <td>Intitul&eacute;</td> <td>type</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <?php $i=0; while($data=$mb->suivant()){ ?> <tr bgcolor="<?php echo $color[($i++)%2] ?>"> <td><?php echo $data->annee;?></td> <td><?php echo $data->auteur;?></td> <td><?php echo $data->intitule;?></td> <td><?php echo $data->type;?></td> <td><a href="#" class="info"><img src="../images/loupe.png" width="15" height="15" /><?php echo affichePopUp('realisation',$data->id_realisation); ?></a></td> <td><a href="form_galerie.php?commande=modif&id=<?php echo $data->id_realisation;?>"><img src="../images/is_modif.gif" width="16" height="18" alt="modifier" /></a></td> <td><a href="#" onclick="confirmation('valid.php?commande=realisation3&id=<?php echo $data->id_realisation ?>')"><img src="../images/is_sup.gif" width="18" height="17" alt="supprimer" /></a></td> </tr> <?php } ?> </table> <!-- --> </div> <div id='footer'><p class="gauche"><a href="index.php">Accueil</a>>Gestion des r&eacute;alisations</p> <?php if(isset($_SESSION['perso'])){ ?><p class="droite">Connect&eacute; : <?php echo $_SESSION['perso']['nom']?> <a href="valid.php?commande=logout">D&eacute;connexion</a></p> <?php } ?></div> </div> </body> </html>

ViPHP
AB
ViPHP | 5818 Messages

24 févr. 2008, 13:29

La requête qui trie suivant les années par ordre décroissant est ici
$mb->requete("select * from realisation_galerie order by annee DESC");
Quand tu appuies sur ton bouton pour trier par ordre croissant il faut obtenir une seconde requête
$mb->requete("select * from realisation_galerie order by annee ASC");

Petit nouveau ! | 2 Messages

24 févr. 2008, 18:17

Hello et merci pour ta réponse ;)

J'ai mis ça :

Code : Tout sélectionner

<a href="#" onclick="<?php $mb->requete("select * from realisation_galerie_creanum order by annee ASC"); ?>">Année</a>
Mais ça n'a pas l'air de marcher.

Est ce que c'est comme ça qu'il faut faire ?

Merci

ViPHP
AB
ViPHP | 5818 Messages

24 févr. 2008, 22:00

Ah bah non ça va pas le faire.

Si tu dois reprendre tout le site je te conseille d'aller faire un tour sur phpdebutant.org ou sur le siteduzero y'a un minimum de bases qui te serviront par la suite.

La solution à ton problème :

Pour la partie php
<?php
session_start();
include "config.inc.php";
include "fonctionssup.inc.php";
$mb=new bd(logu,pass,base,serveur);
$mb->connexion();

//au sens large le contraire de false est égal à 1
$order = (isset($_GET['order']) && $_GET['order'] == 1)? $_GET['order'] : false;

$req_dynamique = "SELECT * FROM realisation_galerie ORDER BY annee" . ($order ? 'ASC' : 'DESC');

$mb->requete("$req_dynamique");

$color[0]="#CCCCCC";
$color[1]="#EEEEEE";

?> 
partie HTML lien pour inverser le tri

Code : Tout sélectionner

<a href="<?php echo $_SERVER['PHP_SELF'].'?order='.!$order;?>">Inverser l'ordre du tri</a>
EDIT : Plus d'info sur cette syntaxe http://www.phpfrance.com/forums/voir_re ... php#229446
ne t'encombres pas des liens javascript pour l'instant