Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2007, 15h07   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
Par défaut Rafraichissement formulaire avec résultats sur la même page

Bonjour j'ai le formulaire suivant dont le traitement se fait sur la même page :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">
<table><tr height="10px">
<br><br>
<center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
<form name="questionfaq" method="post" action="#" >
<b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" rows="6" cols="55" ></textarea></b></i><br/><br/><br/>
<center><input type="submit" name="submit" value="Envoyer" ></center>
</form> </div> ';
 
 
if(!isset($_POST['Question']))
echo 'erreur';
else
{ if(isset($_POST['Question']))
{
$question = $_POST['Question'];
echo($question);
 
$sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
$resultat2=mysql_query($sqlfaq,$connection);
 
}
}
Le résultat est bien entré dans ma base de données mais je suis obligée de faire F5 pour l'afficher sur ma page ce qui fait qu'il me rentre une deuxieme fois ma varible dans la table....Je pensais mettre onclick="window.location.reload()" dans la balise form mais ça ne fonctionne pas...Comment faire?Merci d'avance de vos réponses.
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h22   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
faut inverser l'ordre dans ton fichier.
En gros, au début du script, tu regardes si tu affiches la page pour la premiere fois ou si tu postes ton formulaire
Dans le premier cas tu affiches directement le formulaire
Dans le second cas, tu rentres dans ton if, tu fais l'insertion et ensuite tu affiches que l'insertion s'est bien passée

Exemple avec un champ
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if(isset($_POST['monchamp']))
{
$monchamp = $_POST['monchamp'];
 
// insertion dans la base de données
//...
echo "Le champ monchamp a pris la valeur $monchamp dans la BDD";
}
else
{
// j'affiche mon formulaire
}
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h33   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
ça ne fonctionne pas....maintenant à chauqe fois que je rafraichi ma page il me met des champs vide dans la table et ne m'affiche plus mon formulaire.
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h43   #4
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Renseigne (value) tes variables juste apres les avoir inserées.
Code :
1
2
textarea  value="<?php echo $_POST['monchamp']; ?>" rows="6" cols="55" ></textarea>
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h59   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
1/ donnes le code que tu as fait
2/ tu n'as pas dit que tu voulais réafficher le formulaire a chaque insertion il me semble. Il suffit de sortir le formulaire du else et de le remplir avec les données.
En reprenant l'exemple a un champ:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if(isset($_POST['monchamp']))
{
$monchamp = $_POST['monchamp'];
 
// insertion dans la base de données
//...
echo "Le champ monchamp a pris la valeur $monchamp dans la BDD";
}
else
{
// on initialise les variables à vide pour ne pas avoir d'erreur
$monchamp = "";
}
// j'affiche mon formulaire
?>
<form name="monform" ...>
 <input type="text" name="monchamp" value="<?php echo $monchamp;?>" />
</form>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h04   #6
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/
	xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 "/>
<title>Bayard faq</title>
   <SCRIPT language="JavaScript">
      function pop(id) {
         window.open("popupfaq.php?id="+id,"","width=600,height=500,scrollbars=yes")
      }
   </SCRIPT>
</head>
<body>
 
<?
 
echo '<link rel="stylesheet" type="text/css" href="styleMenu.css"> '; //le fichier style pour le menu d'onglet
include("./ConfigBackGround.php");
echo '  </head> 
		<body>';
error_reporting(E_ALL);
include("../connexion.php");
include("./textDefilant.php");
 
 
$date=date("d-m-Y");
 
include("./PseudoEnteteBayard.php");
//partie affichage
echo "<B>
	<div style='padding: 20px;position:absolute' bgcolor='#F5F5F5'>";		
	echo'<p align=center>
      <h1>Questions fréquentes</h1>
   </p>
   <ol>';
 
$SQL = "SELECT * FROM faq ORDER BY hits DESC";
$result = mysql_query($SQL);
while($val = mysql_fetch_array($result)) { 
   echo'<li><A href="javascript:pop('.$val["ID"].')" style="margin-left:20px;color:#8800FF;font-size:16px;">'.$val["Titre"].'</A></li>';
} 
  echo' </ol></div>';
//fin affichage	
 
//début partie formulaire	
echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">
   <table><tr height="10px">
	<br><br>
 <center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
<form name="questionfaq" method="post" action="#">
<b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
<center><input type="submit" name="submit" value="Envoyer"></center>
</form>	</div>	';
 
///fin partie formulaire
 
//traitement
if(!isset($_POST['Question']))
echo 'erreur';
else
{ if(isset($_POST['Question']))
{
$question = $_POST['Question'];
 
 
 $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
	$resultat2=mysql_query($sqlfaq,$connection);
	unset($_POST['Question']);
 
}
}
 
		mysql_close($connection);
