Hoewel onderstaand webformulier prima, wil ik nog het eea gebruikersvriendelijker maken dan nu het geval is.
Vanaf een YT-video heb ik onderstaande code bij de regels 54, 80 en 120 vandaan gehaald.
Het zorgt voor dat of het formulier wordt laten zien of het succesbericht, nadat het formulier succesvol is verzonden.
Het succesbericht wordt nu bovenaan weergegeven en ik wil het in het midden van het pagina.
Ik zit eraan te denken om het succesbericht aan een variabel te koppelen, maar weet niet qua logica waar het variabel te plaatsen.
Iemand een idee?



<?php

// define variables and set to empty values
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (empty($_POST["voornaam"])) {
    $errors['voornaam'] = "Graag uw voornaam invullen";
  } else {
    $voornaam = test_input($_POST["voornaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
      $errors['voornaam'] = "Uw voornaam mag alleen letters en spaties bevatten";
    }
  }

  if (empty($_POST["achternaam"])) {
    $errors['achternaam'] = "Graag uw achternaam invullen";
  } else {
    $achternaam = test_input($_POST["achternaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
      $errors['achternaam'] = "Uw achternaam mag alleen letters en spaties bevatten";
    }
  }

  if (empty($_POST["mailadres"])) {
    $errors['mailadres'] = "Graag uw mailadres invullen";
  } else {
    $email = test_input($_POST["mailadres"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $errors['mailadres'] = "Het formaat van het ingevoerde mailadres is niet correct";
    }
  }

  $uwvraag = test_input($_POST["uwvraag"]) ;
 
  if (count($errors) == 0) {
    //mail versturen
    
    $to = "[email protected]";
    $subject = "Mail afkomstig uit de website";
    $message= "";
    $message.=  "Voornaam: " .$voornaam. "\r\n";
    $message.= "Achternaam: " .$achternaam. "\r\n";
    $message.= "Het mailadres: " .$email. "\r\n";
    $message.= "Uw vraag: " . $uwvraag. "\r\n"; 
    $headers ="From: [email protected] \r\n";
    $headers.="MIME-Version: 1.0" . "\r\n";
    $headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
    
    
    if (mail($to,$subject,$message,$headers)) {
      $hide = 1;
      echo "Bedankt voor uw mail. Er wordt contact met u opgenomen!";
    } else {
      echo "Mail niet verstuurd!";
    }
    
  }

}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}



$page = "contact";
include "Inc/header.php";
?>
<div class="main">
<div class="formulier">


<?php
  if (!isset($hide)) {   ?>

<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
        <label for="Voornaam">Voornaam</label><br />
        <input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <span>
          <?php
            if (isset($errors['voornaam'])) {
              echo $errors['voornaam'];
            }
          ?>
        </span>
        <label for="achternaam">Achternaam</label><br />
        <input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <span>
          <?php
          if (isset($errors['achternaam'])) {
            echo $errors['achternaam'];
          }
          ?>
        </span>
        <label for="Mailadres">Mailadres</label><br />
        <input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        </br>
        <span>
          <?php
          if (isset($errors['mailadres'])) {
            echo $errors['mailadres'];
          }
          ?>
        </span>
        <label for="uwvraag">Uw vraag:</label></br>
        <textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
        <input type="submit" value="Verzenden"> <input type="reset" value="Reset">
    </form>
  </div>

  <?php
    }
  ?>
  </div>
  <?php
include "Inc/footer.php";
?>
Heb je al met var_dump() gekeken naar de inhoud van die variabele?

Met een simpele testcase bedoel ik een uitgekleed script tot +/- 30 regels met relevante code.
Overigens, waar ik nu tegen aanloop is geen probleem denk ik, maar works as design zeg ik maar.
Nadat validatie gelukt is, wordt het formulier verzonden en er verschijnt netjes een bericht dat het is verzonden.
Echter, wat ik wil is dat het bericht voorzien is van een header met menu en footer, maar nu verschijnt het bericht linksboven aan het pagina.
Bekijk je HTML-code ook eens in je browser. Als deze niet klopt heb je ook kans dat het verkeerd rendert, en dat tekst bijv. bovenaan staat.

Laat anders eens een zichtbaar voorbeeld zien.
- Ariën - op 29/09/2022 21:22:48

Bekijk je HTML-code ook eens in je browser. Als deze niet klopt heb je ook kans dat het verkeerd rendert, en dat tekst bijv. bovenaan staat.

Laat anders eens een zichtbaar voorbeeld zien.


Een zichtbaar voorbeeld is: http://jocke-overwater.nl/contact.php
Het probleem heb ik gelost. Ik zag de tekst niet eerder, omdat de achtergrond zwart is. Haha! Bedankt voor het meedenken.

Reageren