Email Formulier

Status
Niet open voor verdere reacties.

Jingles

Gebruiker
Lid geworden
13 feb 2003
Berichten
54
Hallo,

Ik ben al een tijdje opzoek naar een php email formulier maar kan nog niet vinden wat ik zoek, wie kan me helpen?
zelf ben ik nog niet zo thuis met php.

Als ik een formulier invul moet hij alle velden controleren en ook aangeven wat niet ingevuld is. deze melding moet boven het formulier komen en niet op een andere pagina.

Als alles ingevuld is moet hij een andere pagina laten zien.

Groetjes Edwin
 
Laatst bewerkt:
een bedankt voor u mail pagina.

of een tekst dat het verzenden gelukt is
 
Code:
<?php
/*
*/

 if($_GET['p'] == 'send')
  {
   if($_POST['submit'])
    {
     $error = "";
     if(empty($_POST['naam']))
      { $error .= 'U moet uw naam invullen!<br>'; }
     if(empty($_POST['email']))
      { $error .= 'U moet uw email invullen!<br>'; }
     if(empty($_POST['bericht']))
      { $error .= 'U moet uw bericht invullen!<br>'; }
     if(!empty($error))
      {
     echo '<b>U bent het volgende vergeten!</b><br><br>'.$error;
      }
     else
      {
      $aan = "info@domein.com"; //HIER JOU EMAIL-ADRES
      $van = $_POST['email'];
      $ond = "Reactie via het contact formulier";
      $ber = $_POST['bericht'];
      ini_set(sendmail_from, $van);
      mail($aan,$ond,$ber);
      echo '<b>Beste '.$_POST['naam'].',<br><br>Uw bericht is verzonden naar ons!<br>U krijgt zo spoedig mogelijk antwoord!';
      }
    }
 }
 echo '<form action=?p=send method=POST>'; //REST VAN JE FORMULIER ER ACHTERPLAKKEN
?>

Zoiets?
 
PHP:
 echo '<form action=?p=send method=POST>'; //REST VAN JE FORMULIER ER ACHTERPLAKKEN
?>

Erg handig om de TS de rest in te laten vullen terwijl jij al $_POST-variabelen hebt gemaakt... Moet je dus wel even vermelden welke hij moet gebruiken...

Ook loopt de foutcontrole een beetje in de soep... Je kunt beter steeds een elseif gebruiken want nu is het zo dat wanneer er geen naam en bericht zijn ingevuld de variabele $error gewoon wordt overschreven en je dus alleen de error van het bericht te zien krijgt. Dus dan is de controle op de naam onzin geweest omdat je daar toch niets voor weergeeft.

Gebruik je de elseif dan gaat hij niet verder met controleren van de invoer en geeft meteen de error, scheelt weer wat rekenwerk.

Nog mooier zou zijn om met een array te werken zodat je alle errors in één keer kunt laten weergeven.
PHP:
$error = array();
$error_count = 0;

if(empty($_POST['naam']))
{
  $error[] = "U heeft geen naam ingevuld.";
  $error_count++;
}
if(empty($_POST['email']))
{
  $error[] = "U heeft geen e-mailadres ingevuld.";
  $error_count++;
}
if(empty($_POST['bericht']))
{
  $error[] = "U heeft geen bericht ingevuld.";
  $error_count++;
}

if($error_count == 0)
{
  //mail-functie
}
else
{
  foreach($error AS $melding)
  {
    echo $melding .'<br />';
  }
}
 
Sorry, je hebt gelijk. Ik heb over de .= heen gelezen. :confused:

Tip voor de volgende keer: Gebruik de
PHP:
-tag, dan wordt het beter weergegeven dan bij de [code]-tag
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan