Vous n'êtes pas identifié(e).
Bonjour !
Je souhaite exécuter le code php du traitement d'un formulaire dans la même page, cad à la suite.
Un exemple:
Voilà, dans le code php du traitement, je souhaite récupérer la valeur du "select".
Mais comme la méthode est post, celà ne doit pas être $_POST['test']; car on n'appelle pas un autre fichier .php avec action="#"...
D'ailleurs, j'ai essayé, et ça me fait undefined index 'test'...
Donc, comment récupérer la valeur sélectionnée ?
Merci d'avance !
Ralph303
Hors ligne
Hors ligne
Merci pour la piste !
J'ai pu voir que si l'on clique sur le bouton OK, cela recharge la page et $_POST['test'] est défini cette fois-ci et cela m'affiche la bonne valeur.
Mais tant qu'on a pas cliqué, ça exécute le code php situé après sans attendre que l'on clique et donc $_POST['test'] est indéfini...
empty($_POST['test']) m'a fait penser à essayer isset($_POST['test']) mais cela semble ne pas marcher sur les tableaux.
Existe-t-il une fonction pour vérifier si l'index d'un tableau est défini ?
Je voudrais donc éviter ce message d'erreur qui s'affiche même si j'utilise empty:
Notice: Undefined index: test in C:\Program Files (x86)\EasyPHP 2.0b1\www\index.php on line 11
Est-il possible de n'exécuter le code php qui suit qu'après avoir cliqué sur le bouton OK ? (Sans avoir à appeler un fichier php avec action).
Merci !
Ralph303
Dernière modification par Ralph303 (01-12-2009 01:02:47)
Hors ligne
IsSet permet de savoir si la variable est définie ou non, c'est cette fonction qu'il faut utiliser pour éviter le message d'erreur.
Mais isSet ne vérifie pas si la variable est vide ou non, donc il te faut la fonction empty.
Bref utilises les deux mais en mettant isSet en premier. ^_-
Hors ligne
IsSet permet de savoir si la variable est définie ou non, c'est cette fonction qu'il faut utiliser pour éviter le message d'erreur.
Mais isSet ne vérifie pas si la variable est vide ou non, donc il te faut la fonction empty.Bref utilises les deux mais en mettant isSet en premier. ^_-
Ou plus simplement pour vérifier qu'elle existe et est non vide tu utilises !empty($var)
Hors ligne
xTG a écrit :IsSet permet de savoir si la variable est définie ou non, c'est cette fonction qu'il faut utiliser pour éviter le message d'erreur.
Mais isSet ne vérifie pas si la variable est vide ou non, donc il te faut la fonction empty.Bref utilises les deux mais en mettant isSet en premier. ^_-
Ou plus simplement pour vérifier qu'elle existe et est non vide tu utilises !empty($var)
Le but de la fonction isSet n'est pas de vérifier si elle est vide ou non, c'est pour vérifier si elle est définie.
Utilises seulement empty et tu auras une erreur d'affiché lorsque la variable n'est pas définie.
Hors ligne
nicolas a écrit :xTG a écrit :IsSet permet de savoir si la variable est définie ou non, c'est cette fonction qu'il faut utiliser pour éviter le message d'erreur.
Mais isSet ne vérifie pas si la variable est vide ou non, donc il te faut la fonction empty.Bref utilises les deux mais en mettant isSet en premier. ^_-
Ou plus simplement pour vérifier qu'elle existe et est non vide tu utilises !empty($var)
Le but de la fonction isSet n'est pas de vérifier si elle est vide ou non, c'est pour vérifier si elle est définie.
Utilises seulement empty et tu auras une erreur d'affiché lorsque la variable n'est pas définie.
Tu aurais vérifier, tu aurais évité de t'enfoncer un peu plus.
http://www.php.net/empty
Hors ligne
Note: Lors de l'utilisation de cette fonction sur des propriétés d'objet inaccessibles, la méthode magique __isset sera appelée, si elle existe.
Cela ne fonctionne que pour les objets donc je ne me suis en rien enfoncé.
Je suis sous PHP5 et en utilisant empty si la variable (et non un objet) n'est pas défini il m'affiche une erreur.
Edit : petit test à l'appui
Dernière modification par xTG (02-12-2009 07:13:15)
Hors ligne
Allons, de grâce, cessez vos chamailleries.
Pour être tout à fait rigoureux, il ne s'agit pas d'un message d'erreur fatale mais d'un avertissement.
Cela dit, la présence même de la fonction isset(), en PHP, nuit gravement à la réputation de ce langage.
Se référer à une variable non initialisée constitue, tout de même, une hérésie.
Reste le cas présent du script contenant à la fois le formulaire et son traitement, l'appel est-il pour traitement ou pour soumission ? Il faut bien tester ce qu'a transmis (ou non) HTTP.
Cela milite, selon moi, pour une décomposition plus rigoureuse du processus et donc, pour le recours à des approches comme MVC.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
PHP.net - empty a écrit :Note: Lors de l'utilisation de cette fonction sur des propriétés d'objet inaccessibles, la méthode magique __isset sera appelée, si elle existe.
Cela ne fonctionne que pour les objets donc je ne me suis en rien enfoncé.
Je suis sous PHP5 et en utilisant empty si la variable (et non un objet) n'est pas défini il m'affiche une erreur.Edit : petit test à l'appui
http://img686.imageshack.us/img686/564/captureqa.jpg
Toutes mes excuses. Quel est ton niveau d'erreur ? J'ai E_STRICT | E_ALL | E_NOTICE et je ne vois rien de rien.
Hors ligne
On fait pas de gueguerres, je postais juste pour informer que je ne comprenais pas sa réponse. Et s'il avait pu m'expliquer pourquoi j'avais le message cela aurait été un plus pour mes connaissances. ^^
Concernant le isSet je le trouve utile pour la gestion des index de tableau, vu qu'on peux créer n'importe comment des index en PHP.
Pour le niveau d'erreur j'ai les mêmes que toi nicolas. :s
Hors ligne
Concernant le isSet je le trouve utile pour la gestion des index de tableau, vu qu'on peux créer n'importe comment des index en PHP.
Certes, mais il n'en demeure pas moins que tout ce qui est possible n'est pas forcément souhaitable.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
On fait pas de gueguerres, je postais juste pour informer que je ne comprenais pas sa réponse. Et s'il avait pu m'expliquer pourquoi j'avais le message cela aurait été un plus pour mes connaissances. ^^
Concernant le isSet je le trouve utile pour la gestion des index de tableau, vu qu'on peux créer n'importe comment des index en PHP.Pour le niveau d'erreur j'ai les mêmes que toi nicolas. :s
Ma remarque était certes un peu taquine car pour moi il n'y a pas de différence entre isset et !empty d'où mon incompréhension. As-tu le warning si tu utilises isset ?
Tout cela est bien étrange et j'aimerais vraiment comprendre. Je n'aime pas rester sur quelque chose que je ne comprends pas.
Quelle version précise de php ? La mienne : 5.2.11-2
Quelle nombre de renvoie error_reporting (depuis phpinfo) ? Pour moi 8191.
Hors ligne
Ma version de PHP est la 5.3.0.
error_reporting : 30719
Aucun warning si j'utilises isSet avant, je suis obligé de l'utiliser avant tout traitement sur des variables $_GET ou $_POST ou autre que je ne déclare pas pour le traitement courant.
Hors ligne
Ma version de PHP est la 5.3.0.
error_reporting : 30719Aucun warning si j'utilises isSet avant, je suis obligé de l'utiliser avant tout traitement sur des variables $_GET ou $_POST ou autre que je ne déclare pas pour le traitement courant.
Je n'ai pas de version 5.3.0. J'en installe une et je reviens poster mon résultat.
Hors ligne
Comme promis je viens reposter mon résultat.
PHP: 5.3.0-2
Error Reporting: E_STRICT | E_ALL | E_NOTICE
OS: gnu/linux (debian)
Le code suivant :
ne m'affiche aucun avertissement.
Je ne comprends toujours pas la différence.
Hors ligne
Je suis sous windows doit pas y avoir d'autres explications hein ? xD
Non sérieusement c'est en effet bizarre... Peut être que je ne possède pas une version stable de PHP.
Enfin bon cela ne me gène pas pour le moment.
Hors ligne
Je suis sous windows doit pas y avoir d'autres explications hein ? xD
Non sérieusement c'est en effet bizarre... Peut être que je ne possède pas une version stable de PHP.
Enfin bon cela ne me gène pas pour le moment.
J'ai pensé que cela pouvait venir de l'OS mais pour ne pas passer pour un intégriste je ne l'ai pas dit ! :-)
Hors ligne
Bah j'ai déjà eu des bugs inexplicables avec windows donc plus rien ne m'inquiète...
Firefox possède un drôle de cache sous windows par exemple, le fichier dns aussi pour autre exemple (il m'est arrivé de le vider et ne voir aucun changement avant reboot de l'ordinateur => vive les temporaires...).
Mais n'étant pas un utilisateur confirmé des distributions unix je préfère rester sous windows et lancer ma virtualisation d'unix si besoin est.
Hors ligne