Bestelformulier maken
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?
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.
Oke ik moet deze opdracht script insturen dus ik kan geen gebruik laten maken van een database.
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.
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.
Je kan de data dan opslaan in een multi-dimensionale array:
http://www.w3schools.com/php/php_arrays_multi.asp
http://www.w3schools.com/php/php_arrays_multi.asp
Bas en Aar, Ik vindt het voorbeeld op w3schools een beetje belabberd.
Gebruik liever een normale numerieke buitenste array en voor de binnenste array een associatieve. Dat werkt veel lekkerder.
Voorbeeld:
output voorbeeld:
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.
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.
Ik zat hier zelf ook aan te denken om dit met een multi array te maken, maar wanneer ik het toe pas werkt het niet meer.
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:
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
Even een paar tips:
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:
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?
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
Pfff snap er helemaal niks meer van...
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
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
Op regel 23 mist nog een komma. Maar de foutmelding zegt dat je een haakje ) vergeten bent.
Gebruik je wel een PHP editor???
Gebruik je wel een PHP editor???
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:
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 ;-)
Ja, maar PHP kan niet rekenen met strings zoals '+14 jaar'
Noem het dan liever een minimumleeftijd, zodat je makkelijk kan vergelijken:
Noem het dan liever een minimumleeftijd, zodat je makkelijk kan vergelijken:
Oke goeie tip.
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:
En hoe vul ik dit in bij alle leeftijden? Op 0?
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?
$product['prijs'] gebruiken. Alle leeftijden is inderdaad 0 ;-)
Gewijzigd op 27/06/2015 01:05:17 door - Ariën -
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?
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.
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:
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:
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.




