-
Notifications
You must be signed in to change notification settings - Fork 0
/
bestellen.php
120 lines (110 loc) · 4.83 KB
/
bestellen.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<div class="centered-container">
<?php
require_once 'winkelwagen.class.php';
require_once 'bestelling-weergeven.php';
require_once 'voorraad.php';
$ww = Winkelwagen::try_load_from_session();
// Eerst een aantal checks
if (!is_logged_in())
{
echo 'Je moet ingelogd zijn om een bestelling te plaatsen.';
}
else if (!is_verified())
{
echo 'Je e-mailadres moet geverifiëerd zijn om een bestelling te plaatsen. Klik op de link in de e-mail die naar je toe gestuurd is.';
}
else if ($ww->is_empty())
{
echo 'Voeg eerst producten toe aan je winkelwagen voor je een bestelling plaatst.';
}
else
{
// Als er dingen niet meer op voorraad zijn, wordt de winkelwagen aangepast en opnieuw weergegeven
if ($ww->check_amounts())
{
$ww->save_to_session();
echo '<p>Sommige producten in uw winkelwagen zijn niet meer op voorraad. Uw winkelwagen is hiervoor aangepast. U kunt de wijzigingen controleren en nogmaals bestellen.</p>';
include 'winkelwagen.php';
}
// Als een wachtwoord meegestuurd is kan de bestelling geplaatst worden
else if (isset($_POST['wachtwoord']))
{
// Het wachtwoord controleren ter bevestiging
$gebruiker_id = $_SESSION['gebruiker-id'];
$wachtwoord = $_POST['wachtwoord'];
$db = connect_to_db();
$sql = $db->prepare("SELECT wachtwoord FROM Gebruikers WHERE id = ? LIMIT 1");
$sql->bind_param('i', $_SESSION['gebruiker-id']);
$sql->execute();
$sql->bind_result($wwdb);
$sql->fetch();
$sql->free_result();
if (!check_wachtwoord($wachtwoord, $wwdb))
{
echo 'Het opgegeven wachtwoord is niet juist.';
$db->close();
}
else
{
// De bestelling in de database plaatsen
$adres_id = $_POST['adres'];
$verzendkosten = $ww->get_shipping();
$sqli_bestelling = $db->prepare("INSERT INTO Bestellingen (gebruiker_id, verzendkosten, adres_id) VALUES (?, ?, ?)");
$sqli_bestelling->bind_param('idi', $gebruiker_id, $verzendkosten, $adres_id);
if(!$sqli_bestelling->execute())
throw new Exception($sqli_bestelling->error);
$bestelling_id = $sqli_bestelling->insert_id;
$sqli_bestelling->free_result();
foreach ($ww->get_all() as $product_id)
{
$hoeveelheid = $ww->get_amount($product_id);
$prijs = $ww->get_price($product_id);
$sqli_product = $db->prepare("INSERT INTO Bestelling_Product (bestelling_id, product_id, prijs, hoeveelheid) VALUES (?,?,?,?)");
$sqli_product->bind_param('iidi', $bestelling_id, $product_id, $prijs, $hoeveelheid);
if(!$sqli_product->execute())
throw new Exception($sqli_product->error);
$voorraad = $db->prepare("UPDATE Producten SET voorraad = voorraad - ? WHERE id = ?");
$voorraad->bind_param('ii', $hoeveelheid, $product_id);
if(!$voorraad->execute())
throw new Exception($voorraad->error);
}
// Een bevestigingsemail naar de klant sturen
require_once 'email.php';
bestelling_mail($bestelling_id, 'Uw bestelling bij Super Internet Shop', 'Bedankt voor uw bestelling bij Super Internet Shop!');
// Opruimen
$db->close();
$ww->remove_all();
$ww->save_to_session();
?>
<h1>Bestelling geplaatst!</h1>
<p>Klik onderaan op de knop "Betalen via Paypal" om voor de bestelling te betalen.<br/>
Dit kan ook op een later moment via uw accountoverzicht, maar tot dan wordt uw bestelling nog niet verstuurd!</p>
<?php
echo bestelling_weergeven($bestelling_id);
}
}
// Anders wordt de volledige bestelling weergegeven ter bevestiging
else
{
?>
<h1>Uw huidige bestelling</h1>
<?php
echo $ww->display(FALSE);
?>
<br/>
<form method="post">
<p>Kies hieronder het adres waarnaar de bestelling verstuurd moet worden:</p>
<?php
require_once 'adresweergave.php';
echo adres_select($_SESSION['gebruiker-id']);
?>
<br/>
<p>Voer uw wachtwoord opnieuw in ter controle voor u een bestelling plaatst:</p>
<input type="password" name="wachtwoord" /><br/>
<input type="submit" value="Plaats bestelling" /><br/>
</form>
<?php
}
}
?>
</div>