Ga naar inhoud

PHP mail confirmation in popup inplaats van _parent?


P0oltj3

Aanbevolen berichten

Hai,

Ik had een vraag over hoe ik het voor elkaar kan krijgen om me php mail confirmation/fail/error in een pop kan laten verschijnen waar je `OK` moet drukken om terug te gaan naar de vorige pagina inplaats van dat alles op de _parent gebeurd.

Hier is me code voor de gemakkelijkheid.

	<div id="contact">
	<h2 class="hp">Contact:</h2>
		<form action="../php/contact.php" method="post">
Uw naam:<br />
			<input type="text" name="naam" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
E-mail:<br />
			<input type="text" name="email" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
Uw bericht:<br />
			<textarea name="bericht" rows="8" cols="60" style="background: #212121; color: #FFFFFF; border: 0px;"></textarea>
<br />
			<input type="submit" value="Versturen" name="submit">
			<input type="reset" value="Wissen" name="reset">
		</form>
</div>

<html>
<body>
<?php 
if(isset($_POST['submit'])){
	$name_to = "Adrian";
	$email_to = "adrian@SMT-Systems.nl";
	$subject = "het onderwerp";

if(!empty($_POST['naam'])){
	$naam = $_POST['naam']; 
}else{
	die("U heeft uw naam niet ingevuld.");
}

if(!empty($_POST['email'])){
	$email = $_POST['email']; 
}else{
	die("U heeft geen e-mail ingevuld.");
}

if(!empty($_POST['bericht'])){
	$bericht = $_POST['bericht']; 
}else{
	die("U heeft niks ingevoerd.");
}
$sjabloon = "
De heer of mevrouw {naam} heeft het formulier ingevuld.<br />
Dit heeft hij/zij gedaan met het volgende email adres: {email}. <br />
Het bericht wat hij/zij stuurde heeft de volgende inhoud:<br />
<br />
{bericht}
<br />
<br />
met vriendelijke groet,<br />
<br />
Systeembeheerder
";
$message = str_replace("{naam}", $naam, $sjabloon);
$message = str_replace("{email}", $email, $message);
$bericht = nl2br($bericht);
$message = str_replace("{bericht}", $bericht, $message);

$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: ' .$name_to. ' <' .$email_to. '>\r\n';
$headers .= 'From: ' .$naam. ' <' .$email. '>\r\n';

if(mail($email_to, $subject, $message, $headers)){
	echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
		<script language="javascript">
			setTimeout('document.location.href = "../sp/contact.html"', 2000);
           </script>
<?php
}else{
	die("De mail kon niet verzonden worden, gelieve de beheerder te contacteren");
}

}else{
	die('U heeft het formulier niet ingevuld');
}
?>
</body>
</html>

Ik wil dat de volgende dingen in popup moeten komen inplaats van _parent.

if(!empty($_POST['naam'])){ 
       $naam = $_POST['naam'];  
   }else{ 
       die("U heeft uw naam niet ingevuld."); 
} 

   if(!empty($_POST['email'])){ 
       $email = $_POST['email'];  
   }else{ 
       die("U heeft geen e-mail ingevuld."); 
} 

   if(!empty($_POST['bericht'])){ 
       $bericht = $_POST['bericht'];  
   }else{ 
       die("U heeft niks ingevoerd."); 
}

if(mail($email_to, $subject, $message, $headers)){ 
       echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier"; 
?> 
           <script language="javascript"> 
               setTimeout('document.location.href = "../sp/contact.html"', 2000); 
           </script> 
<?php 
   }else{ 
       die("De mail kon niet verzonden worden, gelieve de beheerder te contacteren"); 
} 

   }else{ 
       die('U heeft het formulier niet ingevuld'); 
} 

________________________________________________________________________________________

Ik had nog een vraag over hoe ik van dit:

<li><a href="mailto:info@vanveentransportgroep.nl?subject=Contact Email" class="email"><img src="http://www.pc-helpforum.be/f129/img/emailIcon.png" width="25" height="28" align="top" border="0" /></a></li>

