|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Je souhaite créer une fonction qui gère les clauses ORDER BY et LIMIT. J'ai donc fait ceci :
Code :
Merci d'avance pour votre aide. Meilleures salutations. |
||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Pour être plus simple, je souhaite une fonction qui me permette de régler sur mesure une requête SELECT, les clauses ORDER BY et LIMIT, et la fonction RAND() de MySQL.
Code :
|
||
|
|
00
|
|
|
#3 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
J'ai déjà fait ça dans Axiom; regarde cette classe, ça te donnera des idées: https://github.com/bdelespierre/php-...ject.class.php
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
C'est pas beaucoup plus compliqué en procédural:
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#6 | |||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Citation:
Merci d'avance... |
|||
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
J'ai repris ton code et on devrait arriver au même résultat à ceci près c'est que tu devrais le sécuriser un peu et surtout ne pas présumer que ta requête se déroulera sans aucun problème. Vu que tu utilise une ressource (PDO), rien ne te garantit qu'elle est diponible ou que ta requête est montée sans erreur d'où l'exécution dans un try-catch{} Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Merci.
J'ai essayé d’alléger le code : Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() ![]() |
Avec ton code c'est tout à fait normal : problème de précédence des opérateurs ici :
Code :
if ($rang) $orderBy[] = 'monchamp'. ($sort) ? '' : ' DESC'; La concaténation est prioritaire sur l'opérateur ternaire. Ton code revient à faire ceci : Code :
if ($rang) $orderBy[] = ('monchamp' . ($sort)) ? '' : ' DESC'; Dès que tu as un doute, mets des parenthèses. Code corrigé : Code :
if ($rang) $orderBy[] = 'monchamp' . (($sort) ? '' : ' DESC'); Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Code :
Merci d'avance... |
||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() ![]() |
Ah bon, chez moi quand je fais :
Code :
Code :
SELECT * FROM matable ORDER BY monchamp ASC LIMIT 12
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Si je comprends bien, à chaque appel de la fonction, il faut renseigner obligatoirement tous ses paramètres.
Merci d'avance... |
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé
![]() ![]() |
Citation:
Un paramètre sans valeur par défaut est obligatoire et un avec est optionnel. On place généralement les paramètres obligatoires ou changeant souvent au début de déclaration et on termine par les paramètres optionnels. Si ta déclaration avait été : Code :
function mafonction($limit = false, $rang = true, $sort = false, $rand = false) Maintenant si tu dois modifier la valeur d'un paramètre en fin de déclaration, tu n'as pas d'autre choix que de renseigner tous les paramètres (même optionnels) le précédant. Une dernière chose, les paramètres nommés ne sont pas pris en charge par PHP. Avec cette déclaration : Code :
function mafonction($rang = true, $sort = false, $rand = false, $limit = false) Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|||
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Merci à vous tous.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com