FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » afficher la suite d'un formulaire dans même frame php
 

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

Il y a 384 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : afficher la suite d'un formulaire dans même frame php
 
Plus d'informations

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):
 

Code :
  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. <div class="frame"> 
  8. <?php 
  9. $pages=array(
  10.    'accueil'=>'accueil.htm',
  11.    'presentation'=>'presentation.htm',
  12.    'contact'=>'contact.htm'
  13. );
  14. if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
  15.    include $pages[$_GET['page']];
  16. else
  17.    include 'accueil.htm';
  18. ?>
  19. </div>
  20. </div>


 
Mon formulaire de contact (contact.htm):
 

Code :
  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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="Effacer">
  11. </FORM>


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

Code :
  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. header("Location: remerciement.php" );
  11. ?>


 
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 ..... :
 

Code :
  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 !

pourquoi faire cent fois la même chose ?
Plus d'informations

Code :
  1. header("Location: remerciement.php" );

Il faut une URL absolue dans le header Location.

Plus d'informations

Batchy a écrit :

Code :
  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 !!!!  :(  

G.M.G.V.S.O.
Plus d'informations

Mais c'est finis les frames ... depuis des années ...
Ca n'a que des inconvenients !!


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Si seulement les ordinateurs pouvaient souffrire..
Plus d'informations

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
 

Code :
  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. // CONTROLE DE L'ETAT DE LA REQUETE
  13. // CHAQUE CHANGEMENT D'ETAT AFFICHE UNE LIGNE
  14. xhr_object.onreadystatechange = function()
  15. {
  16. if(xhr_object.readyState == 4)
  17. {
  18.      cont.innerHTML = '';
  19.      // CONTROLE LE STATUS (ERREUR 404, ETC)
  20. if(xhr_object.status == 200)
  21. cont.innerHTML += xhr_object.responseText;
  22. else
  23. cont.innerHTML +="Error code " + xhr_object.status;
  24. }
  25. };
  26. // APPELLE LA PAGE
  27. xhr_object.open("GET", contenu, true);
  28. xhr_object.send(null);
  29. }


 
Utilisation :
 
Mettre la fonction ci-dessus dans '<head>' avec les balises <script language="javascript"></script>
 
Pour appeler une page c'est très simple :
 

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


ou

Code :
  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 :

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


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


Message édité par Barbujack le 16-04-2008 à 16:42:23

---------------
Je mange des radis...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » afficher la suite d'un formulaire dans même frame php
 

Annonces Google
Publicité
Les ressources relatives