Se connecter avec
S'enregistrer | Connectez-vous

afficher la suite d'un formulaire dans même frame php

Dernière réponse : dans Programmation

Bonjour,

Suite à une saisie de formulaire pour contact dans mon site, je veux afficher une page de confirmation (remerciement) d'envoie du message. Mais je n'arrive pas à afficher cette page en php dans la même frame ..... :cry: 

Ma première page avec la frame (index.php):

  1. <div class="conteneur">
  2. <div class="menu">
  3. <a class="bouton" href="index.php?page=accueil">Accueil</a><br>
  4. <a class="bouton" href="index.php?page=presentation">Présentation</a><br>
  5. <a class="bouton" href="index.php?page=contact">Contact</a></ul>
  6. </div>
  7.  
  8. <div class="frame">
  9. <?php
  10. $pages=array(
  11. 'accueil'=>'accueil.htm',
  12. 'presentation'=>'presentation.htm',
  13. 'contact'=>'contact.htm'
  14. );
  15. if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
  16. include $pages[$_GET['page']];
  17. else
  18. include 'accueil.htm';
  19. ?>
  20. </div>
  21. </div>


Mon formulaire de contact (contact.htm):

  1. <FORM method="POST" action="contact.php">
  2. <P>Votre nom:<br>
  3. <INPUT type="text" name="nom" size=30>
  4. </p>
  5. <P>Votre adresse E-Mail:<br>
  6. <INPUT type="text" name="email" size=30>
  7. </p>
  8. <P>Votre message:<br>
  9. <textarea name="message" cols=74 rows=8></textarea>
  10. </p><INPUT type="submit" value="Envoyer">       <input type="reset" value="Effacer">
  11. </FORM>


Le script d'envoie du message (contact.php):

  1. <?php
  2. $msg = "De:\t$nom\n";
  3. $msg .= "E-Mail:\t$email\n\n";
  4. $msg .= "Message:\t$message\n\n";
  5. $recipient = "toto@toto..fr";
  6. $subject = "Contact";
  7. $mailheaders = "From: Mon test de formulaire<> \n";
  8. $mailheaders .= "Reply-To: $email\n\n";
  9. mail($recipient, $subject, $msg, $mailheaders);
  10.  
  11. header("Location: remerciement.php");
  12. ?>


Et ma page de remerciement (remerciement.php) que je n'arrive pas à faire apparaitre dans la même frame. Elle vient remplacer la page précédente ..... :

  1. <?php
  2. echo "<HTML><HEAD>";
  3. echo "<link rel=stylesheet type=text/css href=kotoka.css>";
  4. echo "<TITLE>Formulaire envoyer!</TITLE></HEAD><BODY>";
  5. echo "<div class=frame>";
  6. echo "<H1 align=center>Merci, $nom </H1>";
  7. echo "<P align=center>";
  8. echo "Votre formulaire à bien été envoyé !<P>";
  9. echo "</div>";
  10. echo "</BODY></HTML>";
  11. ?>


Merci pour votre aide !
Lassé par la pub ? Créez un compte

batchy a dit :
  1. header("Location: remerciement.php" );
Il faut une URL absolue dans le header Location.


Merci Batchy !!!! Mais ça marche pas ! La page remerciement.php remplace la page affichée, et ne s'affiche donc pas dans la frame !!!! :( 

Effectivement c'est fini les frames... :ange: 

Hum sans vouloir te vexer, tu n'utilise pas de FRAME ...mais des DIV :sweat:  !!! Grosse différence !!

Les frames se font avec la balise '<frameset>' et se compose d'une page qui en appel d'autre (un peu comme un 'include' en php).

Ce que tu essaye de faire n'est pas possible uniquement avec HTML/PHP, il faut passer par Javascript et plus précisément de l'AJAX.

Voilà ce dont tu as besoin :

Fonction Javascript (AJAX) pour charger des pages dans une zone copiée de quelque part un jour :sweat:  et modifiée par mes soins

  1. function charge_page(contener,contenu)
  2. {
  3. cont = document.getElementById(contener);
  4. // EFFACE LE CONTENU DES DIV
  5. cont.innerHTML = "";
  6. if(window.XMLHttpRequest) // FIREFOX
  7. xhr_object = new XMLHttpRequest();
  8. else if(window.ActiveXObject) // IE
  9. xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  10. else
  11. return(false);
  12.  
  13. // CONTROLE DE L'ETAT DE LA REQUETE
  14. // CHAQUE CHANGEMENT D'ETAT AFFICHE UNE LIGNE
  15. xhr_object.onreadystatechange = function()
  16. {
  17. if(xhr_object.readyState == 4)
  18. {
  19. cont.innerHTML = '';
  20. // CONTROLE LE STATUS (ERREUR 404, ETC)
  21. if(xhr_object.status == 200)
  22.  
  23. cont.innerHTML += xhr_object.responseText;
  24. else
  25. cont.innerHTML +="Error code " + xhr_object.status;
  26. }
  27. };
  28.  
  29. // APPELLE LA PAGE
  30. xhr_object.open("GET", contenu, true);
  31. xhr_object.send(null);
  32. }


Utilisation :

Mettre la fonction ci-dessus dans '<head>' avec les balises <script language="javascript"></script>

Pour appeler une page c'est très simple :

  1. <a href="javascript:charge_page('conteneur','contenu');">Test</a>

ou
  1. <a href="#" onClick="charge_page('conteneur','contenu');">Test</a>


Il te suffis juste de renseigner les champs 'contener' et 'contenu' avec ce que tu désire

Example :
  1. <a href="javascript:charge_page('frame','remerciement.php');">Merci</a>


Voilà, j'espère que ça a pu t'aider !

Bonne chance !
Lassé par la pub ? Créez un compte