Trier colonnes d'un tableau PHP par titre
Fermé
                    
        
     
             
                    NoobEnProg
    
        
    
                    Messages postés
            
                
     
             
            7
        
            
                                    Statut
            Membre
                    
                -
                                     
NoobEnProg Messages postés 7 Statut Membre -
        NoobEnProg Messages postés 7 Statut Membre -
        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.
            
            
                
            
                
    
    
    
        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:         
- Trier colonnes d'un tableau PHP par titre
- Trier un tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
 
    
    
    
    
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