Probleem met search script
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
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
Ik zie nergens een input met name="search" staan.
Dus $_POST['search' bestaat niet.
Dus $_POST['search' bestaat niet.
Gewijzigd op 09/10/2025 20:17:31 door - SanThe -
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.
- 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)
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
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>
// 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>
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'] : '' ) ;
// als je met empty of isset de input controleert krijg je die foutmelding normaal niet
$search = ( !empty( $_POST['search'] ) ? $_POST['search'] : '' ) ;
Arien en Stefaan
Bedankt voor uw hulp
Ben er ondertussen voor 99,9% uit geraakt .
Bedankt voor uw hulp
Ben er ondertussen voor 99,9% uit geraakt .
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




