Page 1 sur 1

Appel d'une nouvelle page après validation d'un formulaire

Posté : 20 févr. 2009, 00:31
par gb1963
Bonjour :D ,

Je débute en php et mysql.

J'ai créé un formulaire qui me permet d'enregistrer des données dans ma base de donnée MySql.

Quand je valide ce formulaire je voudrais s'il n'y a pas d'erreur rediriger l'internaute sur une nouvelle page.

Mais je n'arrive pas à le faire fonctionner.

Voici le code Php mis avant le html
<?php
if (sizeof($_POST)>0 && $index=="*")
{header("location: index.html");
}
// Connection à la base de données
require_once("../commun/php/connection.php");
// Appel des fonctions
require_once('fonction.php');

// Vérification de la validation de la saisie
if (sizeof($_POST)>0)
{	$frm=$_POST;
	$msg_err=valide_form($frm,$err);
// Création
	if (empty ($msg_err))
	{	$frm=$_POST;
		insert_db($frm);
		$index ="*";
		exit;}	
}
?>
code html

Code : Tout sélectionner

<h2>Création</h2> <form action='<?php echo basename(__FILE__); ?>' method='post' enctype="multipart/form-data"> <!-- echo basename(__FILE__) récupère le nom de la page --> <p>&nbsp;</p> <p>Il faut saisir une section, un élève et son code d'accès.</p> <p>&nbsp;</p> <p><label for="section">Section</label> <input type="text" name="section" id="section" value="<?php echo stripslashes($frm['section'])?>"/>* <?php if (isset($err['section'])) echo $msg_err['section']?></p> <p>&nbsp;</p> <p><label for="login">Elève</label> <input type="text" name="login" id="login" value="<?php echo stripslashes($frm['login'])?>" />* <?php if (isset($err['login'])) echo $msg_err['login']?></p> <p>&nbsp;</p> <p><label for="pw">Mot de Passe</label> <input type="password" name="pw" id="pw" value="<?php echo stripslashes($frm['pw'])?>" />* <?php if (isset($err['pw'])) echo $msg_err['pw']?></p> <p>&nbsp;</p> <p>&nbsp;</p> <p> <input class="marge30" type="submit" value="ok"/> </p> </form>
Est-ce que vous pouvez m'aider en m'indiquant où je fais une erreur.

Je ne veux pas utiliser du javascript puisque les internautes n'y ont pas accès.

Je voudrais aussi faire le même principe sur une autre page, mais en restant après la validation sur la même page.

Je vous remercie d'avance

Posté : 20 févr. 2009, 01:06
par rolusseum
Ben après l'enregistrement des données dans ta bd, tu fais une redirection
//redirection vers la page que l'on souhaite
header("location: la page.html"); 
exit();

Posté : 20 févr. 2009, 01:16
par gb1963
Merci pour ton aide

J'ai mis après l'insert
<?php
// Connection à la base de données
require_once("../commun/php/connection.php");
// Appel des fonctions
require_once('fonction.php');

// Vérification de la validation de la saisie
if (sizeof($_POST)>0)
{	$frm=$_POST;
	$msg_err=valide_form($frm,$err);
// Création
	if (empty ($msg_err))
	{	$frm=$_POST;
		insert_db($frm);
		header("location: index.html");
		exit();}	
}
?>
Voici le message qui s'affiche :
Warning: Cannot modify header information - headers already sent by...

Posté : 20 févr. 2009, 01:32
par rolusseum
Seulement, cette méthode présente un gros problème pour les débutants, c'est qu'elle doit être utilisé avant d'envoyer du texte (echo, print, texte hors balise "<?php ?>", etc. ) et il est très difficile pour eux de comprendre la logique d'un tel fonctionnement et comment le résoudre. C'est d'ailleurs pour cette raison qu'ils s'orientent sur l'horrible solution du JavaScript.
Voici un tutoriel sur la redirection
http://www.phpfrance.com/tutoriaux/ind ... rediriger


Modifie les guillemets pas des apostrophes et en enlevant les parenthèse à exit()
 header('location: index.html');
 exit;     
Eventuellement indique le chemin complet dans le header

Posté : 20 févr. 2009, 02:02
par gb1963
:D Merci pour ton aide rolusseum,

ce problème est résolu