Een popup schermpje kan maken met de html email form die hier boven staat. Dus dat de schermpje wel dezelfde grote heeft als me form. Waar door je dus geen lege ruimte rond form krijgen en je niet hoef te scrollen.

aangepast door P0oltj3
Kleine foutjes.
Link naar reactie
Delen op andere sites

Als ik het goed begrijp wil je ervoor zorgen dat de foutcodes (u heeft geen naam ingevuld, geen email etc) als een popupje komen?

het is wel mogelijk om bijvoorbeeld de foutcodes boven het formuliertje te plaatsen.

Het enige wat je dan hoeft toe te voegen boven jouw formulier

dus tussen deze 2 tags

<h2 class="hp">Contact:</h2>
en
<form action="../php/contact.php" method="post">

Daar moet je dan het volgende tussen zetten.

<?
if(isset($_POST['submit'])){
      require("php/contact.php");
}

Let wel op je sp/contact.html moet nu opgeslagen worden als sp/contact.php.

Het enige waar je voor moet zorgen is dat het formulier niet meer naar ../php/contact.php toe moet verwijzen, maar naar zichzelf.

Dat kun je op 2 manieren doen. Door het zelf in te vullen of door PHP het te laten invullen. Ik kies voor het door PHP te laten invullen. want mocht je de adresbalk (de url) naam veranderen, dan zou het formulier niet meer werken.

Je formulier wordt dan dit: (de opener)

<form action="<? echo $_SERVER["PHP_SELF"] ?>" method="post">

Nu moet je in php/contact.php nog een kleine wijziging doen. En dat is het stukje javascript aanpassen. En wel deze regel:

setTimeout('document.location.href = "../sp/contact.html"', 2000);

Hij moet niet meer terug verwijzen naar ../sp/contact.html maar hij hoeft alleen maar te vernieuwen. Dus vervang je deze regel met het volgende:

setTimeout('document.location.href = window.location.href', 2000);

Als je alles gedaan hebt, en je klikt op "Verzenden" dan zou je wanneer er iets fout gaat een melding BOVEN je formulier moeten krijgen met daar de foutcodes. Maar ook wanneer het goed gaat, dan komt hier de tekst boven te staan: "succesvol verzonden" en moet je 2 seconden wachten en wordt je terug doorgestuurd naar een leeg formulier.

Om je foutcode's echt in een popupje te laten vertonen wordt iets ingewikkelder. Er moet dan een stuk javascript geschreven worden om de velden uit te lezen. En een stukje AJAX geschreven te worden om te controleren of de mail verzonden is.

Ik denk dat bovenstaande oplossing ook wel iets is wat je misschien wilt hebben.

(je bedoeling was volgens mij om de fout berichten en succesvol berichten niet meer in een losse pagina weer te laten geven denk ik?)

Ik hoop dat het je lukt!, mocht je hulp nodig hebben? laat het dan maar weten!

Groeten,

leroy

Link naar reactie
Delen op andere sites

Sorry voor late reactie.

ja met _parent bedoelde ik dus dat ie niet naar volgende pagina zou gaan en dan weer terug.

Maar code doet het niet helemaal.

Als ik op verzenden druk (als er niks ingevuld is) komt er netjes code die er moet staan. Maar na 2 seconden in plaats van terug gaan naar contact formulier krijg ik een fatal error code achter het bericht dat ik niks ingevuld is.

U heeft uw naam niet ingevuld.Error in my_thread_global_end(): 1 threads didn't exit

Ik heb me codes beetje bijgewerkt dus ze zien er als volg uit:

<div id="text_c_f_">
	<h2 class="hp">Contact:</h2>

       <?
if(isset($_POST['submit'])){
      require("../php_/c_.php");
      }
      ?>
		<form action="<? echo $_SERVER["PHP_SELF"] ?>" method="post">
Uw naam:<br />
			<input type="text" name="naam" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
E-mail:<br />
			<input type="text" name="email" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
Uw bericht:<br />
			<textarea name="bericht" rows="8" cols="60" style="background: #212121; color: #FFFFFF; border: 0px;"></textarea>
