fermeture de formulaire avec actulisation de la page index

Eléphanteau du PHP | 30 Messages

25 mars 2010, 16:16

Bonjour,

je recherche comme faire pour une fois que mon formulaire est remplit et qu'on clique sur valider, ceci enregistre dans la base de donnée et ferme la page formulaire ainsi qu'actualise la page index où se trouve la requete de la base.

pour l'instant j'ai que ceci en code "page formulaire"
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nouvelle page 1</title>
<script type="text/javascript" language="javascript">
function retour() 
{ 
window.close();
} 
</script>

</head>
<body bgcolor="#C0C0C0">
<form align="center" method="POST" style="border-style:ridge; border-width:1px; width: 600; height: 400; background-color:#FFFFFF" target="_blank" name="Saisie enregistrement";>
	<blockquote>
		<p align="center"><b><i><font color="#008080" size="4">Formulaire d'enregistrement</font></i></b></font></i></b></p>
		<p align="left" ><b><font color="#008080">Date&nbsp;&nbsp;et heure : </font></b>
		&nbsp;<input type="text"  size="30" name="date" value="<?php include("heure.php");?>" readonly="readonly" ></p>
		<p align="left" ><b><font color="#008080">Type&nbsp;&nbsp; : </font></b>
		<select size="1" name="type"><?php include("Type.php");?></select></p>
		<p align="left"><b><font color="#008080">Agent&nbsp; :</font></b>
		<select size="1" name="agent"><?php include("agent.php");?></select></p>
		<p align="left"><b><font color="#008080">Objet&nbsp; :</font></b>
		<select size="1" name="objet"><?php include("Objet.php");?></select></p>
		<hr>
		<p align="left"><font color="#008080"><b>N° rue :&nbsp;
		<input type="text" name="numero_rue" size="20"></b></font></p>
		<p align="left"><b><font color="#008080">Adresse:</font></b>
		<select size="1" name="adresse"><?php include("Adresse.php");?></select></p>
		<p align="center" style="margin-top: -2px; margin-bottom: -1px">
		</p><hr>
		<p align="center"><font color="#008080"><b>Détail:</b></font></p>
		<p align="left" style="margin-top: -2px; margin-bottom: -1px">&nbsp;<textarea name="detail" style="width:525; height:200;" onKeyPress="compter(this, 2000)" rows="1" cols="20"></textarea></p>
		<p align="left" style="margin-top: -2px; margin-bottom: -1px">&nbsp;</p>
		<input type="submit" value="Envoyer" name="B1" onclick="retour()"><input type="reset" value="Rétablir" name="B2"></p>
	</blockquote>

<?php
 include("connexion.php");
 $date=isset($_POST['date'])?$_POST['date']:"";
 $type=isset($_POST['type'])?$_POST['type']:"";
 $agent=isset($_POST['agent'])?$_POST['agent']:"";
 $objet=isset($_POST['objet'])?$_POST['objet']:"";
 $numero_rue=isset($_POST['numero_rue'])?$_POST['numero_rue']:"";
 $adresse=isset($_POST['adresse'])?$_POST['adresse']:"";
 $detail=isset($_POST['detail'])?$_POST['detail']:"";

 mysql_query("insert into saisie (date,type,agent,objet,numero_rue,adresse,detail,id) values ('$date','$type','$agent','$objet','$numero_rue','$adresse','$detail', '')");
 mysql_close();
?>
</form>

</body>
</html>
Quand on clique sur valider, sa s'enregistre bien dans la base de donnée, mais la page formulaire reviens et la page index n'est pas actualisée

Mammouth du PHP | 985 Messages

25 mars 2010, 17:17

Bonjour,
Tu peux regarder du côté de la fonction header():
http://php.net/manual/fr/function.header.php

Notamment header("Location: ...

Regarde l'exemple intitulé: /* Redirection vers une page différente du même dossier */
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

devlop78
Invité n'ayant pas de compte PHPfrance

25 mars 2010, 17:26

Oui header ... donc sois tu traites les données de ton formulaire tout au début, soit tu mets tout tes données sortantes dans une variable pour faire un echo() après, soit tu utilises ob_flush (mais connait pas bien cette bête-là), avant d'appeler un header(). Sinon ... marche pas.

Mammouth du PHP | 985 Messages

25 mars 2010, 17:35

Je n'ai pas tout regardé en détail mais a première vue, tu peux mettre ta partie Php qui traite le formulaire au tout début de ton fichier, de cette façon, il n'y aura aucun soucis.

D'ailleurs tu devrais faire un isset() avant de lancer ta requête SQL et donc ensuite mettre ta redirection dans ce même isset() après la requête...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 30 Messages

25 mars 2010, 18:50

Je n'ai pas tout regardé en détail mais a première vue, tu peux mettre ta partie Php qui traite le formulaire au tout début de ton fichier, de cette façon, il n'y aura aucun soucis.

D'ailleurs tu devrais faire un isset() avant de lancer ta requête SQL et donc ensuite mettre ta redirection dans ce même isset() après la requête...
Je comprend rien lol s'est quoi le isset()

j'ai mis en debut de ma page formulaire:
<html>
<?php
 header('Location: /index.php');
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nouvelle page 1</title>

</head>
...
et sa me revois sur ma page formulaire :
Warning: Cannot modify header information - headers already sent by (output started at /home/o102202/public_html/video/formulaire.php:3) in /home/o102202/public_html/video/formulaire.php on line 4


Je dois faire quoi ?

ViPHP
ViPHP | 5462 Messages

25 mars 2010, 18:51

mettre <html> apres le php