probleme formulaire et redirection

Petit nouveau ! | 6 Messages

19 juil. 2011, 17:37

bonjour nouveau sur ce forum et grand debutant dans le php je fait mes premiers pas mais deja des galeres lol normal vous allez me dire ^^
bref voila apres de longue bataille et recherche sur le net j'ai fait mon premier bout de code avec un formulaire mon premier souci j'ai une erreur ligne 71 que je ne trouve pas !! la ou je dis qui si les deux mails ne sont pas identique je veut tel message ....

secondo j'aimerais que une fois l'envoie du formulaire le message comme quoi tous est ok s'affiche sur une page vierge puis redirige mon visiteur sur la page d'accueil
mais pour sa un pti coup de main serais pas de refus :D
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>MN-Iformatique.com</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   <body>
   
   <div id="en_tete">
   </div>
   
   <?php include("menu.php");?>
   
   <div id="corps">
   <div id="formulaire">
		<h2>Formulaire d'inscription</h2>
		
		<form method="post" action="formulaire.php">
		
		
	<fieldset>
	<p>
		<br/><br/>		<label for="pseudo">Pseudo :</label> <input type="text" name="pseudo" id="pseudo" maxlength="15"/>
		<br/><br/>		<label for="mdp">Mot de passe :</label> <input type="password" name="mdp" id="mdp" maxlength="15"/>
		<br/><br/>		<label for="mail">Mail :</label> <input type="text" name="mail" id="mail"maxlength="50"/>
		<br/><br/>		<label for="confirm_mail">Confirmation mail :</label> <input type="text" name="confirm_mail" id="confirm_mail" maxlength="50"/>
	</fieldset>
						<input type="submit" name="valider" value="Valider"/> <input type="reset" />
	</p>
		</form>
				
				

<?php
		// connexion a bdd 
		
				try
			{
				$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
				$bdd = new PDO('mysql:host=localhost;dbname=mn_info', 'root', '', $pdo_options);
			}
				catch (Exception $e)
			{
				die('Erreur : ' . $e->getMessage());
			}
		?>
		
		<?php		
		
		// on verifie  que tous les champs soit remplis 
		if(
				!empty($_POST['pseudo'])
				&&!empty($_POST['mdp'])
				&&!empty($_POST['mail'])
				&&!empty($_POST['confirm_mail']))
		{
		if($_POST['mail']==$_POST['confirm_mail'])  //on verifie que les adresses soit les meme
		{
		
		
		$req=$bdd->prepare('INSERT INTO formulaire(pseudo,mdp,mail)VALUES (?,?,?)');
		$req->execute(array(
							$_POST['pseudo'],
						md5($_POST['mdp']),
							$_POST['mail']));
		
				echo 'Inscription valide merci de la confirmer dans le mail que vous avez recu ';
		}
		}
				elseif  (isset($_POST['mail'])!=($_POST['confirm_mail']))
		{
				echo 'Les deux adresses mail doivent etre les meme';
		}
				elseif (!empty($_POST['valider']))
		{
				echo 'Tous les champs doivent etre remplis';
		}
		?>
	</div>
	</div>
	</body>
	</html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2011, 19:01

L'accolade ligne 71 n'est elle pas en trop ?
Si tu indentes bien ton code (tu décales à droite à chaque fois que tu ajoutes un accolade ouvrante, et tu décales à gauche chaque fois que tu la referme) tu verras rapidement s'il y a un problème dans l'organisation de tes blocs

Quant au message et la redirection, ça dépend un peu de ce que tu veux faire...

Pour afficher un message avant la redirection, tu peux garder ton script actuel, afficher un message de succès et faire une redirection en javascript après "x" secondes (exemple 2 sec.):

En html :
<meta http-equiv="refresh" content="2;url=http://forum.phpfrance.com/">
En javascript :
setTimeout("document.location='http://forum.phpfrance.com/'", 2000);
Sinon en php, tu peux utiliser header() pour effectuer la redirection avant et renvoyer l'utilisateur vers une page où il aura le message de succès :)
header('Location:http://forum.phpfrance.com/');
(et tu peux éventuellement passer des paramètres pour dire quel message doit être affiché après la redirection :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

19 juil. 2011, 19:19

oui pour mon pti souci j'ai réparé c'est good j'ai refait entre temp merci quand meme ;)

pour la redirection oui j'aimerais que mon formulaire disparaisse pour n'afficher que la phrase comme quoi tous est ok puis etre rediriger sur la page d'acceuil ...

je vais tester ton bout de code php pour la redirection mais je veut bien savoir comment faire disparaitre mon formulaire pour n'afficher que ma phrase ?

c'est quoi le 2000 a la fin de ton code ??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2011, 20:23

En html le délai est exprimé en seconde (2s), tandis qu'en javascript il est en milliseconde (donc 2000ms pour 2s)

Pour faire disparaitre ton formulaire, le plus simple c'est de placer ton traitement avant l'affichage du formulaire. Tu pourras ainsi conditionner son affichage en fonction du résultat de ton traitement. Par exemple : si le formulaire n'a pas encore été envoyé ou s'il y a des erreurs tu affiches le formulaire pour permettre de compléter/corriger, sinon tu ne l'affiche pas et tu mets juste le message de confirmation :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

20 juil. 2011, 19:19

probleme regler merci pour les infos j'aurais une autre question j'ai créer dans ma table un champ DATE j'aimerais que a l'envoie de mon formulaire la date d'inscription s'enregistre dans ma table....mais je vois pas comment faire ??!!

il faut que j'ajoute a mon INSERT INTO mais ajouter quoi je n'ai pas de variable issus du formulaire pour cette date !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 juil. 2011, 22:07

En fait, ce qui importe c'est la chaine sql que tu vas envoyer à mysql, peut importe comment celle-ci a été constituée.

Pour le moment, tu ne mets à jour que 3 champs de ta table, en te servant de valeur émises par l'utilisateur, mais tu pourrais tout aussi bien fixer certaines variable en dur, ou déterminer ces valeurs à l'aide de traitement php.

Dans ton cas, tu peux récupérer la date courante avec la fonction date() de php. Il te suffit de formater cette date au format attendu par mysql et de l'inclure dans la requête que tu vas lui envoyer. Par exemple :
$req=$bdd->prepare('INSERT INTO formulaire(pseudo,mdp,mail,date)VALUES (?,?,?,?)'); // on précise la zone en plus
$req->execute(array(
   $_POST['pseudo'],
   md5($_POST['mdp']),
   $_POST['mail'],
   date('Y-m-d')
));
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

28 déc. 2011, 18:53

Sinon en php, tu peux utiliser header() pour effectuer la redirection avant et renvoyer l'utilisateur vers une page où il aura le message de succès :)
header('Location:http://forum.phpfrance.com/');
Bonjour

J'essaie d'ajouter la redirection, mais je reçois en retour un message d'erreur au niveau de la ligne 'header' : Parse error: syntax error, unexpected ':' in

Voici mon bout de code :

if ($res) {
echo $msg_ok;
header(Location:mon_site)
} else {
echo mysql_error();
}

res = insertion des données dans la base

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 déc. 2011, 19:11

La fonction header attends une chaine de caractère en paramètre. Celle-ci doit donc être entre apostrophes/guillemets... et finir l'instruction par un ; :)
header("Location:mon_site");
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...