<br />
			<input type="submit" value="Versturen" name="submit">
			<input type="reset" value="Reset" name="reset">
		</form>
</div>

<?php 
if(isset($_POST['submit'])){
	$name_to = "Adrian";
	$email_to = "adrian@SMT-Systems.nl";
	$subject = "het onderwerp";

if(!empty($_POST['naam'])){
	$naam = $_POST['naam']; 
}else{
	die("U heeft uw naam niet ingevuld.");
}

if(!empty($_POST['email'])){
	$email = $_POST['email']; 
}else{
	die("U heeft geen e-mail ingevuld.");
}

if(!empty($_POST['bericht'])){
	$bericht = $_POST['bericht']; 
}else{
	die("U heeft niks ingevoerd.");
}
$sjabloon = "
De heer of mevrouw {naam} heeft het formulier ingevuld.<br />
Dit heeft hij/zij gedaan met het volgende email adres: {email}. <br />
Het bericht wat hij/zij stuurde heeft de volgende inhoud:<br />
<br />
{bericht}
<br />
<br />
met vriendelijke groet,<br />
<br />
Systeembeheerder
";
$message = str_replace("{naam}", $naam, $sjabloon);
$message = str_replace("{email}", $email, $message);
$bericht = nl2br($bericht);
$message = str_replace("{bericht}", $bericht, $message);

$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: ' .$name_to. ' <' .$email_to. '>\r\n';
$headers .= 'From: ' .$naam. ' <' .$email. '>\r\n';

if(mail($email_to, $subject, $message, $headers)){
	echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
		<script language="javascript">
			setTimeout('document.location.href = "window.location.href"', 2000);
           </script>
<?php
}else{
	die("De mail kon niet verzonden worden, gelieve de beheerder te contacteren");
}

}else{
	die('U heeft het formulier niet ingevuld');
}
?>

