Rafraichissement Formulaire

Zoox -  
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai créé il y a quelques temps un formulaire classique avec du php qui me permettait d'afficher les commentaires entrés dans le formulaire.
Lors ce que les gens écrivaient leur commentaire et appuyait sur 'envoyer', le commentaire s'affichait directement sur la page du formulaire.

J'ai refait le meme type de formulaire pour mon nouveau site , et la une fois avoir cliqué sur envoyer, le commentaire ne s'affiche pas tout de suite ; c'est uniquement après avoir rafraichit la page que le commentaire s'affiche .

Une idée d'ou peut venr le problème ? du PHP ? du HTML ?
Merci

(dites moi si vous voulez que je post mon code)

8 réponses

arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   475
 
Comme ça impossible de dire.
Faudrait voir du code pour t'en dire plus.
0
Zoox
 
Voila le code de la page du formulaire en question : (j'ai 'désépaissit' le code pour qu'il soit plus clair)

<?php
include("admin/connexion.php"); 
if (isset($_POST['pseudo']) AND isset($_POST['message']) ) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

mysql_query('INSERT INTO mixtape_coms VALUES("", "'.$pseudo.'", "'.$message.'")');
}
}
?>






<?php  $reponse = mysql_query("SELECT * FROM mixtape_info WHERE nom='".$_GET['mixtape']."'"); $donnees = mysql_fetch_array($reponse);  ?>
<FORM method="post" action="mixtape.php?mixtape=<?php echo $donnees['nom']; ?>">

<table border="0">
<tr>
<td>Pseudo*</td>
<td>
<input type="text" name="pseudo" id="pseudo" class="arrondi" value="" size="25" />
</td>
</tr>

<tr>
<td>Message*</td>
<td colspan="2">
<textarea name="message" id="message" class="arrondi" rows="6" style="width:320px;max-width:320px;" ></textarea>
</td>
</tr>

<TR>
<TD COLSPAN=2>
<input  value="Envoyer" type="submit"  />
</TD>
</TR>
</TABLE>

</FORM>



voila, donc j aimerais bien comprendre pourquoi je doit rafraichir ma page pour que les commentaires s'affichent... (j'aimerais qu'ils s'affichent direct après le submit)

Merci
0
avion-f16 Messages postés 19255 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Je n'ai pas lu la discution mais ton code qui enregistre est-il bien avant celui qui affiche ?
0
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   475
 
Ton code que tu donnes as dans une première partie le code pour enregistrer les données envoyé par le formulaire dans la condition qu'il soit envoyé et en dessous le formulaire correspondant.

Mais où est le code qui va t'afficher les données ?
Si tu veux afficher ce que tu viens d'envoyer, il faut au minimum:
echo $_POST['message'];

Ou quelques chose qui te permet de récupérer d'une autre manière ce que tu envoi, par exemple avec une autre requête. Tout dépends de ce que tu veux précisement...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ZooX
 
Je ne vous avais pas mis la partie affichage des commentaires (qui se trouve avant le formulaire) :

<?php
$reponse = mysql_query("SELECT * FROM mixtape_coms WHERE mixtape='".$_GET['mixtape']."'  ORDER BY ID DESC  "); // Requête SQL  
while ($donnees = mysql_fetch_array($reponse) )
{	
?>

<?php echo ($donnees['pseudo']); ?>
<?php echo ($donnees['message']); ?>

<?php	}	 ?>


Je me dit que peut etre le problème vient du fait que le formulaire est en dessous de l'affichage (pour l'instant ça donne ça):
-'Script' affichage
-'Script' enregistrer
-Formulaire

es-ce que le probleme pourrait venir de la ?

Merci
0
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   475
 
Ta partie affichage est faite à partir d'une requête.
Tu demandes en fait d'afficher des données qui ne sont pas encore enregistrer.

Soit, tu l'affiches à partir de la variable du formulaire ($_POST['']), soit tu l'affiches à partir de ta BDD et dans ce cas tu met ta requête après l'enregistrement.
0
avion-f16 Messages postés 19255 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
L'emplacement formulaire ne change rien, c'est côté client.
arthezius t'a tout expliqué.
0
ZooX
 
Merci en effet c'était bien ça.

Tant qu'on y est :
J'aimerais pouvoir enlever le pop-up qui s'affiche lors-ce qu'on vient d'enregistrer le commentaire et que l'on rafraichit la page, ( ce pop-up qui propose de renvoyer le commentaire une 2eme fois... ) ; vous auriez pas un lien, ou une explication vite fait :)

Merci encore
0
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   475
 
Il suffit de placer une redirection php à la fin du script de traitement du formulaire et en supposant que tu n'affiches rien avant.

header('Location: mixtape.php?mixtape='.$_GET['mixtape'].'');
0