Trier colonnes d'un tableau PHP par titre

Fermé
NoobEnProg Messages postés 6 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 13 février 2013 - Modifié par NoobEnProg le 12/02/2013 à 14:08
NoobEnProg Messages postés 6 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 13 février 2013 - 13 févr. 2013 à 15:16
Bonjour,
Après avoir farfouiller un peu partout sur ce forum, je n'ai toujours pas trouvé de solution à mon problème donc je viens vous demander de l'aide.
Je viens de commencer un stage et je dois apporter des modifications à un programme existant.
Je voudrais pouvoir trier les colonnes d'un tableau lorsque je clique sur leur en-tête, pour cela j'ai trouvé un exemple très bien fait mais je n'arrive pas à l'appliquer car ce n'est pas codé de la même manière.

Voici l'exmple :

<?php
02
03
04 // Connexion à la base de donnée
05 mysql_connect('serveur','user','password');
06 mysql_select_db('dbname');
07
08
09 // Le nom de notre table
10 $tablename = 'test';
11
12
13 // Tri sur colonne
14 $tri_autorises = array('id','firstname','lastname','email','last_connection');
15 $order_by = in_array($_GET['order'],$tri_autorises) ? $_GET['order'] : 'id';
16
17
18 // Sens du tri
19 $order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC';
20
21
22 // Préparation de la requête
23 $sql = "
24 SELECT *
25 FROM {$tablename}
26 ORDER BY {$order_by} {$order_dir}
27 ";
28 $result = mysql_query($sql);
29
30
31 // Notre fonction qui affiche les liens
32 function sort_link($text, $order=false)
33 {
34 global $order_by, $order_dir;
35
36 if(!$order)
37 $order = $text;
38
39 $link = '<a href="?order=' . $order;
40 if($order_by==$order && $order_dir=='ASC')
41 $link .= '&inverse=true';
42 $link .= '"';
43 if($order_by==$order && $order_dir=='ASC')
44 $link .= ' class="order_asc"';
45 elseif($order_by==$order && $order_dir=='DESC')
46 $link .= ' class="order_desc"';
47 $link .= '>' . $text . '</a>';
48
49 return $link;
50 }
51
52
53 // Affichage
54 ?>
55 <style type="text/css">
56 a.order_asc,
57 a.order_desc:hover {
58 padding-right:15px;
59 background:transparent url(s_asc.png) right no-repeat;
60 }
61 a.order_desc,
62 a.order_asc:hover {
63 padding-right:15px;
64 background:transparent url(s_desc.png) right no-repeat;
65 }
66 </style>
67
68 <table>
69 <tr>
70 <th><?php echo sort_link('Id', 'id') ?></th>
71 <th><?php echo sort_link('Firstname', 'firstname') ?></th>
72 <th><?php echo sort_link('Lastname', 'lastname') ?></th>
73 <th><?php echo sort_link('Email', 'email') ?></th>
74 <th><?php echo sort_link('Last Connection', 'last_connection') ?></th>
75 </tr>
76 <?php while( $row=mysql_fetch_assoc($result) ) : ?>
77 <tr>
78 <td><?php echo $row['id'] ?></td>
79 <td><?php echo $row['firstname'] ?></td>
80 <td><?php echo $row['lastname'] ?></td>
81 <td><?php echo $row['email'] ?></td>
82 <td><?php echo $row['last_connection'] ?></td>
83 </tr>
84 <?php endwhile ?>
85 </table>

Et voici mon code :