BTW: en als er gewoon alles ingevoerd is komt er ook netjes bericht dat het gelukt is maar dan stuur ie me naar een 404 site (http://www.smt-connect.com/veen/sp_/window.location.href).

aangepast door P0oltj3
extra informatie toegevoegd
Link naar reactie
Delen op andere sites

Ik had hier een heel groot stuk ingetypt over hoe het komt dat hij die foutcode geeft. Maar drukte op backspace en alles was weg, dus ik zeg het nog maar even in het kort:

Het komt waarschijnlijk door een fout in de PHP handler. Ze geven een aantal mogelijkheden om het op te lossen en dat is door of de provider aan te spreken dat ze de php engine moeten updaten of je zou wat code moeten aanpassen de PHP openen met <?php in plaats van <? kan bijvoorbeeld zo'n probleem zijn.

Hier je code nog maal maar dan bijgewerkt. Ik heb het zo bijgewerkt dat wanneer je een foutcode krijgt de code BOVEN je formulier komt te staan. Want ik geloof dat nu je formulier verdween nadat er een foutje ontstond. Dit is nu ook verholpen.

<?php 
   if(isset($_POST['submit'])){
       $name_to = "Adrian";
       $email_to = "adrian@SMT-Systems.nl";
       $subject = "het onderwerp";

   $sendmail = true;
   if(!empty($_POST['naam'])){
       $naam = $_POST['naam']; 
   }else{
       echo "U heeft uw naam niet ingevuld.";
       $sendmail = false;
   }

   if(!empty($_POST['email'])){
       $email = $_POST['email']; 
   }else{
       echo "U heeft geen e-mail ingevuld.";
       $sendmail = false;
   }

   if(!empty($_POST['bericht'])){
       $bericht = $_POST['bericht']; 
   }else{
       echo "U heeft geen bericht ingevoerd.";
       $sendmail = false;
   }
   $sjabloon = "
De heer of mevrouw {naam} heeft het formulier ingevuld.<br />
Dit heeft hij/zij gedaan met het volgende email adres: {email}. <br />
Het bericht wat hij/zij stuurde heeft de volgende inhoud:<br />
<br />
{bericht}
<br />
<br />
met vriendelijke groet,<br />
<br />
Systeembeheerder
";
   $message = str_replace("{naam}", $naam, $sjabloon);
   $message = str_replace("{email}", $email, $message);
   $bericht = nl2br($bericht);
   $message = str_replace("{bericht}", $bericht, $message);

   $headers = 'MIME-Version: 1.0\r\n';
   $headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
   $headers .= 'To: ' .$name_to. ' <' .$email_to. '>\r\n';
   $headers .= 'From: ' .$naam. ' <' .$email. '>\r\n';

   if($sendmail){
       if(mail($email_to, $subject, $message, $headers)){
           echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
           ?>
           <script language="javascript">
               setTimeout('document.location.href = window.location.href', 2000);
           </script>
           <?php
       }else{
           echo "De mail kon niet verzonden worden, gelieve de beheerder te contacteren";
       }
   }else{
       echo "U heeft het formulier niet volledig ingevuld";
   }
}else{
       echo "U heeft het formulier niet ingevuld";
}
?> 

Je 2e probleem zit hier boven ook al gelijk in verwerkt, Dat kwam omdat je het niet goed had overgenomen.

Het moest zijn:

setTimeout('document.location.href = window.location.href', 2000);

en niet

setTimeout('document.location.href = "window.location.href"', 2000);

(de dubbele quotes om window.location.href)

Als het goed is moet het nu wel lukken. Kijk even naar alle <? in je php scripten (als je die hebt) en vervang die met <?php

Alleen de openers vervangen niet de sluiters. Die moeten gewoon als ?> gesloten worden.

Groeten,

Leroy

Link naar reactie
Delen op andere sites

Even wat tussen door. (antwoord op of dit bij mij nu werk schrijf ik nog vanmiddag denk ik of over een uur wegens drukte)

door de `$bericht = nl2br($bericht);` zouden de `<br />` in sjabloon moeten veranderen in enters maar dat i niet het geval bij Outlook tenminste hij blijft het als <br /> weergeven. Is er nog een code om het in enters te veranderen?

Ik wil ook nog een button maken die verwijst naar een nieuwe venster (niet tabblad) dus eigenlijk een pop-up schermpje die de inhoud laat zien van me contact formulie. Ik heb al de extra website gemaakt voor de `mini` contact formulie en ook de button en alles maar ie wil bestand dan opslaan (Als je op button click), safari opent de folder waar `mini` contact formulie staat. Chrome en hete vos openen het wel zoals het hoort.

de code hier van is:

<form>
<input type="button" value="E-mail" onClick="javascript:popUp('m_c_f_.php')">
</form>

    <script language="JavaScript">
function popUp(url) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=550,height=400,left = 365,top = 312');");
}
</script>

En dit is de `mini` contact formulier:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<link href="../css_/style_.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pop-Up Contact Formulier</title>

</head>

<body>

<div id="text_m_c_f_">
	<h2 class="hp">Contact:</h2>

       <?
if(isset($_POST['submit'])){
      require("../php_/c_.php");
      }
      ?>
		<form action="<? echo $_SERVER["PHP_SELF"] ?>" method="post">
Uw naam:<br />
			<input type="text" name="naam" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
E-mail:<br />
			<input type="text" name="email" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
Uw bericht:<br />
			<textarea name="bericht" rows="8" cols="60" style="background: #212121; color: #FFFFFF; border: 0px;"></textarea>
<br />
			<input type="submit" value="Versturen" name="submit">
			<input type="reset" value="Wissen" name="reset">
		</form>
</div>

</body>
</html>

Heb even tijd gehad of de code het nu wel deed maar jammer genoeg niet ik zou echt niet weten wat ik fout doe volgens mij heb ik jou tips 100% naukeurig gelezen en getypt/gekopieerd.

Ik zal ze nog is sturen misschien zit er nog een fout in:

(Ik stuur deze keer me hele contact formulier site)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<link href="../css_/style_.css" rel="stylesheet" type="text/css" />
	<link href="../css_/items_.css" rel="stylesheet" type="text/css" />
		<script language="JavaScript" src="../js_/menu_.js"></script>
    <script language="JavaScript">
