Help met website om boeken te kunnen lenen
DB: Bibliotheek
Tabel: Boeken:
-boekid
-titel
-auteur
-uitgever
Tabel: Gebruiker:
-id
-gebruikersnaam
-wachtwoord
-type
Tabel: Reserveringen:
-reserveringsnummer
-boekid
-id
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
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
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
<!DOCTYPE html>
<html lang="nl">
<head>
<link rel="stylesheet" type='text/css' href="style.css">
</head>
<body>
<div class="wrapper">
<div class="content-wrap">
<header>
<div id="logohome">
<img src="plaatjes/logo.png" alt="BibliotheekNL">
</div>
</header>
<!-- Een navigatiebalk om de gebruiker/admin te laten wisselen van webpagina-->
<nav>
<ul>
<li><a href="homepagina.php">Home</a></li>
<li id="current"><a href="boeklenen.php">Boeken Lenen</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
<br><br>
</div>
</div>
<?php
session_start();
include("databaseconnectie.php");
/* Verbinding maken met de database */
$link = mysqli_connect("localhost", "root", "usbw", "bibliotheek");
// Verbinding checken
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Queries laten uitvoeren
$sql = "SELECT titel, auteur, uitgever FROM boeken";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table>";
echo "<tr>";
echo "<th>Titel</th>";
echo "<th>Auteur</th>";
echo "<th>Uitgever</th>";
echo "<th>Lenen</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['titel'] . "</td>";
echo "<td>" . $row['auteur'] . "</td>";
echo "<td>" . $row['uitgever'] . "</td>";
if(isset($_POST["submit"]))
{
$boek = $_POST['boekid'];
$gebruiker = $_POST['id'];
{
$db = new PDO("mysql:host=localhost;dbname=bibliotheek", "root", "usbw");
$query = $db->prepare("INSERT INTO reserveringen(reserveringsnummer, boekid, id) VALUES('$boek', '$gebruiker')");
if($query->execute("INSERT INTO reserveringen(reserveringsnummer, boekid, id) VALUES('$boek', '$gebruiker')"));
}
}
echo "<td><button type='submit' name='submitC' '>Leen boek</button> </td>";
echo "</tr>";
}
echo "</table>";
}
}
?>
</body>
</html>
<html lang="nl">
<head>
<link rel="stylesheet" type='text/css' href="style.css">
</head>
<body>
<div class="wrapper">
<div class="content-wrap">
<header>
<div id="logohome">
<img src="plaatjes/logo.png" alt="BibliotheekNL">
</div>
</header>
<!-- Een navigatiebalk om de gebruiker/admin te laten wisselen van webpagina-->
<nav>
<ul>
<li><a href="homepagina.php">Home</a></li>
<li id="current"><a href="boeklenen.php">Boeken Lenen</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
<br><br>
</div>
</div>
<?php
session_start();
include("databaseconnectie.php");
/* Verbinding maken met de database */
$link = mysqli_connect("localhost", "root", "usbw", "bibliotheek");
// Verbinding checken
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Queries laten uitvoeren
$sql = "SELECT titel, auteur, uitgever FROM boeken";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table>";
echo "<tr>";
echo "<th>Titel</th>";
echo "<th>Auteur</th>";
echo "<th>Uitgever</th>";
echo "<th>Lenen</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['titel'] . "</td>";
echo "<td>" . $row['auteur'] . "</td>";
echo "<td>" . $row['uitgever'] . "</td>";
if(isset($_POST["submit"]))
{
$boek = $_POST['boekid'];
$gebruiker = $_POST['id'];
{
$db = new PDO("mysql:host=localhost;dbname=bibliotheek", "root", "usbw");
$query = $db->prepare("INSERT INTO reserveringen(reserveringsnummer, boekid, id) VALUES('$boek', '$gebruiker')");
if($query->execute("INSERT INTO reserveringen(reserveringsnummer, boekid, id) VALUES('$boek', '$gebruiker')"));
}
}
echo "<td><button type='submit' name='submitC' '>Leen boek</button> </td>";
echo "</tr>";
}
echo "</table>";
}
}
?>
</body>
</html>
Vanwaar je keuze om zowel prepared statement te combineren met non-prepared?
- Ariën - op 01/03/2021 17:42:32:
Vanwaar je keuze om zowel prepared statement te combineren met non-prepared?
Hoe bedoel je precies? Ik ben niet heel goed met php en had een beetje op forums gezocht hoe ik resultaten van een database kon laten zien in een tabel en toen kreeg ik dit en heb ik het met mijn eigen database waardes gevuld
En later op lijn 90 doe je dit via PDO?
Maak liever een keuze wat je wilt gebruiken. Samen mixen kan tot problemen leiden.
In ieder geval vind ik het onlogisch.
Ik neem aan dat je niet zomaar rücksichtlos wat kopieert van internet en het in je script plaats? Want dat is niet de intentie van programmeren. ;-)
Gewijzigd op 01/03/2021 18:00:36 door - Ariën -
Ik heb wel eens zo'n systeem gemaakt en het kostte me een volledige week.
In de tabel `Boeken` zie ik geen kolom voor welk lid het boek wanneer heeft geleend... lijkt me wel essentieel.
Ik zeg lid omdat een bibliotheek doorgaans leden heeft. Gebruikers heb je bij drugs ;-)
- Ariën - op 01/03/2021 17:56:49:
Eerst maakt je een normale connectie via MySQLi aan op lijn 61
En later op lijn 90 doe je dit via PDO?
Maak liever een keuze wat je wilt gebruiken. Samen mixen kan tot problemen leiden.
In ieder geval vind ik het onlogisch.
Ik neem aan dat je niet zomaar rücksichtlos wat kopieert van internet en het in je script plaats? Want dat is niet de intentie van programmeren. ;-)
En later op lijn 90 doe je dit via PDO?
Maak liever een keuze wat je wilt gebruiken. Samen mixen kan tot problemen leiden.
In ieder geval vind ik het onlogisch.
Ik neem aan dat je niet zomaar rücksichtlos wat kopieert van internet en het in je script plaats? Want dat is niet de intentie van programmeren. ;-)
Nee zo bedoelde ik het ook niet maar meer dat ik niet snapte wat ik allemaal moest gebruiken en dan de dingen die ik kon vinden beetje bij elkaar heb gezet maar het is me inmiddels gelukt na een aantal filmpjes te kijken van hoe het allemaal precies werkt en een paar uur werk.
Toevoeging op 02/03/2021 00:17:49:
Ad Fundum op 01/03/2021 22:36:25:
Leuke opdracht..
Ik heb wel eens zo'n systeem gemaakt en het kostte me een volledige week.
In de tabel `Boeken` zie ik geen kolom voor welk lid het boek wanneer heeft geleend... lijkt me wel essentieel.
Ik zeg lid omdat een bibliotheek doorgaans leden heeft. Gebruikers heb je bij drugs ;-)
Ik heb wel eens zo'n systeem gemaakt en het kostte me een volledige week.
In de tabel `Boeken` zie ik geen kolom voor welk lid het boek wanneer heeft geleend... lijkt me wel essentieel.
Ik zeg lid omdat een bibliotheek doorgaans leden heeft. Gebruikers heb je bij drugs ;-)
Ja het is me uiteindelijk ook gelukt en het was inderdaad best een flinke opdracht om te maken vergeleken met wat ik vorige keer moest doen in php. Vorige keer moest ik iets maken wat kon herkennen of iets een volmaakt getal was en dit was vrij simpel met zo'n 40 regels aan code. Nu moest ik opeens een hele website bouwen met html en php (heb natuurlijk wel 1x eerder een html website moeten bouwen maar zonder php en een database dus het was wel een uitdaging).
Toevoeging op 02/03/2021 10:38:51:
en de plek van je insert-query(s) is wat vreemd.
tijdens het ophalen en tonen van een alle(1) boeken in een lijst, kies je ervoor om (indien gepost is)
het formulier te verwerken.
Dus stel iemand post "gebruiker 10 leent boek 'php handleiding'"
dan haal je vervolgens alle boeken op (laten we zeggen dat dat er 100 zijn.
Die worden vervolgens op het scherm gezet, en elke keer dat je een uitgever hebt neer gezet aan het eind van een regel, dan doe je "insert into reserveringen " voor gebruiker 10 en 'php handleiding'/
Dus 100x.
Daarnaast: zoek nog even op hoe dat nu weer zit met pdo, prepare en execute: je preparet namelijk niets, en dat je daarna dezelfde query weer bij execute neer moet zetten, zou ook een alarmbel moeten laten gaan
Toevoeging op 02/03/2021 10:45:09:
Even een basis setup van een script:
1 - check of je toegang hebt (ingelogd etc, mogelijk niet van toepassing hier)
2 - doe POST afhandelingen
2a - na een POST bij voorkeur een redirect zodat (hetzelfde) script aangeroepen wordt (voorkomt dubbelingen bij verversen van de browser pagina)
3 - doe query / verzamel gegevens voor de pagina.
4 - output (naar browser, pdf etc)
2a is nu wat minder belangrijk.
maar door eerst punt 2 te doen, voorkom je ook effecten als de klassieke fout dat je eerst SELECT doet, vervolgens dat naar het scherm stuurt, en pas aan het einde een boek reserveert.
En dan is de "fout" dat het boek niet op gereserveerd gezet lijkt te worden, omdat je de lijst opgehaald hebt vlak voordat je het boek reserveerde.
Dus eerst de aanpassingen doen,
dan pas ophalen.
en tenslotte naar het scherm.
Waarbij je dat ook in 1x weet óf er boeken zijn op weer te geven, en je geen spaghetti krijgt van html en allerlei if-lussen met php ertussen