Ordre inverse en php

Fermé
Janette - 3 août 2010 à 14:09
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 - 5 août 2010 à 12:06
Bonjour,
j'aimerais lorsque j'affiche un tableau, pouvoir classer dans l'ordre alphabétique à la fois croissant et décroissant. Seulement, avec mon code, seul l'ordre croissant fonctionne. Je pense qu'il s'agit d'un petit paramètre a régler, mais je ne trouve pas.
Merci à quiconque qui pourrait m'aider.

Mon code :
<?php
$table_name = 'eds_actif_entier';

//Tri sur colonnes
$tri_autorises = array ( 'id', 'numTicket', 'prioriteTraitement', 'idUn', 'refClient', 'nature', 'actionEnCours', 'dateDebut', 'engagements', ' dateEchGtr', 'etat', 'idDeux', 'edsActif', 'edsPilote', 'idTrois', 'TechRespEdsPilote');
$order_by = in_array ($_GET['order'], $tri_autorises) ? $_GET['order'] : 'id';

//Sens du tri
$order_dir = isset ($_GET['inverse']) ? 'DESC' : 'ASC' ;

//Préparation de la requête
$req=mysql_query("SELECT * FROM {$table_name} ORDER BY {$order_by} {$order_dir}") or die("impossible d'executer la requête");

//Notre fonction qui affiche les liens
function sort_link($text, $order=false)
{
global $order_by, $order_dir;
if(!$order)
$order = $text;
$link = '<a href="?order='.$order. '&traitement=consult';

if ($order_by == $order && $order_dir=='ASC')
$link= '&inverse=TRUE';
$link.='"';

if ($order_by == $order && $order_dir=='ASC')
$link.= 'class="order_asc"';

elseif ($order_by == $order && $order_dir=='DESC')
$link = 'class="order_desc"';
$link.='>'.$text.'</a>';

return $link;
}

//Affichage
?>
<style type="text/css">
a.order_asc,
a.order_desc:hover {
padding-right:15px;
backgroung:transparent url(s_asc.png) right no repeat;
}
a.order_desc,
a.order_asc:hover {
padding-right:15px;
background:transparent url(s_desc.png) right no-repeat;
}
</style>



<?php
//Nom des colonnes du tableau + lien qui servira à trier par ordre alphabétique?>
<table width="100%" align="center">
<tr>
<th align='center' class='entete'> <?php echo sort_link ('Id', 'id')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Numéro ticket', 'numTicket')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Priorité de traitement', 'prioriteTraitement')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Identifiant n°1', 'idUn')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Référence client', 'refClient')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Nature', 'nature')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Action en cours', 'actionEnCours')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Date début', 'dateDebut')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Engagements', 'engagements')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Date éch GTR', 'dateEchGtr')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Etat', 'etat')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Identifiant n°2', 'idDeux')?></th>
<th align='center' class='entete'> <?php echo sort_link ('EDS actif', 'edsActif')?></th>
<th align='center' class='entete'> <?php echo sort_link ('EDS pilote', 'edsPilote')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Identifiant n°3', 'idTrois')?></th>
<th align='center' class='entete'> <?php echo sort_link ('Technicien Resp. EDS Pilote', 'TechRespEdsPilote')?></th>
</tr>
<?php
// Boucle affichage tableau
while($row = mysql_fetch_assoc($req)) :
?>
<tr class="<?php if(($i%2) == 0) {echo "ma_couleur1";} else{ echo "ma_couleur2";}?>">
<td class="centrer"><? echo $row['id']; ?> <BR></td>
<td class="centrer"><? echo $row['numTicket']; ?> <BR></td>
<td class="centrer"><? echo $row['prioriteTraitement']; ?> <BR></td>
<td class="centrer"><? echo $row['idUn']; ?></td>
<td class="centrer"><? echo $row['refClient']; ?></td>
<td class="centrer"><? echo $row['nature']; ?></td>
<td class="centrer"><? echo $row['actionEnCours']; ?></td>
<td class="centrer"><? echo $row['dateDebut']; ?></td>
<td class="centrer"><? echo $row['engagements']; ?></td>
<td class="centrer"><? echo $row['dateEchGtr']; ?></td>
<td class="centrer"><? echo $row['etat']; ?></td>
<td class="centrer"><? echo $row['idDeux']; ?></td>
<td class="centrer"><? echo $row['edsActif']; ?></td>
<td class="centrer"><? echo $row['edsPilote']; ?></td>
<td class="centrer"><? echo $row['idTrois']; ?></td>
<td class="centrer"><? echo $row['techRespEdsPilote']; ?></td>
</tr>

<?php endwhile?>



4 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
3 août 2010 à 16:32
Tu peux afficher ta requête ? (avec echo "$req" dans affichage.php)
0
Je ne comprend pas bien la question.

Mon code me permet d'afficher la requête :
<code>
$req=mysql_query("SELECT * FROM {$table_name} ORDER BY {$order_by} {$order_dir}") or die("impossible d'executer la requête");
</code
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
4 août 2010 à 12:20
Je voulais juste juste savoir à quoi ressemble ta requête avant que tu l'exécute sans les tablename et autre order by et order dir, la vrai réquete.Oui, j'ai regardé ça un peu vite ^^ c'est plutot echo "SELECT * FROM $table_name ORDER BY $order_by $order_dir" que je voulais dire, afin de voir quelles sont les valeurs de order by et orderdir quand tu exécute ta requête.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 août 2010 à 14:57
et comme ça:

/Préparation de la requête
$req=mysql_query("SELECT * FROM ".$table_name." ORDER BY ".$order_by." ". $order_dir." ") or die("impossible d'executer la requête: ".$req."<br />".mysql_error()); 
0
@ Leviathan59 : la vrai requête est "SELECT * FROM eds_actif_entier" tout simplement

et si je fais un "echo" cela entrîne une erreur.

@Alain_42 : j'ai essayé ta proposition, ca ne fonctionne pas =/
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 5/08/2010 à 09:16
Ca n'a peut-être rien à voir mais...
if ($order_by == $order && $order_dir=='ASC')  
$link .= '&inverse=TRUE';  
$link.='"';  

if ($order_by == $order && $order_dir=='ASC')  
$link.= 'class="order_asc"';  

elseif ($order_by == $order && $order_dir=='DESC')  
$link .= 'class="order_desc"';  
$link.='>'.$text.'</a>'; 
Il ne manquerait pas des points devant les = des lignes en gras ?
0
J'ai ajouté les deux points manquants mais le deuxième (celui de $link .= 'class="order_desc"'; ) ne passe pas. Cela affiche une erreur je ne comprend pas pourquoi =/
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
5 août 2010 à 12:06
Tu peux nous mettre quelle erreur ?
0