Se connecter avec
S'enregistrer | Connectez-vous

Trier un tableau en php

Dernière réponse : dans Programmation

Bonjour,
J'ai un tableau qui affiche des données de la base de données
Je voulais que lorsque j'appuie sur la première ligne de chaque colonne du
tableau, il sera trié selon la colonne choisie.
voici l'essentiel du code de mon tableau:
  1. <table class="tableau" width= "700">
  2. <tr>
  3. <th>Nom</th>
  4. <th>Prénom</th>
  5. <th>Tel</th>
  6. </tr>
  7. <?php
  8. $retour = mysql_query('SELECT * FROM client');
  9. while ($donnees = mysql_fetch_array($retour)or die(mysql_error()))
  10. { ?>
  11. <tr>
  12. <td> <?php echo $donnees['C_Nom']; ?> </td>
  13. <td> <?php echo $donnees['C_Prenom']; ?> </td>
  14. <td> <?php echo $donnees['C_Telephone']; ?> </td>
  15. </tr>
  16. <?php } ?>
  17. </table>

Autres pages sur : trier tableau php

Lassé par la pub ? Créez un compte
Expert Programmation

Boujour,

  1. <th><a href="?tri=C_Nom">Nom</a></th>
  2. <th><a href="?tri=C_Prenom">Prénom</a></th>
  3. <th><a href="?tri=C_Telephone">Tel</a></th>
  4.  
  5. $tri = mysql_real_escape_string(htmlspecialchars($_GET['tri']));
  6. $retour = mysql_query ("SELECT * FROM client ORDER BY $tri");
  7. ...

voici le code:
  1. <table class="tableau" width= "700">
  2. <tr>
  3. <th><a href="?tri=C_Nom">Nom</a></th>
  4. <th><a href="?tri=C_Prenom">Prénom</a></th>
  5. <th><a href="?tri=C_Telephone">Tel</a></th>
  6. </tr>
  7. <?php
  8. $cnx=mysql_connect("localhost","admin","admin")or die('Impossible de connecter');
  9. mysql_select_db("FAX",$cnx) or die('Impossible de slectioner la bdd');
  10. if (!isset($tri)) {
  11. $tri = "C_Nom";
  12. }
  13. $tri = mysql_real_escape_string(htmlspecialchars($_GET['tri']));
  14. $retour = mysql_query ("SELECT * FROM client ORDER BY '$tri' " );
  15. while ($donnees = mysql_fetch_array($retour)or die(mysql_error()))
  16. { ?>
  17. <tr>
  18. <td> <?php echo $donnees['C_Nom']; ?> </td>
  19. <td> <?php echo $donnees['C_Prenom']; ?> </td>
  20. <td> <?php echo $donnees['C_Telephone']; ?> </td>
  21. </tr>
  22. <?php } ?>
  23. </table>
Expert Programmation

Remplace les lignes 10 à 13 par :
  1. if (!isset(($_GET['tri'])) {
  2. $tri = "C_Nom";
  3. } else {
  4. $tri = mysql_real_escape_string(htmlspecialchars($_GET['tri']));
  5. }



Edit: et tu peux aussi vérifier que $tri soit bien une des colonnes existantes.
Expert Programmation

Je parlais de la requête SQL, pas du résultat de mysql_query.
Remplace:
  1. $retour = mysql_query ("SELECT * FROM client ORDER BY $tri " );

Par
  1. echo "SELECT * FROM client ORDER BY $tri ";
  2. $retour = mysql_query ("SELECT * FROM client ORDER BY $tri " );


Et dis nous ce qu'il affiche

c bon le problème est résolu mais juste une autre question
je voulais afficher une image d'un petit flèche pour indiquer pour quelle colonne le tri est effectué comme par exemple dans Mysql
j'ai mis ça mais ça pas marché:
  1. <th>
  2. <a href="?tri=C_Nom">Nom<?php if ($tri == "C_Nom") {?><img src="images/sortdown.gif"> <?php }?>
  3. </a>
  4. </th>
Lassé par la pub ? Créez un compte
Tom's guide dans le monde