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

Petit nouveau ! | 5 Messages

20 févr. 2009, 00:31

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
Modifié en dernier par gb1963 le 20 févr. 2009, 02:03, modifié 2 fois.

Eléphant du PHP | 139 Messages

20 févr. 2009, 01:06

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();

Petit nouveau ! | 5 Messages

20 févr. 2009, 01:16

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...

Eléphant du PHP | 139 Messages

20 févr. 2009, 01:32

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

Petit nouveau ! | 5 Messages

20 févr. 2009, 02:02

:D Merci pour ton aide rolusseum,

ce problème est résolu