Help met website om boeken te kunnen lenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

David Monsma

David Monsma

01/03/2021 17:18:38
Quote Anchor link
Hallo, ik moet voor school een website maken waarmee ik boeken kan lenen die ook door een admin toegevoegd kunnen worden. Het inloggen en het toevoegen via een admin is gelukt alleen wanneer ik met een submit button in een tabel de boeken wil lenen wordt er geen reserveringen aangemaakt in de tabel reserveren. Ik ben niet heel goed met php dus misschien is het wel heel makkelijk maar kan nergens de oplossing vinden. Dit zijn mijn database tabellen en de code:

DB: Bibliotheek
Tabel: Boeken:
-boekid
-titel
-auteur
-uitgever
Tabel: Gebruiker:
-id
-gebruikersnaam
-wachtwoord
-type
Tabel: Reserveringen:
-reserveringsnummer
-boekid
-id

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!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>
 
PHP hulp

PHP hulp

19/04/2021 05:00:03
 
- Ariën -
Beheerder

- Ariën -

01/03/2021 17:42:32
Quote Anchor link
Vanwaar je keuze om zowel prepared statement te combineren met non-prepared?
 
David Monsma

David Monsma

01/03/2021 17:54:17
Quote Anchor link
- 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
 
- Ariën -
Beheerder

- Ariën -

01/03/2021 17:56:49
Quote Anchor link
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. ;-)
Gewijzigd op 01/03/2021 18:00:36 door - Ariën -
 
Ad Fundum

Ad Fundum

01/03/2021 22:36:25
Quote Anchor link
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 ;-)
 
David Monsma

David Monsma

02/03/2021 00:16:12
Quote Anchor link
- 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. ;-)


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 ;-)


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).
 
Ivo P

Ivo P

02/03/2021 10:32:39
Quote Anchor link
niet dat je iets met sessions lijkt te doen, maar na 56 regels output naar de browser sturen, ben je op regel 58 rijkelijk laat om nog een header (die vóór de output komt) te sturen middels session_start()

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.