variable global ?

x@v
Mammouth du PHP | 570 Messages

18 mai 2009, 14:48

Bonjour,
j'ai un problème avec ce formulaire :
il m'affiche cette erreur dans mes champs

Code : Tout sélectionner

<br /> <b>Notice</b>: Undefined index: prenom in <b>C:\wamp\www\projetMusique\contact.php</b> on line <b>17</b><br />
<?php
$captcha=$_POST["captchaResultat"]; 
if ($captcha == $resultat) {
	echo 'thx';
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" id="formulaireContact"> 
	<fieldset>
		<legend>Formulaire de contact</legend>
		<p id="blocNom">
			<label for="nom">Nom</label>
			<input type="text" name="nom" id="nom" value="<?php echo $_POST["nom"];?>" accesskey="0" />
			<span class="exemple">ex : Dupont</span>
		</p>
		<p id="blocPrenom">
			<label for="prenom">Prénom</label>
			<input type="text" name="prenom" id="prenom" value="<?php echo $_POST["prenom"];?>" accesskey="1" />
			<span class="exemple">ex : Xavier</span>
		</p>
		<p id="blocEmail">
			<label for="email">Email</label>
			<input type="text" name="email" id="email" value="<?php echo $_POST["email"];?>" accesskey="2" />
			<span class="exemple">ex : [email protected]</span>
		</p>
		<p id="blocCommentaire">
			<label for="commentaire">Commentaire</label>
			<textarea name="commentaire" id="commentaire" accesskey="3" value="<?php echo $_POST["nom"];?>"></textarea>
			<span class="exemple">ex : blabla</span>
		</p>
		<p id="captcha"><?php
			$t1=rand(0, 10);
			$t2=rand(0, 10);
			$resultat=$t1+$t2;
			echo $t1.' + '.$t2;?>	
		</p>
		<p id="blocCaptcha">
			<label for="captchaResultat">résultat</label>
			<input name="captchaResultat" id="captchaResultat" accesskey="5" />
			<span class="exemple">ex : blabla</span>
		</p>		
		<p id="blocSubmit">
			<input type="submit" value="envoie" accesskey="4">
		</p>
	</fieldset>
</form>
Merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphanteau du PHP | 26 Messages

18 mai 2009, 15:31

Ton tableau $_POST ne contient pas d'index 'prenom' (comme l'indique le message d'erreur).
Il faut toujours initialiser ses variables, par exemple au lieu d'utiliser directement le contenu de $_POST dans ton formulaire ( ce qui est une mauvaise idée car tu ne vérifie pas le contenu des variables), tu peux faire un truc du genre :
if(isset($_POST['prenom']))
{
  $prenom = $_POST['prenom'] ;
}else{
  $prenom = "";
}

et même chose pour tes autres variables avant des les utiliser dans ton formulaire.

x@v
Mammouth du PHP | 570 Messages

18 mai 2009, 16:04

C'est une nouvelle configuration de php.
Ont initialise toutes les varaibles comme en java ?
Depuis quand c'est comme ça.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphanteau du PHP | 12 Messages

18 mai 2009, 17:41

C'est normal, tu arrives sur ta page sans avoir posté ton formulaire et tu tentes d'afficher comme value de ton input la valeur de $_POST['prenom'] (qui n'est donc pas encore défini)...

Tu devrais initialiser ton script de cette facon (un peu grossière certes mais efficace dans ce cas précis) :

Code : Tout sélectionner

if (count($_POST) == 0) { $_POST['nom'] = ''; $_POST['prenom'] = ''; $_POST["email"] = ''; }

ViPHP
AB
ViPHP | 5818 Messages

18 mai 2009, 18:00

Ton tableau $_POST ne contient pas d'index 'prenom' (comme l'indique le message d'erreur).
Il faut toujours initialiser ses variables, par exemple au lieu d'utiliser directement le contenu de $_POST dans ton formulaire ( ce qui est une mauvaise idée car tu ne vérifie pas le contenu des variables), tu peux faire un truc du genre :
if(isset($_POST['prenom']))
{
  $prenom = $_POST['prenom'] ;
}else{
  $prenom = "";
}

et même chose pour tes autres variables avant des les utiliser dans ton formulaire.
D'ailleurs c'est pour ce genre de choses que l'opérateur ternaire est pratique :
$prenom = isset($_POST['prenom'])? $_POST['prenom'] : '';