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?
Okee zelf weten. Ik had nog een voorbeeldje gemaakt:


<?php

$products = array(
    array(
        'id' => 1,
        'omschrijving' => 'Call of Duty' ,
        'prijs' => 24.95 
        
    ),
    array(
        'id' => 2,
        'omschrijving' => 'De Sims Erop Uit' ,
        'prijs' => 14.95
        
    ),
    array(
        'id' => 3,
        'omschrijving' => 'Winnie de Poeh',
        'prijs' => 11.95 
    )
);

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    foreach($products as $product)
    {
        if($product['id'] == $_POST['id'])
        {
            echo 'U heeft gekozen voor: ' . $product['omschrijving'] . ' voor een prijs van &euro; ' . $product['prijs'];
            break;
        }
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <?php foreach($products as $product) { ?>
        <div class="article">
          <h2><?php echo $product['omschrijving']; ?> &euro; <?php echo $product['prijs']; ?></h2>
          <form action="" method="post">
            <input type="number" value="1" name="qty">
            <input type="hidden" value="<?php echo $product['id']; ?>" name="id">
            <button type="submit">Bestellen</button>
          </form>
        </div>
        <?php } ?>
    </body>
</html>
Dat zou ook een mooie optie zijn geweest ja, maar je zegt zelf al je hebt straks je handen vol om je php formulier te verweken.
Daarom ga ik toch voor de makkelijke weg.
1 product
Vaste prijs
Aantallen in variabele
En dan leeftijd in variabele
Doorverwijzen naar page1.php
En daar totaalprijs, error als je niet oud genoeg bent.

Dan heb ik daar maar 2 moeilijke dingen om door te voeren.

[size=xsmall]Toevoeging op 27/06/2015 16:03:46:[/size]

Nou so far so good.
Het werkt bijna helemaal.

Misschien kunnen jullie mij helpen?
Ik heb nu het volgende:
Formulier verwijst naar page1.php en werkt goed.
Naam neemt hij netjes mee over.
Ik krijg daar netjes te zien welk spel er gekozen is en wat deze kost.
Aantallen krijg ik mooi te zien.
Maar dan bij totaalprijs geeft hij aan $totaalprijs ipv aantal x prijs per stuk.
Bij leeftijdscategorie geeft hij aan $minimumleeftijd ipv +18 Jaar.
En als ik in mijn eerste formulier ingeef dat ik 18 ben zegt hij mag dit niet bestellen.

Weet iemand wat ik hieraan kan veranderen?

Dit is de huidige code HTML:

<?php

$products = array(
    array(
        'id' => 1,
        'omschrijving' => 'Call of Duty' ,
        'prijs' => 24.95 ,
		'minimumleeftijd' => 18
        
    )
);
?>

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

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

<form action="page1.php" method="post">

<div class="large-block">
    <div class="large-block-wit">
        <h1>Bestellen Call Of Duty</h1>
		
		<input type="text" name="naam" placeholder="Voor- en achtenaam" required>Uw Naam<br />
	
		<input type="text" name="leeftijd" placeholder="Vul hier uw leeftijd in" required>Uw Leeftijd<br />
		
        <br>
		
		<?php foreach($products as $product) { ?>
        <div class="article">
          <span><strong>Uw gekozen spel:</strong>
		  <?php echo $product['omschrijving']; ?> <br />
		  <span><strong>Prijs per stuk:</strong></span> 
		  &euro; <?php echo $product['prijs']; ?></span><br />
          <form action="" method="post">
            <input type="number" value="1" name="qty">
            <input type="hidden" value="<?php echo $product['id']; ?>" name="id">
          </form>
        </div>
        <?php } ?>
				
		<br>
		
		<select id="minimumleeftijd" name="minimumleeftijd">
			<option value="0">Alle leeftijden</option>
			<option value="12">+12 Jaar</option>
			<option value="14">+14 Jaar</option>
			<option value="18">+18 Jaar</option>
		</select>Leeftijds Categorie<br />
		
		<br>
		
		<br>
		
	<input type="reset" name="reset" value="Reset">
	
	<input type="submit" name="submit" value="Bestel">
</div>

</body>
</html>


En dit is mijn page1.php:

<?php

$naam = $_POST["naam"];
$leeftijd = $_POST["leeftijd"];
$products = array(
    array(
        'id' => 1,
        'omschrijving' => 'Call of Duty' ,
        'prijs' => 24.95 ,
		'minimumleeftijd' => 18
        
    )
);
$qty = $_POST["qty"];

$totaalprijs = $qty * $product['prijs'];

$minimumleeftijd = $_POST['minimumleeftijd' . 18];	




?>

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

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

<h1>Orderbevestiging Call Of Duty</h1>

<h3>Uw gegevens:</h3>

<span><strong>Uw naam:</strong></span>
	<?php
	print("$naam")
	?>
<br>

<span><strong>Uw leeftijd:</strong></span>
	<?php
	print("$leeftijd")
	?>
<br>
<br>

	<?php
	if($_SERVER['REQUEST_METHOD'] == 'POST')
	{
		foreach($products as $product)
		{
			if($product['id'] == $_POST['id'])
			{
				echo('U heeft gekozen voor: ' . $product['omschrijving'] . ' voor een prijs van &euro; ' . $product['prijs'] . ' incl. BTW per stuk');
				break;
			}
		}
	}
	?>
<br>
<span><strong>Uw gekozen aantal:</strong></span>
	<?php
	print("$qty")
	?>
<br>
<span><strong>Uw totaalprijs is:</strong></span>
	<?php
	print('$totaalprijs')
	?>
<br>
<span><strong>Dit product valt binnen de leeftijds categorie:</strong></span>
<br>
	<?php
	print('$minimumleeftijd')
	?>
	
<br>
<br>
<br>
	
	<?php
	/*
	als leeftijd lager is dan 18 -> spel niet bestellen
	als leeftijd hoger is dan 18 -> spel wel bestellen
	als leeftijd gelijk is aan 18 -> spel wel bestellen
	*/

	if ($leeftijd <= 18)

			print "U mag dit spel niet bestellen! <br />";
		
		else if ($leeftijd === 18)
		
			print "Bedankt voor uw bestelling! <br />";
		
		else if ($leeftijd >= 18)
			
			print "Bedankt voor uw bestelling! <br />";
			
	?>
	

</body>
</html>

Eerst kijk je of de leeftijd niet gelijk of niet-gelijk is aan 18, en daarna kijk je of deze gelijk is aan 18?

Een beetje tegenstrijdig ;-)
zou ik die om moeten draaien dan?
Er zijn twee statements die er plaatsvinden:
Jonger dan 18, en 18 jaar of ouder. Waarom zou je specifiek willen controleren of iemand precies 18 jaar is?
Inderdaad nu je het zo zegt...
Heb er 1 tussenuit gehaald en nu werkt het ook :)

Thanks

Heb jij misschien enig idee waarom de totaalprijs en leeftijdscategorie niet werkt?
Gezien van de code.
- Haal de tweede <form> op regel 41 weg. Je mag geen <form>'s in elkaar verweven.
- Je sluit je eerste <div> op regel 25 niet af. Spring dus ook beter in

zet dit eens boven in page1.php:

<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>

Zie jij ergens dat de prijs meegezonden wordt? Nee! Maar dat hoeft ook niet. Je hebt namelijk het id. Met dat id moet je de juiste gegevens zien terug te vinden in je array. Je bent er dan zeker van dat gebruikers niet stiekem de prijs naar beneden bijstellen. Je krijgt daar mogelijk extra punten voor van je leraar.
Oke maar dat waren niet de problemen waar ik nu nog tegenaan loop, maar toch ;)
Regel 16 en 18 zijn geen goede regels zegt de browser.
Dat is ook hetgeen wat niet werkt dan natuurlijk.
Je totaalprijs werkt niet omdat je de prijs uit product['prijs'] haalt die array bestaat niet je moet products array aan roepen
(Vervolg vorige post) En zo kan minimum leeftijd er ook uit. Ook deze kun je beter opnieuw uit je array halen zodat dit niet door een nerd van 14 jaar aangepast wordt ;-)

Reageren