Bestelformulier maken
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?
De prijs kan je met een SELECT-query uit de database halen. Over de producten gesproken kan je een leeftijd erbij invullen, een simpele vergelijking zorg ervoor dat je kan bepalen of iemand het mag bestellen.
Is het dus mogelijk om aan de verschillende producten een array te hangen met hierin prijzen per product?
En dan ook een leeftijd?
Die if else vergelijking en error meldingen gaat me nog wel lukken.
Gebruik liever een normale numerieke buitenste array en voor de binnenste array een associatieve. Dat werkt veel lekkerder.
Voorbeeld:
Code (php)
output voorbeeld:
Code (php)
Toevoeging op 26/06/2015 23:56:43:
Een database server is trouwens prima van buitenaf te benaderen. Dus de code kan gewoon doorgegeven worden als je het goed doet. Of je kiest er voor om een SQL-dump bestand mee te geven.
Ook zou ik zeg maar in plaats van een tekstvak bij prijs gelijk bij het gekozen product de juiste prijs willen laten zien.
Niet meer zelf in te vullen...
Ik moet het hier in zien te plakken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE HTML>
<html lang="nl">
<head>
<meta charset="utf-8" />
<title>Bestelformulier game</title>
</head>
<body>
<?php
array(
array(
'omschrijving' => 'Call of Duty' ,
'prijs' => 24.95
),
array(
'omschrijving' => 'De Sims Erop Uit' ,
'prijs' => 14.95
),
array(
'omschrijving' => 'Winnie de Poeh'
'prijs' => 11.95
)
);
?>
<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>
<option value="Call of Duty">Call of Duty</option>
<option value="De Sims Erop Uit">De Sims erop uit</option>
<option value="Winnie de Poeh">Winnie de Poeh</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 />
<input type="text" name="price">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>
<html lang="nl">
<head>
<meta charset="utf-8" />
<title>Bestelformulier game</title>
</head>
<body>
<?php
array(
array(
'omschrijving' => 'Call of Duty' ,
'prijs' => 24.95
),
array(
'omschrijving' => 'De Sims Erop Uit' ,
'prijs' => 14.95
),
array(
'omschrijving' => 'Winnie de Poeh'
'prijs' => 11.95
)
);
?>
<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>
<option value="Call of Duty">Call of Duty</option>
<option value="De Sims Erop Uit">De Sims erop uit</option>
<option value="Winnie de Poeh">Winnie de Poeh</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 />
<input type="text" name="price">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>
Gewijzigd op 27/06/2015 00:17:28 door Bas Van Balkom
Ga nooit halverwege je HTML met PHP beginnen maar hou je PHP logica helemaal bovenin en ga pas onderin HTML uitspugen. Regel 10 t/m 28 moeten dus helemaal naar boven! Wel mag je tussen je HTML een beetje PHP gebruiken om je variabelen te echo-en.
In de eerste dropdown wil je dus alle omschrijvingen van de producten.
dat zou je zo kunnen doen:
Code (php)
Dan zie ik vervolgens maar één input met een prijs. Wil je dat de prijs daar in komt te staan als de gebruiker een product geselecteerd heeft? Dan heb je daar wel javascript voor nodig..
Zou je niet liever gewoon divs maken met daarin omschrijving, prijs én aantal?
Gewijzigd op 27/06/2015 00:31:44 door Frank Nietbelangrijk
Je overkoepelende array moet je wel even in een variabele ($producten) opslaan.
- Aar - op 27/06/2015 00:28:40:
Je overkoepelende array moet je wel even in een variabele ($producten) opslaan.
Inderdaad..
Code (php)
Gewijzigd op 27/06/2015 00:43:41 door Frank Nietbelangrijk
Hij blijft foutcode's geven op regel 5, 10 en 15
Parse error: syntax error, unexpected ''prijs'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in C:\xampp\htdocs\PHPboek\Bestel formulier nieuw.php on line 15
Gewijzigd op 27/06/2015 00:41:48 door Bas Van Balkom
Gebruik je wel een PHP editor???
Geef even regel 14 t/m 16.
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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'
),
);
?>
$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 ;-)
Noem het dan liever een minimumleeftijd, zodat je makkelijk kan vergelijken:
Maar nu kwam mijn tweede probleem:
Hoe kan ik uit de $producten listbox bij prijs de desbetreffende laten zien?
Toevoeging op 27/06/2015 01:00:35:
- Aar - op 27/06/2015 00:55:53:
En hoe vul ik dit in bij alle leeftijden? Op 0?
Gewijzigd op 27/06/2015 01:05:17 door - Ariën -
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?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>
$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.
voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!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>
<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>
Toevoeging op 27/06/2015 01:33:08:
http://codepen.io/anon/pen/WvdxaJ
Toevoeging op 27/06/2015 01:40:21:
Hopelijk snap je dat je het moeilijk gaat maken voor jezelf. Nogmaals: Kun je niet beter divs onder elkaar zetten:
Code (php)
$product['id'] bestaat niet in het array.
Persoonlijk zou ik het zo doen.
Dan geef je de key van het product-array mee.