Probleem met search script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Andre Bourbon

Andre Bourbon

09/10/2025 18:48:16
Quote Anchor link
Hallo ,

Wegens verhuis van PHP versie 5.2 naar 8.4 werkte een heel aantal script van mijn website niet meer om de sql database aan te spreken .

Heden heb ik al voor 90% de zaak terug lopend .

Een van de overblijvende scripts is de search script .

In dat search script zit ik nog met een vervelend probleemje .
Er komt steeds dezelfde foutmelding in de error log .

NL : Undefined array key "search" bij de twee regels waar search in voorkomt .


Het script :

$search = $_POST['search'];

// SQL query to select data from database
$sql = " SELECT * FROM "usertable" where Callsign like '$search'";
$result = $conn->query($sql)


de form in het script :

echo "<form method=\"post\" action=\"xxx.php\">";
echo"<input type=\"submit\" value=\"Reset\">";
echo"<input type=\"hidden\" name=\"action\" value=\"add\">";
echo"</form>";


De resultaten van de search script worden korrekt op de webpagina weergegeven .

Iemand enig idee om dit ongemak te verhelpen zonder dat er een ingewikkeld script van te maken .


Gr Andre
 
PHP hulp

PHP hulp

27/05/2026 01:35:24
 
- SanThe -

- SanThe -

09/10/2025 20:15:41
Quote Anchor link
Ik zie nergens een input met name="search" staan.
Dus $_POST['search' bestaat niet.
Gewijzigd op 09/10/2025 20:17:31 door - SanThe -
 
- Ariën  -
Beheerder

- Ariën -

09/10/2025 22:31:49
Quote Anchor link
Eventjes een rewrite (met behulp van AI):

- Prepared statements om SQL-injecties te voorkomen.
- LIKE gebruikt met wildcards (%$search%) om deelmatches toe te staan, zoals zoeken op 'php' = 'phphulp'
- htmlspecialchars() gebruikt om XSS te voorkomen bij het tonen van resultaten.
- Toegevoegde placeholder en validatie bij het zoekveld.
- Code gestructureerd en leesbaar gemaakt.
- Controle op verzenden van formulier.

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
<?php
// Controleer of formulier is verzonden
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['search'])) {
    // Haal zoekterm op en ontsmet invoer
    $search = trim($_POST['search']);

    // Gebruik een prepared statement om SQL-injectie te voorkomen
    $stmt = $conn->prepare("SELECT * FROM usertable WHERE Callsign LIKE ?");
    $like = "%$search%";
    $stmt->bind_param("s", $like);
    $stmt->execute();
    $result = $stmt->get_result();

    // Toon resultaten
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo htmlspecialchars($row['Callsign']) . "<br>";
        }
    }
else {
        echo "Geen resultaten gevonden.";
    }


    $stmt->close();
}

?>


<!-- Zoekformulier -->
<form method="post" action="xxx.php">
    <input type="text" name="search" placeholder="Zoek op callsign..." required>
    <input type="submit" value="Zoeken">
</form>

<!-- Resetknop -->
<form method="post" action="xxx.php">
    <input type="submit" value="Reset">
    <input type="hidden" name="action" value="add">
</form>
 
Stefaan lesage

stefaan lesage

13/10/2025 21:28:12
Quote Anchor link
De foutmelding is dat de key niet bestaat

// als je met empty of isset de input controleert krijg je die foutmelding normaal niet

$search = ( !empty( $_POST['search'] ) ? $_POST['search'] : '' ) ;
 
Andre Bourbon

Andre Bourbon

18/10/2025 09:33:08
Quote Anchor link
Arien en Stefaan

Bedankt voor uw hulp
Ben er ondertussen voor 99,9% uit geraakt .
 
Ward van der Put
Moderator

Ward van der Put

18/10/2025 14:22:59
Quote Anchor link
Andre Bourbon op 09/10/2025 18:48:16:
$search = $_POST['search'];


Voor zoekopdrachten kun je meestal beter GET dan POST gebruiken. Zie bijvoorbeeld:

https://openapi.com/blog/http-methods-restful-apis
 



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.