Partage

PHP - rafraîchir une page apres l'envoi d'un formulaire

Le 30 juillet 2008 à 22:28:31

Salut à tous! J'ai un petit souci avec les formulaires.
J'ai créé un formulaire qui, lorsqu'on presse le bouton "submit", l'autre partie du formulaire apparait plus bas. Comme la première partie du formulaire est constituée de boutons de type "radio", j'aimerais qu'après que l'on aie cliqué sur le bouton submit, php enregistre le choix que l'utilisateur a sélectionné.

Voici un exemple de ce à quoi mon script ressemble:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="choix1">Choix 1</label><input type="radio" name="mon_choix" value="choix1">
<label for="choix2">Choix 2</label><input type="radio" name="mon_choix" value="choix2">
<input type="submit" value="continuer">
<?php
if(isset($_POST['mon_choix']))
{
if($_POST['mon_choix'] == 'choix1')
{
include "suite_formulaire1.php";
}
else
{
include "suite_formulaire2.php";
}
}

J'ai pensé que peut-être en faisant:

<?php session_start(); ?>
<html>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="choix1">Choix 1</label><input type="radio" name="mon_choix" value="choix1" <?php if($_SESSION['selection'] == 'choix1'){?>checked="checked"<?php }?> />
<label for="choix2">Choix 2</label><input type="radio" name="mon_choix" value="choix2" <?php if($_SESSION['selection'] == 'choix2'){?>checked="checked"<?php }?> />/>
<input type="submit" value="continuer"/>
<?php
if(isset($_POST['mon_choix']))
{
if($_POST['mon_choix'] == 'choix1')
{
$_SESSION['selection'] = 'choix1';
include "suite_formulaire1.php";
}
elseif($_POST['mon_choix'] == 'choix2')
{
$_SESSION['selection'] = 'choix2';
include "suite_formulaire2.php";
}
}
</html>

Ca fonctionne, mais seulement après avoir rafraichi la page. Existe-t-il une solution pour rafraichir la page en appuyant sur le bouton "submit" ou une meilleure facon d'afficher le choix de l'utilisateur apres avoir appuyé sur le bouton?

Merci à tous et bonne journée!
Publicité
Le 30 juillet 2008 à 22:28:31
Le 30 juillet 2008 à 22:31:34

Je vois pas le problème du premier code?
C'est parce qu'il n'y a rien quand on n'a rien coché?
Le 30 juillet 2008 à 22:32:36

oui exactement, je veux enregistrer le choix de l'utilisateur...
Le 30 juillet 2008 à 22:38:45

Pour rafraichir la page automatiquement tu remplace :
include "suite_formulaire1.php"; et include "suite_formulaire1.php";

par le javascript suivant :

echo "<script>window.location.replace(\"suite_formulaire1.php\")</script>";

et

echo "<script>window.location.replace(\"suite_formulaire2.php\")</script>";

à essayer c pas peut être la meilleure solution :euh:
Le 30 juillet 2008 à 22:51:21

En utilisant ta méthode, au lieu de poursuivre le formulaire sur la même page, il charge la page suite_formulaire1 ou 2 sans que les choix précédents restent affichés... Y a-t-il d'autres solutions ou est-ce moi qui a mal compris ce que tu voulais faire?
Merci de vos réponses!
Le 30 juillet 2008 à 23:19:04

Citation : zotrik

En utilisant ta méthode, au lieu de poursuivre le formulaire sur la même page, il charge la page suite_formulaire1 ou 2 sans que les choix précédents restent affichés... Y a-t-il d'autres solutions ou est-ce moi qui a mal compris ce que tu voulais faire?
Merci de vos réponses!



Oui apparemment j'ai pas bien compris ce que tu voulais exactement :honte:

Mais je me suis basée sur ce que tu as dit

Citation : zotrik

Ca fonctionne, mais seulement après avoir rafraichi la page



Alors on recharge toute la page et non pas la partie du formulaire en question donc le code devient :

<?php session_start(); ?>
<html>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="choix1">Choix 1</label><input type="radio" name="mon_choix" value="choix1" <?php if($_SESSION['selection'] == 'choix1'){?>checked="checked"<?php }?> />
<label for="choix2">Choix 2</label><input type="radio" name="mon_choix" value="choix2" <?php if($_SESSION['selection'] == 'choix2'){?>checked="checked"<?php }?> />/>
<input type="submit" value="continuer"/>
<?php
if(isset($_POST['mon_choix']))
{
if($_POST['mon_choix'] == 'choix1')
{
$_SESSION['selection'] = 'choix1';
include "suite_formulaire1.php";
}
elseif($_POST['mon_choix'] == 'choix2')
{
$_SESSION['selection'] = 'choix2';
include "suite_formulaire2.php";
}
echo "<script>window.location.replace(\"mapage.php\")</script>";
}
</html>


à tester aussi :euh:
Le 30 juillet 2008 à 23:27:04

Moi j'avais un problème pour raffraichir une page car mon navigateur utilisait le cache.
Ensuite j'ai trouvé cette fonction, que tu place avant le code html, en début de page :

Citation : Pas de titre

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
?>



Depuis, les pages se raffraichisse toutes seules. Je sais pas si ça te sera utile.
Bon courage
Le 30 juillet 2008 à 23:38:59

Pinkish: encore merci de ta réponse, mais quand je teste ton code, la page réagit exactement comme le code que j'avais écris au tout début: c'est-à-dire que si je sélectionne un choix et que j'appuie sur "submit", les choix ne sont pas enregistrés. Pour que les variables de session soient bien affectées, il faut appuyer sur "rafraîchir" pour que le choix que l'utilisateur a entré s'affiche.D'après moi le problème ne vient pas de ton code, mais des variables de session. en fait, ce qui reglerais mon problème, c'est que mon bouton submit cliques rafraîchirais deux fois la page; je m'explique: si je cliques deux fois sur ce bouton, le bouton radio se met à la bonne place...

RomG: Merci aussi de ta réponse, mais cela ne change pas le comportement de la page.

Merci de votre patience :)
Le 23 décembre 2010 à 16:21:16

Je voudrais savoir comment faire pour rafraichir la frame en-dessous de celle de mon fichier quand j'appuis sur un bouton.

explication :
j'ai ma frame questionnaire avec un bouton submit.
En dessous j'ai ma frame avec un tableau qui comprend toutes les donnees du questionnaire.
et je veux que quand j'appui sur le dernier bouton du questionnaire ca actualise ma frame du tableau

merci d'avance

PHP - rafraîchir une page apres l'envoi d'un formulaire

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown