Skip to main content

3.1 Forms

User input

Met JavaScript kunnen we met het prompt commando de gebruiker om input vragen. Dat kan met PHP niet en dat komt, omdat PHP niet in de browser draait. PHP draait op de server en als je een venster zou openen dan zou dat venster op de server openen en daar heb je natuurlijk niets aan.

PHP kan alleen met de gebruiker communiceren door html naar de browser te sturen en de browser kan alleen met de server communiceren door met formulieren (forms) iets te posten.

Dat werkt als volgt:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <!-- Hier begint het form -->
  <form action="actio.php" method="get">
    
    Name: <input type="text" name="userName"><br>
    Geboortejaar: <input type="number" min="1900" max="2030" name="geboorteJaar"><br>
    Jarig geweest (ja/nee)? <input type="text" name="jarigGeweest"><br>
    <input type="submit" value="Submit">

  </form>

</body>
</html>

Dat is een heel stuk code maar waar het om gaat, is het formulier op regel 12 tot en met 17. De rest is een standaard HTML template en kun je vaak met een editor in één keer intoetsen bijvoorbeeld met !-tab

De user input wordt door het form gevraagd en wordt naar de php file test.php gestuurd. Maak en een action.php en zet daar het volgende in:

<?php

$thisYear=date("Y");

echo "Naam: ".$_GET['userName'];
echo "<br>";

echo "Geboortejaar: ".$_GET['geboorteJaar'];
echo "<br>";

echo "Al jarig geweest?: ".$_GET['jarigGeweest'];
echo "<br>";

echo "Huidig jaar: ".$thisYear;
echo "<br>";

?>

Kijk wat er gebeurt als je het form post. Als het goed is zie je dat alle variabelen worden afgedrukt. Je kan nu uitrekenen hoe oud de persoon is.

Wat denk je dat het type van de variabele $_GET['geboortejaar'] is? Check meet var_dump welk van welk type de variabele $_GET['geboortejaar'] is.

Opgave 2

$leeftijd = .... - ....;

if ( strtoupper($_GET['jarigGeweest']) ...... ) {
  $leeftijd++;
}

echo $_GET['userName'].", jouw leeftijd is: ".$leeftijd;

Plaats  deze code onderaan in test.php en vul de code aan op de plaats van de puntjes.

  • Je moet dus de leeftijd berekenen door twee variabelen van elkaar af te trekken.
  • en je moet het if-statement afmaken
strtoupper()

Let op dat strtoupper($_GET['jarigGeweest']) de string ja of nee in hoofdletters zet. Dit zorgt ervoor dat als je ja of Ja of JA intypt dit allemaal wordt opgezet in JA. strtoupper zet de string dus op in een string met alleen maar hoofdletters.

Zorg ervoor dat de code werkt en dat dit bijvoorbeeld de output is:

Naam: Ayoub
Geboortejaar: 1996
Al jarig geweest?: Nee
Huidig jaar: 2020
Jouw leeftijd is: 24

Opgave 3

Maak een kleine app waarin je berekent hoeveel iedereen moet betalen als je gezamenlijk heb gegeten en gedronken en de rekening wil verdelen.

Maak een form dat vraagt hoe hoog de rekening was en met hoeveel personen jullie waren. In de action van het form bereken je dan wat iedereen moet betalen.

Dit voorbeeld form is in een (html) table geplaatst om het netjes uitgelijnd te tonen. Probeer zelf ook of je het form in een table kunt zetten.

Dan vul je (bijvoorbeeld) 200 en 5 in en dan moet de volgende output verschijnen:

Succes!

Plaats de volgende bestanden in Teams (huiswerk):

Voor opgave 1, één file: de ingevulde tempate
Voor opgave 2, één file: de aangepaste file action.php
Voor opgave 3, twee files: opgave3.html en opgave3.php. De html-file bevat het form en de action-file bevat de php code.

--