Beim Erstellen eines Suchformulars, das Benutzern die Eingabe mehrerer Parameter ermöglicht, ist es wichtig zu berücksichtigen, wie die Suchergebnisse aussehen gefiltert werden.
Im bereitgestellten Beispiel verfügt das Suchformular über separate Eingabefelder für ID, Name, Hauptfach und Hochschule. Die Datei results.php verwendet dann individuelle if/elseif-Anweisungen, um jeden dieser Parameter separat zu verarbeiten.
Damit Benutzer jedoch einen oder mehrere Parameter eingeben können, ist ein dynamischerer Ansatz erforderlich. Dies kann erreicht werden, indem die WHERE-Klausel für die SQL-Abfrage dynamisch basierend auf den eingegebenen Parametern erstellt wird.
Hier ist eine überarbeitete Version der Datei results.php, die diesen Ansatz demonstriert:
<?php $wheres = array(); $params = array(); if (!empty($_GET['id'])) { $wheres[] = 'a.uid = :uid'; $params[':uid'] = $_GET['id']; } if (!empty($_GET['major'])) { $wheres[] = 'a.major = :major'; $params[':major'] = $_GET['major']; } if (!empty($_GET['name'])) { $wheres[] = 'b.name LIKE :name'; $params[':name'] = '%'.$_GET['name'].'%'; } $sql = "SELECT * FROM user_details AS a JOIN user AS b ON a.uid = b.id"; if (!empty($wheres)) { $sql .= " WHERE " . implode(' AND ', $wheres); } $stmt = $db->prepare($sql); $stmt->execute($params); while ($student = $stmt->fetch()) { echo ' <tr> <td>'.$student['uid'].'</td> <td>'.$student['name'].'</td> <td>'.$student['major'].'</td> <td>'.$student['college'].'</td> <td><a href="?m=profile&id='.$student['id'].'">
Dieser Code erstellt dynamisch die WHERE-Klausel basierend auf den eingegebenen Parametern. Wenn der Benutzer nur einen Namen eingibt, wird die Abfrage nur nach Namen gefiltert. Wenn der Benutzer sowohl einen Namen als auch ein Hauptfach eingibt, wird die Abfrage nach beiden Parametern gefiltert.
Dieser Ansatz ermöglicht ein flexibleres und benutzerfreundlicheres Sucherlebnis.
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein dynamisches Suchformular mit mehreren Parametern in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!