function popUp(url) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=550,height=400,left = 365,top = 312');");
}
</script>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Transportbedrijf A.V. Veen & Zn. -Contact Formulier-</title>
</head>

<body>
<div class="container_c_f_">
 		<div id="logo"></div>

 <div id="lselect">
   <table class="coolmenu" bgcolor="black" border="1" bordercolor="ivory" cellpadding="2" cellspacing="0">
     <tr>
       <td bordercolor="black" id="choice1" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="http://www.pc-helpforum.be/f129/index.htm">Home                        </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice2" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="o_o_.html">Over Ons                 </a>
      	</td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice3" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="w_p_.html">Wagenpark             </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice4" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="o_w_.html">Onderweg               </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice5" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="g_.html">Geschiedenis         </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice6" onmouseover="movein(this)" onmouseout="moveout(this)">
       	<a href="c_f_.php">Contact                    </a>
       </td>
     </tr>
   </table>
 </div>

<div id="text_c_f_">
	<h2 class="hp">Contact:</h2>

       <?
if(isset($_POST['submit'])){
      require("../php_/c_.php");
      }
      ?>
		<form action="<? echo $_SERVER["PHP_SELF"] ?>" method="post">
Uw naam:<br />
			<input type="text" name="naam" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
E-mail:<br />
			<input type="text" name="email" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
<br />
Uw bericht:<br />
			<textarea name="bericht" rows="8" cols="60" style="background: #212121; color: #FFFFFF; border: 0px;"></textarea>
<br />
			<input type="submit" value="Versturen" name="submit">
			<input type="reset" value="Reset" name="reset">
		</form>
</div>

 <div id="box_c_text_">
   <p id="box_c_">Contact:</p>
   <ul>
     <li>A.V. Veen  & Zn. Transport B.V.</li>
     <ul>
       <li>Mastenmakersweg 10</li>
       <li>1786 PB Den Helder</li>
     </ul>
     <br />
     <li>Telefoon nummer:</li>
     <ul>
       <li>0223-740000</li>
     </ul>
     <li>Jacob van Veen:</li>
     <ul>
       <li>06-53354433</li>
     </ul>
     <li>Klaas van Veen:</li>
     <ul>
       <li>06-53399694</li>
     </ul>
     <li>Fax nummer:</li>
     <ul>
       <li>0223-627903</li>
     </ul>
     <li>E-mail:</li>
     <ul>
<li><form>
<input type="button" value="E-mail" onClick="javascript:popUp('m_c_f_.php')">
</form></li>
     </ul>
   </ul>
 </div>
</div>
</body>
</html>

<?php 
if(isset($_POST['submit'])){
	$name_to = "Transportbedrijf A.V. Veen & Zn.";
	$email_to = "adrian@SMT-Systems.nl";
	$subject = "Contact Formulier";

$sendmail = true;
if(!empty($_POST['naam'])){
	$naam = $_POST['naam']; 
}else{
	die("U hebt uw naam niet ingevuld.");
	$sendmail = false;
}

if(!empty($_POST['email'])){
	$email = $_POST['email']; 
}else{
	die("U hebt geen e-mail ingevuld.");
	$sendmail = false;
}

if(!empty($_POST['bericht'])){
	$bericht = $_POST['bericht']; 
}else{
	die("U hebt geen bericht ingevuld.");
	$sendmail = false;
}
$sjabloon = "
De heer of mevrouw {naam} heeft het formulier ingevuld.<br />
Dit heeft hij/zij gedaan met het volgende email adres: {email}.<br />
Het bericht wat hij/zij stuurde heeft de volgende inhoud:<br />
<br />
{bericht}
<br />
<br />
met vriendelijke groet,
<br />
Systeembeheerder
";
$message = str_replace("{naam}", $naam, $sjabloon);
$message = str_replace("{email}", $email, $message);
$bericht = nl2br($bericht);
$message = str_replace("{bericht}", $bericht, $message);

$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: ' .$name_to. ' <' .$email_to. '>\r\n';
$headers .= 'From: ' .$naam. ' <' .$email. '>\r\n';

if($sendmail){
if(mail($email_to, $subject, $message, $headers)){
	echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
		<script language="javascript">
			setTimeout('document.location.href = window.location.href', 2000);
           </script>
<?php
       }else{
           echo "De mail kon niet verzonden worden, gelieve de beheerder te contacteren";
       }
   }else{
       echo "U heeft het formulier niet volledig ingevuld";
   }
}else{
       echo "U heeft het formulier niet ingevuld";
}
?>

