Switch et php 5

Résolu
cseagle Messages postés 99 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 5 août 2009 - 3 sept. 2004 à 21:53
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010 - 4 sept. 2004 à 15:20
bonsoir à toutes et à tous,

voila mon souci :

J'ai une page d'inscription avec un formulaire qui renvoi après validation vers cette même page contenant un switch($action).
Mon problème est que si je ne défini pas $action avant le switch il me balanche un message d'erreur, si je la déclare vide il prend rien quand le formulaire est validé et si je lui donne une valeur POST[variable] il me balance une erreur quand le form a pas été envoyé.

Je sais pas si je suis clair mais ma question est :

Comment déclarer cette variable $action sans bloquer le formulaire et sans message d'erreur ???

-------------------------------

Détail en dessous

-------------------------------

<?php
switch($action) {

case "add";

......

break;

default;

echo "Inscription Membre
<form action="inscription.php" method="post">

.....";
break;
}
?>

Mon souci c'est que comme cela, lorsque $action n'est renseigné il me balance :

Notice: Undefined variable: action in inscription.php on line 20
qui correspond au switch($action){

--------------------------------

<?php

$action = ' ';

switch($action) {

case "add";

......

break;

default;

echo "Inscription Membre
<form action="inscription.php" method="post">

.....";
break;
}
?>

Mon souci c'est que comme cela, il me recharge le formulaire vierge et sans faire le switch

--------------------------------

<?php
$action = $_POST["action"];

switch($action) {

case "add";

......

break;

default;

echo "Inscription Membre
<form action="inscription.php" method="post">

.....";
break;
}
?>

Mon souci c'est que comme cela, lorsque $action n'est renseigné il me balance :

Notice: Undefined index: action in inscription.php on line 20
qui correspond au $action = $_POST["action"];

6 réponses

cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 1
4 sept. 2004 à 09:44
Hello
4eme essai :

<?php

if(isset($_POST["action"])) {
$action = $_POST["action"];

switch($action) {
/*-----------------------------------------------------------------*/
/* AJOUT DANS MySQL */
/*-----------------------------------------------------------------*/

case "add";
..............;
break;
} // Fin du Switch

} else { // Sinon on affiche le formulaire

} // Fin du If


Une variable nomée name (name est un nom arbitraire que j'utilise pour l'exemple) transmise par un formulaire est stockée dans le tableau $_POST['name'] si l'action du form est positoinnée à post ou dans $_GET['name'] si l'action est sur get.

De plus, selon la configuration du serveur, la variable transmise via le formulaire peut être directement dans $name ; mais ce n'est pas toujours le cas.

Donc utiliser $_GET et $_POST.

A++

Chouchou
cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 1
3 sept. 2004 à 23:33
Salut

Utilise la fonction isset($variable)
pour savoir si la variable est déclarée.
Sinon affiche le form vide.

A++

Chouchou
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
3 sept. 2004 à 23:42
Exact, le paramètre doit etre $_POST["tavariable"], pas ta variable elle même.

?-) Grrrrrrrrrrr ?-)
cseagle Messages postés 99 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 5 août 2009
4 sept. 2004 à 08:59
Bon alors voila ce que j'ai fait qui ne fonctionne pas mieux :

1er essai

<?php 

if(isset($action)) {
$action = $_POST["action"];

switch($action) {
/*-----------------------------------------------------------------*/
/*	AJOUT DANS MySQL			*/
/*-----------------------------------------------------------------*/

case "add";
..............;
break;
} // Fin du Switch

} else { // Sinon on affiche le formulaire

} // Fin du If


Il m'affiche le formulaire mais lorsque je valide ne fait pas le switch (donc action n'est pas défini)

2eme essai

<?php 
$action = $_POST["action"];
if(isset($action)) {

switch($action) {
/*-----------------------------------------------------------------*/
/*	AJOUT DANS MySQL			*/
/*-----------------------------------------------------------------*/

case "add";
..............;
break;
} // Fin du Switch

} else { // Sinon on affiche le formulaire

} // Fin du If


Il m'affiche le formulaire et :
Notice: Undefined index: action in inscription.php on line 20
soit $action = $_POST["action"];

3eme essai

<?php 

if(isset($action)) {

switch($action) {
/*-----------------------------------------------------------------*/
/*	AJOUT DANS MySQL			*/
/*-----------------------------------------------------------------*/

case "add";
..............;
break;
} // Fin du Switch

} else { // Sinon on affiche le formulaire

} // Fin du If


Il m'affiche le formulaire mais lorsque je valide ne fait pas le switch (donc action n'est pas défini)

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cseagle Messages postés 99 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 5 août 2009
4 sept. 2004 à 10:05
Merci beaucoup c'est ça, ça fonctionne impec.

Encore merci
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
4 sept. 2004 à 15:20
:) Je t'avais préciser d'utiliser $_POST["tavariable"] comme paramètre.

?-) Grrrrrrrrrrr ?-)
Rejoignez-nous