<?php
function listerAffaire( $affaire ) {

echo '<table class="TableauListe" width="95%" border="0" align="center" cellpadding="0" cellspacing="1">';
echo ' <tr>';
echo ' <td width="3%" height="28" class="mep_enteteTableau">N°</td>';
echo ' <td width="7%" class="mep_enteteTableau">Ouvert le</td>';
echo ' <td width="5%" class="mep_enteteTableau">Etat</td>';
echo ' <td width="10%" class="mep_enteteTableau">Objet</td>';
echo ' <td width="5%" class="mep_enteteTableau">Ouvrir</td>';
echo ' <td width="7%" class="mep_enteteTableau">A finir avant le</td>';
echo ' <td width="4%" class="mep_enteteTableau">Type</td>';
echo ' <td width="8%" class="mep_enteteTableau">Lieu</td>';
echo ' <td width="13%" class="mep_enteteTableau">Service</td>';
echo ' </tr>';

$vide = true;
$i = true;
$style = "mep_tableauImpair";

while($affaire->suivant()){
if($affaire->estEnRetard()){
$style = "mep_tableauRetard";
} else {
if($affaire->estPresqueTerminee()){
$style = "mep_tableauAlerte";
} else {
$result = $affaire->dureeDerniereModif();
switch ($result){
case 0: break;
case 1: $style = "mep_tableauModif1"; break;
case 2: $style = "mep_tableauModif2"; break;
case 3: $style = "mep_tableauModif3"; break;
}

}
}
$vide = false;
echo ' <tr class="'. $style .'"> ';
echo ' <td><div align="center">' . html($affaire->idAffaire) . '</div></td>';
echo ' <td class="mep_cellClair"><div align="center">' . html(datetimeToFr($affaire->dateOuverture)) . '</div></td>';
echo ' <td class="mep_cellClair"><div align="center">' . html($affaire->etat) . '</div></td>';
echo ' <td>' . html($affaire->objet) . '</td>';
echo ' <td><div align="center"><a href="suiviAffaire.php?id='. $affaire->idAffaire .'"><img src="design/images/ouvrir.gif" alt="Ouvrir" title="Ouvrir" width="23" height="20" border="0" /></a></div></td>';
echo ' <td class="mep_cellClair"><div align="center">';
if( $affaire->dateFinPrevue){
if(!$affaire->estEnRetard()){
if(!$affaire->estPresqueTerminee()){
echo html(datetimeToFr($affaire->dateFinPrevue)) . '</div></td>';
} else {
echo '<span class="alerte">'.html(datetimeToFr($affaire->dateFinPrevue)) . '</span></div></td>';
}
} else {
echo '<span class="retard">'.html(datetimeToFr($affaire->dateFinPrevue)) . '</span></div></td>';
}
}
echo ' <td class="mep_cellClair"><div align="center"><b>' . html($affaire->typeCircuit) . '</b></div></td>';
$localisation = $affaire->localisation;
if(($localisation = $affaire->localisation) == ""){
$structure = new Structure();
$structure->get($affaire->idStructureLocalisation);
$localisation = $structure->nom;
}
echo ' <td class="mep_cellClair"><div align="center">' . html($localisation) . '</div></td>';
$service = new Service();
$service->get($affaire->idServiceConcerne);
echo ' <td class="mep_cellClair"><div align="center">' . html($service->nom) . '</div></td>';
echo ' </tr>';

$i = !$i;
if($i){
$style = "mep_tableauImpair";
} else {
$style = "mep_tableauPair";
}
}

if($vide){
echo ' <tr class="mep_tableauImpair"> ';
echo ' <td colspan="20"><div align="center">Aucune affaire</div></td>';
echo ' </tr>';
}
echo '</table>';


}
?>

Comme vous pouvez le voir, le tableau dans lequel je voudrais trier mes colonnes est créer lors de l'exécution d'une fonction contrairement au tableau de l'exemple qui lui, est en dur. C'est là que je coince, j'ai essayé tout un tas de possibilité mais rien n'y fait cela ne marche pas.

Quelqu'un aurait-il une idée svp ?

Cordialement.


A voir également:

1 réponse

NoobEnProg Messages postés 6 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 13 février 2013
13 févr. 2013 à 10:18
Personne ? :/
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
13 févr. 2013 à 11:01
personne parce que le post est assez gosto. just un conseil, plus le post est court, il donne envie de lire, le parcourir et aider. tu pourai pas reduire et présenter simplement ton problème. je n'ai pas le temps de lire tout ce post, voilà le problème pourquoi t'a personne
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
13 févr. 2013 à 11:05
tien, tu pourai simplement trier ton tableau de manière rapide en utilisant jquery.tableshorter.js
tu devra simplement passé l'identifiant de la table au tableshorter et il ya complètement une doc sur cela. c'est vraiment facile et je les testé
si t'a les problème à l'utiliser, tu peu les poser
0
NoobEnProg Messages postés 6 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 13 février 2013
13 févr. 2013 à 15:16
Très bien je vais refaire un sujet plus propre alors.
0