Script wil niet naar volgende records gaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans Hermes

Hans Hermes

13/01/2025 17:24:38
Quote Anchor link
Beste allen,

Ik heb een gastenboek gemaakt waar ik maximaal 5 records wil tonen op de pagina.
Als ik meer records heb wil ik op volgende klikken of vorige om de reacties te bekijken.
Als ik echter op volgende klik blijft hij steeds de laatst ingevoegde records zien.
Heeft iemand een idee wat er fout zit in dit script?

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
117
118
119
120
121
122
123
<?php
// Verbind met de MySQL-database
$servername = "localhost";
$username = "**knip**";  // Gebruik je eigen MySQL gebruikersnaam
$password = "**nip**";      // Gebruik je eigen MySQL wachtwoord
$dbname = "**knip**";

$conn = new mysqli($servername, $username, $password, $dbname);

// Controleer de verbinding
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


// Verwerk het formulier
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['naam']) && isset($_POST['bericht'])) {
    $naam = $_POST['naam'];
    $bericht = $_POST['bericht'];
    
    // Voeg het bericht toe aan de database
    $stmt = $conn->prepare("INSERT INTO berichten (naam, bericht) VALUES (?, ?)");
    $stmt->bind_param("ss", $naam, $bericht);
    $stmt->execute();
    $stmt->close();
}


// Paginering
$records_per_page = 5; // Aantal records per pagina
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // Huidige pagina
$offset = ($page - 1) * $records_per_page; // Offset voor de SQL-query

// Haal het aantal berichten op voor de paginering

$sql_count = "SELECT COUNT(*) AS total FROM berichten";
$result_count = $conn->query($sql_count);
$row_count = $result_count->fetch_assoc();
$total_records = $row_count['total'];
$total_pages = ceil($total_records / $records_per_page); // Totaal aantal pagina's

// Haal de berichten op voor de huidige pagina

$sql = "SELECT naam, bericht, datum FROM berichten ORDER BY datum DESC LIMIT $records_per_page OFFSET $offset";
$result = $conn->query($sql);
$messages = [];

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $messages[] = $row;
    }
}


$conn->close();
?>


<!DOCTYPE html>
<html lang="nl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Berichtenpagina</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        body { font-family: Arial, sans-serif; }
        .messages { margin-top: 20px; }
        .message { border: 1px solid #ccc; padding: 10px; margin-bottom: 10px; }
        .pagination { margin-top: 20px; }
        .pagination a { margin: 0 5px; text-decoration: none; color: #000; }
    </style>
</head>
<body>
    <h1>Laat een bericht achter</h1>
    <form id="messageForm">
        <label for="naam">Naam:</label>
        <input type="text" id="naam" name="naam" required><br><br>
        <label for="bericht">Bericht:</label><br>
        <textarea id="bericht" name="bericht" required></textarea><br><br>
        <button type="submit">Verstuur Bericht</button>
    </form>

    <div class="messages">
        <?php foreach ($messages as $message): ?>
            <div class="message">
                <strong><?php echo htmlspecialchars($message['naam']); ?></strong><br>
                <?php echo nl2br(htmlspecialchars($message['bericht'])); ?><br>              
            </div>
        <?php endforeach; ?>
    </div>

    <div class="pagination">
        <!-- Vorige Pagina -->
        <?php if ($page > 1): ?>
            <a href="?page=<?php echo $page - 1; ?>">Vorige</a>
        <?php endif; ?>

        <!-- Volgende Pagina -->
        <?php if ($page < $total_pages): ?>
            <a href="?page=<?php echo $page + 1; ?>">Volgende</a>
        <?php endif; ?>
    </div>

    <script>
        // Formulier verwerkingsfunctie zonder de pagina te verversen
        $(document).ready(function(){
            $('#messageForm').submit(function(e){
                e.preventDefault(); // Voorkom de standaard form submit
                var naam = $('#naam').val();
                var bericht = $('#bericht').val();

                $.ajax({
                    type: 'POST',
                    url: 'index.php',
                    data: {naam: naam, bericht: bericht},
                    success: function(response) {
                        // Voeg het nieuwe bericht toe zonder de pagina te verversen
                        var newMessage = '<div class="message"><strong>' + naam + '</strong><br>' + bericht + '</div>';
                        $('.messages').prepend(newMessage);
                        $('#naam').val('');
                        $('#bericht').val('');
                    }
                });
            });
        });
    </script>
</body>
</html>
Gewijzigd op 13/01/2025 18:02:46 door - Ariën -
 
PHP hulp

PHP hulp

13/01/2025 21:10:57
 
- Ariën  -
Beheerder

- Ariën -

13/01/2025 17:55:36
Quote Anchor link
Op lijn 40/41 raad ik aan om voor het testen eens je $sql je echo'en:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php // kleurtjes tonen op het forum
$sql = "SELECT naam, bericht, datum FROM berichten ORDER BY datum DESC LIMIT $records_per_page OFFSET $offset";
echo "Je SQL is: ".$sql;
$result = $conn->query($sql);
?>
 
Hans Hermes

Hans Hermes

13/01/2025 18:00:43
Quote Anchor link
Hij dit aan Je SQL is: SELECT naam, bericht, datum FROM berichten ORDER BY datum DESC LIMIT 5 OFFSET 0
Gewijzigd op 13/01/2025 18:01:35 door Hans Hermes
 
- Ariën  -
Beheerder

- Ariën -

13/01/2025 18:03:15
Quote Anchor link
is dit op alle pagina's zo?

PS: Check even je PM die zo volgt!
Gewijzigd op 13/01/2025 18:03:50 door - Ariën -
 
Hans Hermes

Hans Hermes

13/01/2025 18:04:34
Quote Anchor link
Geen idee ik kan niet naar de volgende records toe als ik op volgende klik
 
- Ariën  -
Beheerder

- Ariën -

13/01/2025 18:07:04
Quote Anchor link
Maar blijft die query dan zo?
Wat gebeurt er verder wel?
Gewijzigd op 13/01/2025 18:07:48 door - Ariën -
 
Hans Hermes

Hans Hermes

13/01/2025 18:11:41
Quote Anchor link
https://www.hoefvinyl.nl/?page=2 is wat hij aangeeft en verder komt hij niet.
 
- Ariën  -
Beheerder

- Ariën -

13/01/2025 18:15:28
Quote Anchor link
Ik vermoed dat er iets in je site zit wat dergelijke GET-requests stript. Uiteindelijk komt hij steeds weer op https://www.hoefvinyl.nl uit. Heb je iets bijzonders in je .htaccess staan?

Aan deze code lijkt het niet te liggen. Test het eens 'droog' uit los van je hele site.
Gewijzigd op 13/01/2025 18:16:30 door - Ariën -
 
Hans Hermes

Hans Hermes

13/01/2025 18:17:03
Quote Anchor link
Ga dat ga ik maar proberen via mijn lokale webserver

Toevoeging op 13/01/2025 18:17:23:

Ga dat ga ik maar proberen via mijn lokale webserver
 
- Ariën  -
Beheerder

- Ariën -

13/01/2025 19:35:59
Quote Anchor link
Prima. Ik ben benieuwd.
 



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.