PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 30-11-2009 22:57:11

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

Bonjour !

Je souhaite exécuter le code php du traitement d'un formulaire dans la même page, cad à la suite.
Un exemple:


<form method="post" action="#">
<select name="test">
    <option value="test1">
    <option value="test2"> 
</select>
<input type="submit" value="OK">
</form>
<?php
     // code php du traitement
?>
 

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

#2 30-11-2009 23:19:19

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

salut,

essai if ( !empty($_POST['test'])) { echo 'test'; // ou ce que tu veut}

wink

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#3 01-12-2009 00:13:58

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

#4 01-12-2009 08:59:14

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

#5 01-12-2009 15:37:56

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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)

Hors ligne

#6 01-12-2009 18:26:19

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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.

Hors ligne

#7 01-12-2009 20:42:12

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

Ok, merci beaucoup !

Ralph303

Dernière modification par Ralph303 (01-12-2009 20:56:12)

Hors ligne

#8 01-12-2009 23:06:29

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :
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

#9 02-12-2009 07:05:54

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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
captureqa.jpg

Dernière modification par xTG (02-12-2009 07:13:15)

Hors ligne

#10 02-12-2009 08:41:23

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

#11 02-12-2009 16:42:49

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :
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

#12 02-12-2009 18:03:10

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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. hmm

Pour le niveau d'erreur j'ai les mêmes que toi nicolas. :s

Hors ligne

#13 02-12-2009 18:40:11

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :

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. hmm

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

#14 02-12-2009 20:02:16

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :

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. hmm

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

#15 02-12-2009 20:26:39

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

#16 02-12-2009 20:35:50

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :

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.

Je n'ai pas de version 5.3.0. J'en installe une et je reviens poster mon résultat.

Hors ligne

#17 14-01-2010 12:32:30

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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 :

if (empty($var)) {
  echo "je suis une variable vide";
}

ne m'affiche aucun avertissement.
Je ne comprends toujours pas la différence.

Hors ligne

#18 14-01-2010 12:57:42

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

#19 14-01-2010 13:52:34

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

xTG a écrit :

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

#20 14-01-2010 15:59:32

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Exécuter le submit d'un formulaire dans la même page: valeur d'une lis

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

Pied de page des forums