Order by php et mysql
Fermé
Rom190686
Messages postés
436
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
20 novembre 2015
-
16 déc. 2009 à 14:37
Rom190686 Messages postés 436 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 - 16 déc. 2009 à 21:13
Rom190686 Messages postés 436 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 - 16 déc. 2009 à 21:13
A voir également:
- Order by php et mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Home by me - Télécharger - 3D
- To be filled by o.e.m - Forum Windows
- Problème "To Be Filled By O.E.M" - Forum Logiciels
8 réponses
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
16 déc. 2009 à 14:56
16 déc. 2009 à 14:56
Bonjour,
Il y a 3 manières de faire cela :
1/ Dans la requête SQL : ajotuer une clause ORDER BY
Doc officielle pour MySQL : http://dev.mysql.com/doc/refman/5.0/fr/select.html
Les + :
- permet de trier l'ensemble des résultats, indépendamment de la "page" (généralement obtenue par une clause LIMIT) courante
Les - :
- la requête SQL devient variable en fonction du champ de tri, il y a donc du code un (tout petit peu) "compliqué" à rajouter : form HTML ou paramètres GET, ...
- Le tri est limité aux champs de la requête
- les performances peuvent chuter sur un grand nombre de lignes et/ou une requête complexe (sous-requêtes, jointures, ...)
2/ Dans le code PHP : voir les fonctions array_sort, ...
Les + :
- performant sur un petit (<1000) nombre de lignes,
- Le tri peut être très complexe (expressions mathématiques, voire données externes, ...)
Les - :
- Idem 1/
- ne permet généralement de trier QUE les résultats de la page courante
3/ En Javascript (donc côté client) : de nombreuses librairies permettent cela nativement, voir par exemple https://kryogenix.org/code/browser/sorttable/
Les + :
- TRES simple à implémenter, généralement une ligne de JS dans le code suffit
- le tri est fait par le navigeur du client, donc pas d'impact de performances côté serveur (charge, ...)
- très convivial car la page se trie "instantanément", sans devoir la recharger
Les - :
- Sauf à utiliser un framework incluant des "datasources" (jquery, YUI, ...), ne trie toujours QUE les résultats affichés
Donc la bonne solution dépend de tes besoins (notion de pages ? tris complexes ?, ... ) ,et parfois, une combinaison de 2 des 3 "techniques" peut être utile !
(par exemple, tri serveur en SQL ET local en JS pour les utilisateurs avancés qui désirent pouvoir retrier les choses à leur gré)
Bon courage
Il y a 3 manières de faire cela :
1/ Dans la requête SQL : ajotuer une clause ORDER BY
Doc officielle pour MySQL : http://dev.mysql.com/doc/refman/5.0/fr/select.html
Les + :
- permet de trier l'ensemble des résultats, indépendamment de la "page" (généralement obtenue par une clause LIMIT) courante
Les - :
- la requête SQL devient variable en fonction du champ de tri, il y a donc du code un (tout petit peu) "compliqué" à rajouter : form HTML ou paramètres GET, ...
- Le tri est limité aux champs de la requête
- les performances peuvent chuter sur un grand nombre de lignes et/ou une requête complexe (sous-requêtes, jointures, ...)
2/ Dans le code PHP : voir les fonctions array_sort, ...
Les + :
- performant sur un petit (<1000) nombre de lignes,
- Le tri peut être très complexe (expressions mathématiques, voire données externes, ...)
Les - :
- Idem 1/
- ne permet généralement de trier QUE les résultats de la page courante
3/ En Javascript (donc côté client) : de nombreuses librairies permettent cela nativement, voir par exemple https://kryogenix.org/code/browser/sorttable/
Les + :
- TRES simple à implémenter, généralement une ligne de JS dans le code suffit
- le tri est fait par le navigeur du client, donc pas d'impact de performances côté serveur (charge, ...)
- très convivial car la page se trie "instantanément", sans devoir la recharger
Les - :
- Sauf à utiliser un framework incluant des "datasources" (jquery, YUI, ...), ne trie toujours QUE les résultats affichés
Donc la bonne solution dépend de tes besoins (notion de pages ? tris complexes ?, ... ) ,et parfois, une combinaison de 2 des 3 "techniques" peut être utile !
(par exemple, tri serveur en SQL ET local en JS pour les utilisateurs avancés qui désirent pouvoir retrier les choses à leur gré)
Bon courage
Bonjour
Une fois le contenu de la page affichée, je voudrais que le visiteur puisse classer les données par date ou bien par lieu.
En fait, ce qui va se passer, c'est que la page sera ré-affichée chaque fois que le visiteur voudra un nouveau critère de tri. On ne peut pas vraiment dire "une fois la page affichée".
Pas de problème pour faire ça en PHP ; à chaque nouvelle demande avec son propre critère, à toi d'interroger ta base avec le 'ORDER BY' adapté. C'est plus efficace (et moins fatiguant!) que de le faire le tri a posteriori en php.
Une fois le contenu de la page affichée, je voudrais que le visiteur puisse classer les données par date ou bien par lieu.
En fait, ce qui va se passer, c'est que la page sera ré-affichée chaque fois que le visiteur voudra un nouveau critère de tri. On ne peut pas vraiment dire "une fois la page affichée".
Pas de problème pour faire ça en PHP ; à chaque nouvelle demande avec son propre critère, à toi d'interroger ta base avec le 'ORDER BY' adapté. C'est plus efficace (et moins fatiguant!) que de le faire le tri a posteriori en php.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 504
16 déc. 2009 à 15:34
16 déc. 2009 à 15:34
Fait simplement un lien avec "?order=id" (ou autre chose que "id") puis dans ta requête, il suffit d'ajouter "ORDER BY $_GET['id']".
Par contre, il ne faut jamais faire confiance aux entrées de l'utilisateur (GET, POST et les coockies) donc penses à sécuriser ton code. Et comme la variable ne sera pas forcément définie, il faut penser à lui mettre une valeur au cas où ...
Par contre, il ne faut jamais faire confiance aux entrées de l'utilisateur (GET, POST et les coockies) donc penses à sécuriser ton code. Et comme la variable ne sera pas forcément définie, il faut penser à lui mettre une valeur au cas où ...
Rom190686
Messages postés
436
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
20 novembre 2015
35
16 déc. 2009 à 15:34
16 déc. 2009 à 15:34
Merci pour vos explications.
Je pense que je n'ai pas été assez précis.
En fait, au chargement de la page, le contenu de la table s'affiche.
Ensuite, via une liste déroulante (si possible) je veux donner au visiteur la possibilité de choisir :
- une ville.
Cette action listera alors tous les événements existant dans cette ville.
- Une date.
Cette action va alors afficher tous les événements existants à cette date.
Les villes et dates présentes dans les listes déroulantes seront récupérées dans la table sql.
Voila ca que je veux faire. Maintenant, je vous demande comment le faire :))
Merci d'avance
Je pense que je n'ai pas été assez précis.
En fait, au chargement de la page, le contenu de la table s'affiche.
Ensuite, via une liste déroulante (si possible) je veux donner au visiteur la possibilité de choisir :
- une ville.
Cette action listera alors tous les événements existant dans cette ville.
- Une date.
Cette action va alors afficher tous les événements existants à cette date.
Les villes et dates présentes dans les listes déroulantes seront récupérées dans la table sql.
Voila ca que je veux faire. Maintenant, je vous demande comment le faire :))
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Rom190686
Messages postés
436
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
20 novembre 2015
35
16 déc. 2009 à 15:47
16 déc. 2009 à 15:47
On ne peut pas le faire en php?
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
16 déc. 2009 à 15:56
16 déc. 2009 à 15:56
Si tu peux le faire.
Quelques chose comme ça:
Quelques chose comme ça:
if(isset($_GET['ordre']) && $_GET['ordre']=='ville') { $sql='SELECT * FROM table ORDER BY ville ASC'; } elseif(isset($_GET['ordre']) && $_GET['ordre']=='date') { $sql='SELECT * FROM table ORDER BY date ASC'; } else{$sql='SELECT * FROM table ORDER BY date ASC';} echo'<table> <tr><th>Champ</th><th><a href="index.php?page=liste&ordre=date">Date</a></th><th><a href="index.php?page=liste&ordre=ville">Ville</a></th></tr>'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while($data = mysql_fetch_array($req)) { echo'<tr><td></td><td>'.$data['date'].'</td><td>'.$data['ville'].'</td></tr>'; } echo'</table>';
Rom190686
Messages postés
436
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
20 novembre 2015
35
16 déc. 2009 à 21:13
16 déc. 2009 à 21:13
Merci, ce code fonctionne mais ce n'est pas vraiment ce que je cherche.
J'affiche d'autre informations en plus de la date et du lieu.
Toutes ces informations sont déjà mise en page dans un tableau via une requête sql fetch_array suivi de while.
Ce qui m'affiche l'intégralité de ma table.
Une fois celle ci affichée, je voudrais pourvoir via une liste déroulante sélectionner une ville ou une date pour ensuite n'afficher que les évènement se trouvant dans la ville choisit ou uniquement les évènements se passant à la date choisit.
J'affiche d'autre informations en plus de la date et du lieu.
Toutes ces informations sont déjà mise en page dans un tableau via une requête sql fetch_array suivi de while.
Ce qui m'affiche l'intégralité de ma table.
Une fois celle ci affichée, je voudrais pourvoir via une liste déroulante sélectionner une ville ou une date pour ensuite n'afficher que les évènement se trouvant dans la ville choisit ou uniquement les évènements se passant à la date choisit.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 504
16 déc. 2009 à 15:35
16 déc. 2009 à 15:35
AJAX ...