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
Ik zie nergens een input met name="search" staan.
Dus $_POST['search' bestaat niet.
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
// 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'] : '' ) ;


Arien en Stefaan

Bedankt voor uw hulp
Ben er ondertussen voor 99,9% uit geraakt .

Reageren