Problème de formulaire

Eléphanteau du PHP | 41 Messages

30 juil. 2007, 19:27

Bonjour,

J'ai un problème de formulaire. J'ai essayé un tuto ici pour savoir comment rediriger un formulaire et récupérer les données si les champs ne sont pas tous remplis.

Je n'arrive pas à faire fonctionner le formulaire. Je me rends compte que ce tuto n'est pas très précis. Je dois remplacer les balise

Code : Tout sélectionner

<? >
par

Code : Tout sélectionner

<?php >
.

Bizarre, la première fois que j'avais essayé, ça allait plus au moins sauf la fin. Alors j'ai recommencé et je bloque déjà à une étape antérieure.

J'affiche un message si les champs sont vide avec

Code : Tout sélectionner

<?php if (($Espion == "JaiToutVu") && (strlen($Nom) == 0)) echo "PAS DE NOM VIDE"; ?>
mais ça ne fonctionne pas.

Voici mon code, pouvez-vous m'aider?
Merci

Code : Tout sélectionner

<form name="MonFormulaire" method="post" action="saisiedonnee.php"> Votre nom : <?php if (($Espion == "JaiToutVu") && (strlen($Nom) == 0)) echo "PAS DE NOM VIDE"; ?> <input type="text" name="Nom"> <br> <!-----------------------------------> Votre prénom : <?php if (strlen($Prenom) == 0) echo "PAS DE PRENOM VIDE"; ?> <input type="text" name="Prenom"> <br> <input type="hidden" name="Espion" value="JaiToutVu"> <input type="submit" name="Submit" value="Envoyer"> </form>

d0m
Mammouth du PHP | 1141 Messages

30 juil. 2007, 19:51

Ton formulaire est en méthode POST, les élements de ton formulaire sont donc stockés dans la variable $_POST

Par exemple pour accéder au champ espion, il faut utiliser $_POST['espion'].

Eléphanteau du PHP | 41 Messages

30 juil. 2007, 20:39

Génial ça fonctionne!

Juste une dernière question à propos de la redirection de ce formulaire.
D'après le tuto, il faut metter les lignes:

Code : Tout sélectionner

echo "<meta http-equiv='refresh' content='0; url=resultat.php?Nom=$Nom&Prenom=$Prenom'>";
J'ai donc mis

Code : Tout sélectionner

echo "<meta http-equiv='refresh' content='0; url=resultat.php?Nom=$_POST['Nom']&Prenom=$_POST['Prenom']'>";
Apparement j'ai encore un problème de ce côté là.
J'ai remplacé les champs $Nom et $Prenom par $_POST['Nom'] et $_POST['Prenom'].
Comme elles sont dans un script, elle devraient être remplacées par leur valeur.
Mais apparemment, je n'arrive pas à construire mon url correctement.

Code : Tout sélectionner

<html <head> <?php if ((strlen($_POST['Nom']) > 0) && (strlen($_POST['Prenom']) > 0)) echo "<meta http-equiv='refresh' content='0; url=resultat.php?Nom=$_POST['Nom']&Prenom=$_POST['Prenom']'>"; ?> <title>Saisie des donnéees</title> </head> <body> <form name="MonFormulaire" method="post" action="saisiedonnee.php"> Votre nom : <?php if (($_POST['Espion'] == "JaiToutVu") && (strlen($_POST['Nom']) == 0)) echo "PAS DE NOM VIDE"; ?> <input type="text" name="Nom" value=<?php echo ($_POST['Nom'])?>> <br> <!-----------------------------------> Votre prénom : <?php if (($_POST['Espion'] == "JaiToutVu") && (strlen($_POST['Prenom']) == 0)) echo "PAS DE PRENOM VIDE"; ?> <input type="text" name="Prenom" value= <?php echo ($_POST['Prenom'])?>> <br> <input type="hidden" name="Espion" value="JaiToutVu"> <input type="submit" name="Submit" value="Envoyer"> </form> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 20:54

Tu devrais laisser le tuto de coté (il semble trop ancien)
Regarde plutôt celui-ci plus complet

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 41 Messages

30 juil. 2007, 22:03

Merci pour l'adresse.

Le tuto m'a bien aidé. J'ai adapté le code et ça fonctionne.

J'aurais juste une dernière question concernant le code du tuto que tu m'as envoyé:

Dans son code, il y a un bouton "Recommencer".
D'après ce que j'ai lu, il n'est pas nécessaire dans le code.

Je sais que ce code peut-être adapté mais c'est juste pour être sûr qu'il n'y aucun traitement sur ce bouton et que j'ai bien tout compris.

Merci encore de votre aide :D

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 22:07

Il s'agit d'un bouton "reset" qui place les champs dans le même état que lors du chargement de la page.
Il n'est donc pas nécessaire.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 41 Messages

30 juil. 2007, 22:20

merci beaucoup

repondre
Invité n'ayant pas de compte PHPfrance

26 oct. 2011, 20:03

<html>
<head>
<?
if ((strlen($Nom) > 0) && (strlen($Prenom) > 0))
echo "<meta http-equiv='refresh' content='0; url=resultat.php?Nom=$Nom&Prenom=$Prenom'>";
?>
<title>Saisie des donnéees</title>
</head>

<body>
<form name="MonFormulaire" method="post" action="saisiedonnee.php">
<!------------------------------------------------>
Votre nom :
<?
if (($Espion == "JaiToutVu") && (strlen($Nom) == 0))
echo "PAS DE NOM VIDE";
?>
<input type="text" name="Nom" value=<? echo $Nom;?>>
<br>
<!------------------------------------------------->
Votre prénom :
<?
if (($Espion == "JaiToutVu") && (strlen($Prenom) == 0))
echo "PAS DE PRENOM VIDE";
?>
<input type="text" name="Prenom" value=<? echo $Prenom;?>>
<br>
<!------------------------------------------------->
<input type="hidden" name="Espion" value="JaiToutVu">
<input type="submit" name="Submit" value="Envoyer">
</form>
</body>
</html>



Remplassere : <form name="MonFormulaire" method="post" action="saisiedonnee.php">

par <form name="MonFormulaire " method="get" action="resultat.php?Nom=$Nom&Prenom=$Prenom">

Nb;resultat.php votre redirection du formualire pour afficher le nom et le prenom

$_GET['Nom']
$_GET['Prenom']