Heim  >  Fragen und Antworten  >  Hauptteil

Die Suche enthält nur Ergebnisse für den übermittelten Sucheingabewert.

<p>Hallo, wenn möglich helfe ich Ihnen gerne bei Ihrem Suchskript. </p><p>Ich habe eine Suchfunktion, die mithilfe von drei Arten von Sucheingaben und einer Schaltfläche zum Senden Daten über Fahrzeuge aus der Datenbank abruft. </p><p>Eingabe 1: Optionslistensuche (searcha)</p><p>Eingabe 2: Textsuche (searchb)</p><p>Eingabe 3: zwei einzelne Auswahl Schaltfläche zum Auswählen der Suche (Sie können eine oder zwei Schaltflächen auswählen)</p><p>Es gibt auch eine Schaltfläche zum Senden. </p><p>Wenn ich eine Suche abschicke, wird der folgende PHP-Code ausgeführt. Die Ergebnisse werden angezeigt, jedoch nur, wenn sie mit dem ersten korrekten Ergebnis in der Datenbank übereinstimmen. Ich möchte, dass Ergebnisse durchsucht werden können, die nur den übermittelten Sucheingabewert enthalten. </p><p>Wenn ich beispielsweise eine Option aus Eingabe 1 und ein Optionsfeld aus Eingabe 3 auswähle, sollte die Suche nur Zeilen finden, die beide Werte enthalten (sofern das sinnvoll ist). </p><p><br /></p> <pre class="brush:php;toolbar:false;"><? //Fahrzeuge if (in_array($_POST['searcha'], $search_a_option_list)) { $stmt = $pdo->prepare('SELECT * FROM coun WHERE inth = ?'); $stmt->execute([ $_POST['searcha'] ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if ($_POST['searchb']) { $stmt = $pdo->prepare('SELECT * FROM coun WHERE bunty LIKE ?'); $stmt->execute([ '%' . $_POST['searchb'] . '%' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio1'], $_POST['radio2'])) { $stmt = $pdo->prepare('SELECT * FROM coun WHERE ref = ? OR ref1 = ?'); $stmt->execute([ 'In', 'On' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio1'])) { $stmt = $pdo->prepare('SELECT * FROM coun WHERE ref = ?'); $stmt->execute([ 'In' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio2'])) { $stmt = $pdo->prepare('SELECT * FROM coun WHERE ref1 = ?'); $stmt->execute([ 'On' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } anders { $error = 'Keine Optionen ausgewählt!'; } ?></pre> <p>Gibt es eine einfache Möglichkeit, dieses Skript anzupassen, um die eingegebene Suche widerzuspiegeln? Ich fange gerade erst an, PHP zu lernen, daher wäre eine richtige Anleitung perfekt. Danke. </p><p><br /></p>
P粉541551230P粉541551230422 Tage vor487

Antworte allen(1)Ich werde antworten

  • P粉930534280

    P粉9305342802023-07-26 09:07:18

    首先,我不明白如何同时选择两个单选按钮,你是指复选框吗?关于你的问题 - 无论如何,你应该执行一个查询,但根据你的$_POST值构建它

    可能是这样的:


    // make an empty array to hold all the conditions
    $whereValues = [];
    
    // populate the array with conditions
    if (in_array($_POST['searcha'], $search_a_option_list)) {
        $whereValues[] = "inth = '$_POST[searcha]'";
    } else if ($_POST['searchb']) {
        $whereValues[] = "bunty LIKE '%$_POST[searchb]%'"
    } else if (isset($_POST['radio1'], $_POST['radio2'])) {
        $whereValues[] = "ref = 'In' OR ref1 = 'On'"
    } else if (isset($_POST['radio1'])) {
        $whereValues[] = "ref = 'In'"
    } else if (isset($_POST['radio2'])) {
        $whereValues[] = "ref1 = 'On'"
    } 
    
    // if we have something then build the result string of `WHERE` conditions
    if ($whereValues) {
        $where = implode(' AND ', $whereValues);
        $stmt = $pdo->prepare("SELECT * FROM coun WHERE $where");
        $stmt->execute();
        $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    } else {
        $error = 'No options selected!';
    }

    Antwort
    0
  • StornierenAntwort