8792 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila mon soucis, qui, je suis persuadé, est vraiment un probleme bête :

- J'ai mis sur mon site un formulaire mail, qui marche tres bien.
- Seulement, dans mon fichier php du traitement de mail, a la fin j'ai mis : include("contact_end.php");
sachant que contact_end.php est le fichier de remerciement ( "nous avons bien recu votre email ).

Mon soucis est le suivant :
mon site ne contient pas un iframe, mais un cadre

 <?php 
if (!isset($_GET['page'])) $page= 'news'; else $page= $_GET['page']; 
 switch($page)
{
case 'news': include ('news.php3');break;
case 'news_full_01': include ('news_full.php3');break;
case 'contact': include ('contact.php');break;
case 'contact_end': include ('contact_end.php');break;

} 
?> 


ainsi je n'arrive pas a "rediriger' vers mon fichier contact_end.php DANS mon cadre...

aidez moi svp !!!! Smiley bawling

Merci a tous !!
Modifié par lecourtier (21 Nov 2005 - 18:28)
Salut

Tu pourrais nous donner le code php de ta page mail ? merci car la, je ne vois rien qui pourrais nous permettre de t'aider.
Du nouveau !!
La "redirection" marche, mais 'echo' de la page contact_end ne marche pas ... j'imagine que c'est parce que le recharge, dans le lien de redirection, le site en entier !!

Voila le code :

INdex.php

 <div class="iframe">
<?php 
if (!isset($_GET['page'])) $page= 'news'; else $page= $_GET['page']; 
 switch($page)
{
case 'news': include ('news.php3');break;
case 'news_full_01': include ('news_full.php3');break;
case 'contact': include ('contact.php');break;


} 
?>
</div> 


le formulaire de contact (contact.php)

 <form id="form1" name="form1" method="post" action="trait_mail.php" class="police1">
  <table width="100%" border="0" cellspacing="10">
    <tr>
      <td width="24%" align="right">Pr&eacute;nom et nom (ou speudo) </td>
      <td width="76%"><label>
        <input name="nom" type="text" id="nom" class="bordure" />
      </label></td>
    </tr>
    <tr>
      <td align="right">Email</td>
      <td><label>
        <input name="email" type="text" id="email" class="bordure" />
      </label></td>
    </tr>
    <tr>
      <td align="right">Sujet</td>
      <td><label>
        <input name="sujet" type="text" id="sujet" class="bordure" />
      </label></td>
    </tr>
    <tr>
      <td align="right">Message</td>
      <td><label>
        <textarea name="message" cols="28" rows="5" id="message" class="bordure"></textarea>
      </label></td>
    </tr>
	<tr>
	<td></td>
	<td><label>
	  <input type="submit" name="Submit" value="Envoyer" style="background-color:#31343B; color:#ffffff"; class="bordure" />
	  </label>
	</td>
	</tr>
  </table>
  <label></label>
</form> 


le traitement du mail (trait_mail.php)

 <?
mail("webmaster@spinashland.net","[Spinashland] Formulaire de contact","
NOM ET PRENOM : $nom
EMAIL : $email
SUJET : $sujet
NATURE DE LA DEMANDE : $message
","From: $email");
mail ("$email","[Spinashland] Accusé de reception","
Bonjour $nom
Nous avons bien reçu votre message.
Nous vous répondrons dès que possible.
L'équipe de Spinashland
","From: webmaster@spinashland.net");
include("http://www.spinashland.net/index.php?page=contact_end");
?> 


la page de remerciement ( contact_end.php )

 <table width="100%" border="0" class="police1" cellspacing="15">
  <tr>
    <td>Merci de nous avoir contacter <? echo $nom;?>.</td>
  </tr>
  <tr>
    <td>Nous avons pris en compte votre message et vous r&eacute;pondrons dans les plus brefs delais. </td>
  </tr>
  <tr>
    <td class="police2">L'&eacute;quipe de Spinashland </td>
  </tr>
    <tr>
    <td><a href="index.php"><img src="img/back.jpg" width="81" height="20" border="0" /></a></td>
  </tr> 
Ton formulaire fonctionne ?

Car je n'ais jamais vu ce script pour envoyer un mail par php.

J'ai essayé et ca ne fonctionne pas. je te donne le code php pour que ca fonctionne :

<?
$MailTo = "webmaster@spinashland.net";
$MailSubject = "$sujet";
$MailHeader = "From: $email";
$Envoi = 1;
if ($nom == ""){
echo("<ul><li>Nom ou pseudo non renseign&eacute;  !<li></ul>");
$Envoi = 0;
}
else {
$MailBody .= "Nom : $nom\n\n";
}
if ($email == ""){
echo("<ul><li>E-mail non renseign&eacute;  !</li></ul>");
$Envoi = 0;
}
else {
$MailBody .= "E-mail : $email\n\n";
}
if ($sujet_du_mail == ""){
echo("<ul><li>Vous n'avez pas mis de sujet.</li></ul>");
$Envoi = 0;
}
if ($message == ""){
echo("<ul><li>Vous n'avez pas mis de message.</li></ul>");
$Envoi = 0;
}
else {
$MailBody .= "Message : $message\n\n";
}
if ($Envoi == 0) echo("<p>Votre email ne peut etre envoye car vous n'avez pas remplis tout les champs. <a href=\"http://www.spinashland.net/index.php?page=contact_end\">Cliquez ici pour recommencer</a></p>"); 
if ($Envoi == 1) {
mail($MailTo, $MailSubject, $MailBody, $MailHeader);
echo("
<ul>
<li>Nom : $nom</li>
<li>Email : $email</li>
<li>Sujet : $sujet</li>
<li>Message : $message</li>
</ul>
"); echo("<p>Bonjour $nom, nous avons bien recu votre message. Nous vous répondrons des que possible.</p>
<p>L'équipe de Spinashland</p>");
include("contact_end.php");
}
?>


<edit> pour l'include il faut toujours mettre un chemin relatif, jamais un lien dur, donc le lien relatif c'est include("contact_end.php");
Modifié par Super_baloo8 (21 Nov 2005 - 20:50)
Le formulaire ainsi que l'envoie fonctionne parfaitement Smiley cligne

si je met le liens content_end.php,

ca va marcher,

mais c'est la page contact_end.php qui s'affiche....

et JUSTEMENT, je veux qu'elle s'affiche dans le cadre de l'index !! ( div iframe ) Smiley biggrin Smiley biggrin Smiley biggrin Smiley biggrin
Tu as recu mon mail alors ? de test ? Smiley lol

Déja une bonne chose.

Je pense que quand tu dis
a écrit :
si je met le liens content_end.php,

ca va marcher,


Tu voulais dire "ca va PAS marcher".

Tu veux en fait que le contenu de ton fichier contact_end s'affiche dans ta page qui traite le formulaire, alors copie le bout de code que j'ai fais plus haut. je te le résume
include("http://www.spinashland.net/index.php?page=contact_end");

Ca ce n'est pas du tout correct. D'un il faut toujours mettre des "\" entre des " ". Ce qui te donnes :
include(\"http://www.spinashland.net/index.php?page=contact_end\");


Ensuite ne jamais mettre de liens absolu en include car ca perturbe. Donc faire :
include(\"contact_end.php\");


Normalement si tu corrige ca, ca va fonctionner Smiley cligne
Tout d'abord, merci beaucoup de m'aider Super_baloo8 !!

Je confirme : quand je met :
include("contact_end.php");
Ca marche nickel.
Ma page de reponse s'affiche. Le formulaire est envoyé. Le 'echo' fonctionne.
MAIS je veux que cette page de remerciement d'affiche dans le cadre de l'index... donc pas bon.

Si je met :
include(\"contact_end.php\");
le message d'erreur suivant apparait :

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home.2/spinashl/www/trait_mail.php on line 14
Parse error: parse error, unexpected $ in /home.2/spinashl/www/trait_mail.php on line 17

Smiley confused
a écrit :
Tout d'abord, merci beaucoup de m'aider Super_baloo8 !!


Pas de problème Smiley cligne

a écrit :
Si je met :
include(\"contact_end.php\");


Ah oui, désolé les AntiSlash \ sont fait uniquement quand on utilise un print ou echo avec des chose comme :
<?php 
print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"content-Language\" content=\"fr\">
<meta http-equiv=\"content-Type\" content=\"text/html; charset=iso-8859-1\">
?>


Désolé de t'avoir induis en erreur sur ca.

Après si tu veux mettre Contact_end dans une balise div, rien de plus simple :

<div class="iframe">
<?
include("contact_end.php");
?>
</div>


Voila j'espere que tout fonctionnera correctement Smiley cligne Smiley lol
hhuummm .... on approche du but.

Pour plus de facilité voila le site :
http://www.spinashland.net

Le formulaire de contact :
http://www.spinashland.net/index.php?page=contact

Comme tu peux le constater, sur la page d'accueil
( http://www.spinashland.net/index.php )
se trouve au milieu un cadre.... ( avec des news ).

Je voudrais que la page de remerciement (contact_end.php) s'affiche dans ce cadre...

Si je met
<div class="iframe">
<?
include("contact_end.php");
?>
</div>

ca va me creer une div .... ca va pa me mettre contact_end.php dans mon cadre de index Smiley bawling

Merci mille fois Super_baloo8
Ah je vois ce que tu veux, en fait ce que tu voudrais c'est que cette page soit affiché comme une page normale.

Donc ce que tu peux faire, c'est une redirection http apres quelques secondes. Avec ce code :
<meta HTTP-EQUIV="Refresh" CONTENT="10; URL=http://www.spinashland.net/index.php?page=contact_end">


Content="10 c'est le nombre de secondes avant de se faire redirigé vers la page donnée par url=http://...

Je crois que ca serais une solution en attendant mieux Smiley cligne

<edit> Bien sur si tu met cette redirection, tu peux enlever l'include du fichier contact_end.php qui ne sert plus a rien Smiley cligne
Modifié par Super_baloo8 (21 Nov 2005 - 21:57)
Mouais.

L'autre solution "alternative" est :

je rajoute dans index.php :
case 'contact_end': include ('contact_end.php');break;

et dans mon fichier trait_mail.php :
include("http://www.spinashland.net/index.php?page=contact_end");

la redirection se fait bien, j'ai mon message de remerciement dans le cadre, tout est OK .... SAUF echo $nom ne marche pas, normal puisque c'est un lien dur .... mais bon . je crois que je vais m'en passer !
Ok, pour faire passer ta variable $nom, fait la passer par ton lien, donc :
http://www.bts-cpi.info/index.php?page=contact_end&amp<? print("nom=$nom");?>


le &amp est à mettre seulement dans le code de ta page, apres quand ca sera sur ton site tu verras un & simplement Smiley cligne
dans trait_mail.php :

include("http://www.spinashland.net/index.php?page=contact_end");
print ("nom=$nom");


mais ca ne change rien au final ...

ou ai je fais l'erreur ? Smiley confused Smiley lol Smiley confused
Arf tu include, en fait les variable ne peuvent être que imprimmer (print) ou ecrite (echo), donc avec l'include ca ne vas pas passer.

Il faudrais connaitre une solution pour imbriqué plusieurs opérations du style :

include("http://www.spinashland.net/index.php?page=contact_end&ampnom=<? print("$nom"); ?>")


Mais je ne crois pas que cette solution fonctionne Smiley ohwell
Est ce que
 include(http://www.spinashland.net/index.php?page=contact_end&ampnom= + $nom);
ne fonctionnerais pas par hazard ?
non effectivement ca ne marche pas ... Smiley ohwell
c'est dommage j'aurais bien aimer que mon echo marche !

je suis meme pret a supprimer mon include pour une autre instruction ...

Merci pour ta grande patience Super_baloo8 ..

A moins que quelqu'un est une idée ....

sur ces bonnes paroles, je vais faire un grand dodo Smiley lol

mais tout de meme, si on utilise pas les iframes, c'est la grande galère...
non ca marche tj pas...
( tu n'aurais pas oulier des "" par hasard ? , Dreamweaver m'affiche tout en orange ... )
Je viens de regarder ca, mais ca mettonnerais que cela fonctionne meme avec des " ".

a écrit :
Merci pour ta grande patience Super_baloo8 ..


Vraiment aucun problème Smiley cligne

a écrit :
je vais faire un grand dodo Smiley lol


Moi aussi je vais pas tarder

a écrit :
mais tout de meme, si on utilise pas les iframes, c'est la grande galère...


C'est vrai, mais c'est tellement mieux sans Smiley cligne
Salut!
j'ai eu le meme probleme et trouvé une soluce, au cas ou ca t'interesse encore depuis le temps.
tu renvoie, dans ta page de formulaire
<FORM method="POST" action="index.php?page=trait_mail">

Comme ca le php qui va tester les valeur et envoyer le mail sera "inclus" dans ta page, plus besoin de faire un fichier "end",
tu enchaine tout.(et en plus tu as tes variables.)

humm, je sais pas si je me suis tres bien exprimé mais bon.