Ik ben bezig met een bestelformulier aan het maken voor een bestelformulier opdracht met PHP.
Het HTML formulier heb ik maar simpel in elkaar gezet, maar dan?...

Ik ben zover dat ik de uitgaande waardes in mijn "Orderbevestiging" heb staan.
Maar er zijn dingen die ik nog niet helemaal snap en de kluts kwijt raak.

Zo moet ik wanneer ik het desbetreffende product selecteer automatisch een prijs te zien krijgen.
Nu heb ik prijs nog in een aanpasbaar tekstvak staan, maar is door iedereen aan te passen.
Ook moet aan dat product een leeftijdscategorie hangen.
Deze wordt gecontroleerd met het ingegeven leeftijd door de eindgebruiker.
Wanneer de gebruiker niet oud genoeg is moet deze in de volgende pagina een melding hiervan krijgen dat deze niet besteld mag worden.

Zou iemand mij hier tips over kunnen geven of eventueel mee kunnen helpen?
Geef even regel 14 t/m 16.
Ja ik gebruik Notepad++

Miste een komma op regel 23 en heb ook een komma toegevoegd op regel 17

Nu werkt het dus zover...
Kan ik zo ook een leeftijd per product eraan hangen?
En deze straks gaan gebruiken?

Zoals dit:
<?php
$producten = array(
    array(
        'omschrijving' => 'Call of Duty' ,
        'prijs' => 24.95 ,
	'leeftijd' => '+18 Jaar'
        
    ),
    array(
        'omschrijving' => 'De Sims Erop Uit' ,
        'prijs' => 14.95 ,
	'leeftijd' => '+14 Jaar'
        
    ),
    array(
        'omschrijving' => 'Winnie de Poeh' ,
        'prijs' => 11.95 ,
	'leeftijd' => 'Alle leeftijden'
        
    ), 
);
?> 

Dat kan Inderdaad. Je hebt ze er al tussen gezet ;-)
Ja, maar PHP kan niet rekenen met strings zoals '+14 jaar'
Noem het dan liever een minimumleeftijd, zodat je makkelijk kan vergelijken:


'omschrijving' => 'De Sims Erop Uit' ,
'prijs' => 14.95 ,
'minimumleeftijd' => 14



Oke goeie tip.

Maar nu kwam mijn tweede probleem:

Hoe kan ik uit de $producten listbox bij prijs de desbetreffende laten zien?


[size=xsmall]Toevoeging op 27/06/2015 01:00:35:[/size]

- Aar - op 27/06/2015 00:55:53

Ja, maar PHP kan niet rekenen met strings zoals '+14 jaar'
Noem het dan liever een minimumleeftijd, zodat je makkelijk kan vergelijken:


'omschrijving' => 'De Sims Erop Uit' ,
'prijs' => 14.95 ,
'minimumleeftijd' => 14






En hoe vul ik dit in bij alle leeftijden? Op 0?
$product['prijs'] gebruiken. Alle leeftijden is inderdaad 0 ;-)
Nou ik ben al een heel stuk verder...
Eén hand is al uit m'n haar.

Nu zie mijn code er zo uit, maar die prijs weergave gaat nog niet zoals ik had bedacht.
Zodra ik een keuze maak uit die listbox is het dan mogelijk om daar automatisch de prijs van te showen?


<?php
$producten = array(
    array(
        'omschrijving' => 'Call of Duty' ,
        'prijs' => 24.95 ,
		'minimumleeftijd' => 18
        
    ),
    array(
        'omschrijving' => 'De Sims Erop Uit' ,
        'prijs' => 14.95 ,
		'minimumleeftijd' => 14 
        
    ),
    array(
        'omschrijving' => 'Winnie de Poeh' ,
        'prijs' => 11.95 ,
		'minimumleeftijd' => 0
        
    ), 
);
?>

<!DOCTYPE HTML>
<html lang="nl">

<head>
	<meta charset="utf-8" />
	<title>Bestelformulier game</title>