aangepast door P0oltj3
bijwerkingen aan code en extra informatie
Link naar reactie
Delen op andere sites

Het over de mini contactformulier snap ik nog even niet helemaal.

Ik heb het script nog eens even gekopieerd en aangepast zodat het bij mij hier thuis goed werkt naar behoren.

Ik heb alleen wel wat kleine wijzigingen aangebracht.

Het formulier zelf zit nu in een los bestandje. Dit, zodat wanneer je met een los formuliertje wilt werken je het maar 1x hoeft aan te passen als je bijvoorbeeld ook nog een bestandje of iets dergelijks wilt laten meesturen.

Het formulier zelf wordt dan ook net zoals dat php script geincludeert in de pagina. Dit zul je wel zien hoe het ongeveer werkt.

Het probleem dat die '<br />' werdt weergegeven is eruit. Dit kwam onderandere door de headers wat ik hier onder vertel.

Ook zat er een probleem in met de headers (als je nu een mailtje verstuurde kwam deze aan met de maildeamon waar hij doorheen gaat als verzender). Dat komt omdat je iets hebt weggehaald en anders hebt neergezet, maar dat moet je echt niet doen. Want die enkele quotes en dubbele quotes hebben in PHP juist een andere betekenis.

enkel = laat zien wat er tussen staat

dubbel = voer de code uit die ertussen staat.

Voorbeeldje:

$naam = "test";
echo "hallo $naam";

Dit zal gewoon zijn: "hallo test"

maar dit:

$naam = "test";
echo 'hallo $naam';

Zal als output geven: "hallo $naam"

Dat is het verschil tussen dubbele en enkele quotes

Maar terug komen op je probleem nog:

Het contactformulier is dit geworden:

<?php 
if(isset($_POST['submit'])){
   $name_to = "Transportbedrijf A.V. Veen & Zn.";
   //$email_to = "adrian@SMT-Systems.nl";
   $email_to = "youremail@domain.com";
   $subject = "Contact Formulier";

   $sendmail = true;
   if(!empty($_POST['naam'])){
       $naam = $_POST['naam']; 
   }else{
       echo "U hebt uw naam niet ingevuld.";
       $sendmail = false;
   }

   if(!empty($_POST['email'])){
       $email = $_POST['email']; 
   }else{
       echo "U hebt geen e-mail ingevuld.";
       $sendmail = false;
   }

   if(!empty($_POST['bericht'])){
       $bericht = $_POST['bericht']; 
   }else{
       echo "U hebt geen bericht ingevuld.";
       $sendmail = false;
   }


   if($sendmail){
   $sjabloon = "
De heer of mevrouw {naam} heeft het formulier ingevuld. <br />
Dit heeft hij/zij gedaan met het volgende email adres: {email}.<br />
Het bericht wat hij/zij stuurde heeft de volgende inhoud:<br />
<br />
{bericht}<br />
<br />
met vriendelijke groet,<br />
<br />
Systeembeheerder
";
   $message = str_replace("{naam}", $naam, $sjabloon);
   $message = str_replace("{email}", $email, $message);
   $bericht = nl2br($bericht);
   $message = str_replace("{bericht}", $bericht, $message);

   $headers  = 'MIME-Version: 1.0' . "\r\n";
   $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
   $headers .= 'To: ' .$name_to. ' <' .$email_to. '>' . "\r\n";
   $headers .= 'From: ' .$naam. ' <' .$email. '>' . "\r\n";

   if(mail($email_to, $subject, $message, $headers)){
       echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
           <script language="javascript">
               setTimeout('document.location.href = window.location.href', 2000);
           </script>
<?php
       }else{
           echo "De mail kon niet verzonden worden, gelieve de beheerder te contacteren";
       }
   }else{
       echo "U heeft het formulier niet volledig ingevuld";
   }
}
?>