?>
</body></html>
Je fais une faq
ceci est le code complet de ma page :
à gauche sont situées toutes les questions déjà posée quand on clique on ouvre un popup.
à droite mon formulaire où la personne pose sa question .
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h08   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
D'accord, et donc à quel endroit dans le code as-tu fait les modifications que je t'ai expliquées au dessus?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h23   #8
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">';
 
//traitement
if(isset($_POST['Question']))
{
$question = $_POST['Question'];
 $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
	$resultat2=mysql_query($sqlfaq,$connection);
 
 
echo "Le champ monchamp a pris la valeur $question dans la BDD";
}
else
{
// on initialise les variables à vide pour ne pas avoir d'erreur
$question = "";
}
 
//affichage formulaire
 echo'<center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
<form name="questionfaq" method="post" action="#">
<b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" value="'.$_POST["Question"].'" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
<center><input type="submit" name="submit" value="Envoyer"></center>
</form>
</div>';
9a me fait le meme tour : dès que je rafraichi ma page si par exemple ma dernière question était help?? il va me la mettre dans ma table autant de fois que je réactualiserais.
Et à l'affichage il y a toujours une question de retard...
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h28   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Fiou, j'ai compris ce que tu voulais faire. Je suis pas certain que c'était ce qui était expliqué au début

En gros, tu dois faire les actions dans cet ordre :
1/ J'insère dans ma base la question s'il y en a une
2/ J'affiche la liste de mes questions (donc la question insérée sera présente)
3/ Je propose un formulaire pour insérer une nouvelle question.

De ce qu'on avait compris, tu voulais d'abord dire "l'insertion s'est bien passée" et ensuite on avait compris que tu voulais reremplir le formulaire avec les données insérées.

Pour le F5, si tu veux éviter que ca reposte la question il va falloir, après l'insertion dans la base de données utiliser la fonction header() mais il faut faire ca au tout début du script (avant meme d'afficher du html etc) pour rediriger vers ton script mais sans poster de formulaire (et donc relister toutes les questions)

Le mieux reste de séparer l'affichage de la page dans un script et l'insertion dans la base dans un autre script...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h35   #10
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
okok je vais essayé je n'ai jamais fait de script. C'est du script html?

Pour le header dedans je met :

header("mapage.php")?
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h39   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Oui, en faisant attention au bug de headers already sent
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 10h20   #12
Invité de passage
 
Inscription : septembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 7
Points : 1
Points : 1
j'ai trouvé une solution : j'ai pris le code d'un mini chat en le mélangeant au mien et tout fonctionne voici la solution :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//affichage des questions
echo "<B>
	<div style='padding: 20px;position:absolute' bgcolor='#F5F5F5'>";		
	echo'<p align=center>
      <h1>Questions fréquentes</h1>
   </p>
   <ol>';
 
$SQL = "SELECT * FROM faq ORDER BY hits DESC";
$result = mysql_query($SQL);
while($val = mysql_fetch_array($result)) { 
   echo'<li><A href="javascript:pop('.$val["ID"].')" style="margin-left:20px;color:#8800FF;font-size:16px;">'.$val["Titre"].'</A></li>';
} 
  echo' </ol></div>';
 
 
 
//affichage du formulaire
echo '<div style="margin-left:580px;position:absolute;color:#000066;width:600px;margin-top=10px;">';
 
 
 
 echo'<center style="width:100px;font-size:20px;background-color:#FF0055;font-weight:bold;margin-left:0px"> Posez votre question </center><br/>
<form name="questionfaq" method="post" action="faq.php?insert_question">
<b><i> &nbsp Problème : <br/>&nbsp <textarea name="Question" value="" rows="6" cols="55"></textarea></b></i><br/><br/><br/>
<center><input type="submit" name="submit" value="Envoyer"></center>
</form>
</div>';
 
 
?>
</body></html>
<?
//insertion dans la base de donnée et refresh
if (isset($_GET['insert_question']))
{
if($_POST['Question'] !== "")
{
 
 
$question = $_POST['Question'];
 $sqlfaq = "INSERT INTO faq (Titre) VALUES ('".addslashes($question)."');";
	$resultat2=mysql_query($sqlfaq,$connection);
echo "<meta http-equiv=\"refresh\" content=\"0; url=faq.php\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"0; url=faq.php\">";
}
}
mysql_close($connection);
?>
En tout cas merci à tous pour votre aide
ocane59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h47.


 
 
 
 
Partenaires

Hébergement Web