</head>
<body>



<form action="page1.php" method="post">
	
	<input type="text" name="name" placeholder="Voor- en achtenaam" required>Uw Naam<br />
	
	<input type="text" name="leeftijd" placeholder="Vul hier uw leeftijd in" required>Uw Leeftijd<br />
	
	<select id="omschrijving" name="omschrijving">
		<option value="">(geen spel gekozen)</option>
<?php
	foreach($producten as $product)
	{
		echo '<option value="'.$product['id'] .'">'.$product['omschrijving'] .'</option>';
	}
?>
	</select>Spel<br />
	
	<select id="qty" name="qty">
		<option value="">Aantal</option>
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
		<option value="4">4</option>
		<option value="5">5</option>
	</select>Aantal<br />

<?php
	$product['prijs'] 
?>
		Prijs per stuk<br />

	<select id="category" name="category">
		<option value="">(geen categorie gekozen)</option>
		<option value="alle leeftijden">Alle leeftijden</option>
		<option value="+12 Jaar">+12 Jaar</option>
		<option value="+14 Jaar">+14 Jaar</option>
		<option value="+18 Jaar">+18 Jaar</option>
	</select>Leeftijds Categorie<br />
	
	<input type="reset" name="reset" value="Reset">
	
	<input type="submit" name="submit" value="Bestel">

</form>


</body>
</html>

Die variabele werkt alleen in je foreach-loop.
PHP draait op de webserver en genereert een HTML pagina. De webserver stuurt deze dynamische pagina vervolgens naar de browser. De browser maakt van de HTML iets visueels. De webserver is inmiddels klaar met zijn taak. De gebruiker selecteert een product in de dropdown. Nu willen we dat de prijs veranderd. daarvoor hebben we dus een scriptje nodig dat in de browser draait: javascript.

voorbeeld:

<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">
    <title>test</title>
  </head>
  <body>
    <select id="omschrijving" name="omschrijving">
      <option value="">(geen spel gekozen)</option>
      <option data-price="24.95" value="0">Call of Duty</option>
      <option data-price="14.95" value="1">De Sims erop uit</option>
      <option data-price="11.95" value="2">Winnie de Poeh</option>
    </select>Spel<br />

    <input type="text" id="price">Prijs per stuk<br />
    <script>
      window.onload = function() {

      // variabelen die een HTML element opslaan
      var dropdown = document.getElementById('omschrijving');
      var input = document.getElementById('price');

      // voeg een eventhandler toe aan de dropdown 
      dropdown.onchange = function() {
      // verkrijg de geselecteerde option
      var selectedOption = dropdown.options[dropdown.selectedIndex];
      // lees de prijs uit het data-price attribuut en zet deze in de <input>
      input.value = selectedOption.getAttribute('data-price');
      };
      };
    </script>
  </body>
</html>


[size=xsmall]Toevoeging op 27/06/2015 01:33:08:[/size]

http://codepen.io/anon/pen/WvdxaJ

[size=xsmall]Toevoeging op 27/06/2015 01:40:21:[/size]

Hopelijk snap je dat je het moeilijk gaat maken voor jezelf. Nogmaals: Kun je niet beter divs onder elkaar zetten:


<div>
  <h2>Call of Duty</h2>
  <p>&euro; 24,95</p>
</div>
<div>
  <h2>De Sims erop uit</h2>
  <p>&euro; 14,95</p>
</div>
<div>
  <h2>Winnie de Poeh</h2>
  <p>&euro; 11,95</p>
</div>
<?php
foreach($producten as $product)
{
echo '<option value="'.$product['id'] .'">'.$product['omschrijving'] .'</option>';
}
?>

$product['id'] bestaat niet in het array.

Persoonlijk zou ik het zo doen.
Dan geef je de key van het product-array mee.

<?php
foreach($producten as $key => $product)
{
echo '<option value="'.$key .'">'.$product['omschrijving'] .'</option>';
}
?>

Reageren