Deze werkt, je moet niets meer in de code veranderen. Enige wat je nog kan veranderen is het sjabloon. De rest staat goed zoals het nu is.

De html code die je moet uitvoeren op jouw pagina is dit geworden:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
       <link href="../css_/style_.css" rel="stylesheet" type="text/css" />
       <link href="../css_/items_.css" rel="stylesheet" type="text/css" />
           <script language="JavaScript" src="../js_/menu_.js"></script>
    <script language="JavaScript">
function popUp(url) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=550,height=400,left = 365,top = 312');");
}
   </script>

       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
           <title>Transportbedrijf A.V. Veen & Zn. -Contact Formulier-</title>
   </head>

<body>
   <div class="container_c_f_">
         <div id="logo"></div>

 <div id="lselect">
   <table class="coolmenu" bgcolor="black" border="1" bordercolor="ivory" cellpadding="2" cellspacing="0">
     <tr>
       <td bordercolor="black" id="choice1" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="http://www.pc-helpforum.be/f129/index.htm">Home                        </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice2" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="o_o_.html">Over Ons                 </a>
          </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice3" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="w_p_.html">Wagenpark             </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice4" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="o_w_.html">Onderweg               </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice5" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="g_.html">Geschiedenis         </a>
       </td>
     </tr>
     <tr>
       <td bordercolor="black" id="choice6" onmouseover="movein(this)" onmouseout="moveout(this)">
           <a href="c_f_.php">Contact                    </a>
       </td>
     </tr>
   </table>
 </div>

   <div id="text_c_f_">
       <?
       require("contactformulier.php");
       ?>
   </div>

 <div id="box_c_text_">
   <p id="box_c_">Contact:</p>
   <ul>
     <li>A.V. Veen  & Zn. Transport B.V.</li>
     <ul>
       <li>Mastenmakersweg 10</li>
       <li>1786 PB Den Helder</li>
     </ul>
     <br />
     <li>Telefoon nummer:</li>
     <ul>
       <li>0223-740000</li>
     </ul>
     <li>Jacob van Veen:</li>
     <ul>
       <li>06-53354433</li>
     </ul>
     <li>Klaas van Veen:</li>
     <ul>
       <li>06-53399694</li>
     </ul>
     <li>Fax nummer:</li>
     <ul>
       <li>0223-627903</li>
     </ul>
     <li>E-mail:</li>
     <ul>
<li><form>
<input type="button" value="E-mail" onClick="javascript:popUp('contactformulier.php')">
</form></li>
     </ul>
   </ul>
 </div>
</div>
</body>
</html>

En het volgende is een nieuw bestandje. Je moet hier wel mee zorgen dat het bestandje op een vaste plek staat. Ik zou dit bestandje op de plek zetten van bovenstaande html code.

Los contactformulier

<h2 class="hp">Contact:</h2>
<?
   require("contact.php");
?>
<form action="<? echo $_SERVER["PHP_SELF"] ?>" method="post">
   Uw naam:<br />
   <input type="text" name="naam" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
   <br />
   E-mail:<br />
   <input type="text" name="email" size="20" style="background: #212121; color: #FFFFFF; border: 0px;" />
   <br />
   Uw bericht:<br />
   <textarea name="bericht" rows="8" cols="60" style="background: #212121; color: #FFFFFF; border: 0px;"></textarea>
   <br />
   <input type="submit" value="Versturen" name="submit">
   <input type="reset" value="Wissen" name="reset">
</form>

En ik zou alleen zelf geen popups gebruiken. dus het window.open commando in javascript. Dit wordt als een popup beschouwd en bijna iedereen heeft een popup blocker. Dus dat is niet slim, en dat commando is ook al redelijk uit de tijd.

Wat je zou kunnen doen is het volgende:

Op de plek BOVEN je formulier (niet in het losse contactformulier.php) zet je de volgende code:

<a name="contact"></a>

Je zou denken, hier missen wat dingen. Dat klopt, maar dit mag je gebruiken.

Helemaal onderin bij jouw popupje welke je nu gebruikt zet je een linkje naar het contactformulier alleen dan zet je er #contact achter.

Bijvoorbeeld zo:

<a href="contactformulier.php#contact">Email</a>

Hiermee zal wanneer je op die pagina komt de pagina automatisch naar beneden scrollen naar waar jij dat eerste stukje code hebt neer gezet.

Als je het nog mooier wilt maken, dan zou je jezelf een beetje moeten verdiepen in Jquery. Hier kun je namelijk hele mooie javascript en AJAX effecten mee uitvoeren.

één van deze functies is bijvoorbeeld een nieuwe pagina opvragen maar de pagina niet laten verversen.

Extra:

Jouw pagina uitgetest op mijn server: Transportbedrijf A.V. Veen & Zn. -Contact Formulier- (Ik heb het script voor jouw even een klein beetje aangepast zodat het mailtje verzonden wordt naar het emailadres wat je invult ... dit wegens dat ik geen spam in mijn mailbox wil hebben)

Hetgeen wat ik bedoel met Jquery: Leroy Baeyens.nl

Die website is nog niet volledig af, maar als je daar op een van die linkjes klikt zie je het effect van jquery.

Ik hoop dat het je lukt,

Groeten,

Leroy

aangepast door leroy
Snel fouten eruit gehaald, niet uitgetest na veranderen van headers
Link naar reactie
Delen op andere sites

  • 3 weken later...

Hai de PHP mail doet het nu perfect heel erg bedankt daar voor.

Ik had nog alleen 2 vragen/problemen.

1. De compatibiliteit voor Anchor met IE lijkt niet te werken als ik op anchor button click gebeurd er niks met IE maar er gebeurd wel de goede als ik een andere browser gebruik dan gaat ie gewoon netjes naar de contact formulier website.

2. Als er iets niet word ingevuld in de Php form krijg ik gewoon netjes een bericht boven de naam wat er niet is ingevuld maar gelijker tijd krijg ik ook onder aan me pagina een error `Error in my_thread_global_end(): 1 threads didn't exit ` en ik wil niet dat de Error dan elke keer uitspringt.

Mvg,

Adrian

Link naar reactie
Delen op andere sites

Dat met die A-tag zou gewoon moeten werken. Het is iets wat elke browser moet ondersteunen. Hoe dat komt dat hij het niet doet onder IE is mij een raadsel.

Staat er ook nog een regelnummer bij, bij wat de foutcode is? Want bij mij geeft hij deze foutcode niet.

Als er een regelnummer staat, moet je ook even erbij vertellen wat er op die regel staat. Dan is het mogelijk om de fouten te blokkeren. Dat ze niet weergegeven worden.

Als het klopt dat er op die regel: "mail(" staat. Dan kan het zijn dat de server geen mailondersteuning heeft. Maar dan zou de foutcode niet onder maar boven het formulier moeten staan.

Groeten,

Leroy

Link naar reactie
Delen op andere sites

Ja ik vind het ook al best vreemd misschien komt het door dat ik de 9 beta gebruik dat daar een bug in zit.

[uPDATE]

Nee het komt niet door de beta versie heb het ook nog getest op een 8 versie en had het zelfde probleem.

[/uPDATE]

Ik had wel een idee om een if else in te zetten dus als de site met IE geopend word dat de knop niet met anchor word gebruikt maar met een simpel a hrefje maar de probleem is weer dat ik niet zo best ben met JS zou jij het voor me willen schrijven anders? Gewoon de basis structuur en de linkjes kan ik zelf wel bijwerken.

Enig wat ik van de Error weet is dat ie dit weergeeft :

Error in my_thread_global_end(): 1 threads didn't exit
.

En het komt echt gewoon onder me container dat vind ik het vreemds.

aangepast door P0oltj3
Extra informatie en een update
Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.