Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

demande de conseil avec $_GET et dispatching

7 views
Skip to first unread message

Une Bévue

unread,
Nov 13, 2012, 2:14:40 AM11/13/12
to
j'ai un prog disons index.php, qui peut ne pas avoir du tout de $_GET
car je souhaite pouvoir accéder aux fonctionnalités toujours avec cette
même page.

Aussi je fais des tas de tests du genre :
if(!isset($_GET['link']))
...
else if(isset($_GET['bookmarks']) && $_GET['bookmarks']==='true')

y a t'il une solution plus élégante, je pense que oui, pour décrire
l'état de la machine ?

je peux avoir comme "adresse" :

- 'index.php' (ie pas de $_GET)
-> initialisation ;
- 'index.php?category=la-categorie'
-> afficher la catégorie ;
- 'index.php?category=la-categorie&link=le-lien.html'
-> afficher le lien ;
- 'index.php?category=la-categorie&link=le-lien.html&add_bookmark=true'
-> afficher le lien & ajouter le lien aux signets ;
- 'index.php?category=la-categorie&link=le-lien.html&add_notes=true'
-> afficher le lien & ajouter des notes à cette page ;
- 'index.php?bookmarks=true'
-> afficher les URLs des pages bookmarkées ;
- 'index.php?notes=true'
-> afficher les URLs des pages annotées ;
- 'index.php?search=true&<les conditions sur la recherche>'
-> afficher les URLs des pages correspondant à la recherche.

donc, la question, y a t'il plus mieux que des tests sur isset ?

Fred

unread,
Nov 13, 2012, 3:25:55 AM11/13/12
to
Le 13/11/2012 08:14, Une B�vue a �crit :
> j'ai un prog disons index.php, qui peut ne pas avoir du tout de $_GET
> car je souhaite pouvoir acc�der aux fonctionnalit�s toujours avec cette
> m�me page.
>
> Aussi je fais des tas de tests du genre :
> if(!isset($_GET['link']))
> ...
> else if(isset($_GET['bookmarks']) && $_GET['bookmarks']==='true')
>
> y a t'il une solution plus �l�gante, je pense que oui, pour d�crire
> l'�tat de la machine ?
>
> je peux avoir comme "adresse" :
>
> - 'index.php' (ie pas de $_GET)
> -> initialisation ;
> - 'index.php?category=la-categorie'
> -> afficher la cat�gorie ;
> - 'index.php?category=la-categorie&link=le-lien.html'
> -> afficher le lien ;
> - 'index.php?category=la-categorie&link=le-lien.html&add_bookmark=true'
> -> afficher le lien & ajouter le lien aux signets ;
> - 'index.php?category=la-categorie&link=le-lien.html&add_notes=true'
> -> afficher le lien & ajouter des notes � cette page ;
> - 'index.php?bookmarks=true'
> -> afficher les URLs des pages bookmark�es ;
> - 'index.php?notes=true'
> -> afficher les URLs des pages annot�es ;
> - 'index.php?search=true&<les conditions sur la recherche>'
> -> afficher les URLs des pages correspondant � la recherche.
>
> donc, la question, y a t'il plus mieux que des tests sur isset ?
>

Bonjour,

tu peux faire une fonction construisant un nombre entier ou chaque bit
correspond � un des �l�ments du tableau $_GET:

$test = ($_GET['category'] == true)*1 + ($_GET['link'] == true)*2 +
($_GET['add_bookmark'] == true)*4 + ($_GET['add_notes'] == true)*8 + ...

ce qui donne un nombre unique ( pour chaque situation) qui pourra �tre
test� avec un switch case.


Fred




Une Bévue

unread,
Nov 13, 2012, 3:55:33 AM11/13/12
to
Le 13/11/2012 09:25, Fred a écrit :
> Bonjour,
>
> tu peux faire une fonction construisant un nombre entier ou chaque bit
> correspond à un des éléments du tableau $_GET:
>
> $test = ($_GET['category'] == true)*1 + ($_GET['link'] == true)*2 +
> ($_GET['add_bookmark'] == true)*4 + ($_GET['add_notes'] == true)*8 + ...
>
> ce qui donne un nombre unique ( pour chaque situation) qui pourra être
> testé avec un switch case.
>

Super, merci bien pour cette idée élégante.
Et pour le cas où $_GET, je mets zero, càd le count($_GET).

Fred

unread,
Nov 13, 2012, 4:49:24 AM11/13/12
to
Le 13/11/2012 09:55, Une B�vue a �crit :
>
> Super, merci bien pour cette id�e �l�gante.
> Et pour le cas o� $_GET, je mets zero, c�d le count($_GET).

en g�n�ral, je mettrais le cas '0' dans le switch pour la clart� du
code. Mais il faut voir l'int�gration dans la page et ce qui est fait
au cour de l'initialisation.


Une Bévue

unread,
Nov 13, 2012, 5:20:55 AM11/13/12
to
Le 13/11/2012 10:49, Fred a �crit :
>
> en g�n�ral, je mettrais le cas '0' dans le switch pour la clart� du
> code. Mais il faut voir l'int�gration dans la page et ce qui est fait
> au cour de l'initialisation.
oui, oui OK, merci !

Olivier Miakinen

unread,
Nov 13, 2012, 5:24:42 AM11/13/12
to
Bonjour,

Le 13/11/2012 08:14, Une Bévue a écrit :
>
> donc, la question, y a t'il plus mieux que des tests sur isset ?

Je ne sais pas si cela répond à ta question, mais à tout hasard :
<http://fr2.php.net/filter>.

De toute façon c'est toujours utile de le connaître.

Cordialement,
--
Olivier Miakinen

Une Bévue

unread,
Nov 13, 2012, 12:16:54 PM11/13/12
to
Le 13/11/2012 11:24, Olivier Miakinen a ᅵcrit :
> Je ne sais pas si cela rᅵpond ᅵ ta question, mais ᅵ tout hasard :
> <http://fr2.php.net/filter>.
>
> De toute faᅵon c'est toujours utile de le connaᅵtre.

AH oui, je ne connaissais pas, c'est donc une remarque trᅵs utile parce
que :
To note: filter_has_var() is a bit faster than isset()

hors, j'utilise pour l'instant, isset()
0 new messages