recherche

Maison  >  Questions et réponses  >  le corps du texte

La recherche contient uniquement les résultats pour la valeur d'entrée de recherche soumise.

<p>Bonjour, je serais heureux de vous aider avec votre script de recherche si possible. </p><p>J'ai une fonction de recherche qui récupère des données sur les véhicules de la base de données à l'aide de trois types d'entrées de recherche et d'un bouton d'envoi. </p><p>Entrée 1 : recherche par liste d'options (recherchea)</p><p>Entrée 2 : recherche de texte (rechercheb)</p><p>Entrée 3 : deux sélections simples pour sélectionner la recherche (vous pouvez sélectionner un ou deux boutons)</p><p>Il existe également un bouton Soumettre. </p><p>Lorsque je soumets une recherche, le code PHP suivant s'exécute. Il affichera les résultats, mais seulement s'ils correspondent au premier résultat correct dans la base de données. Je souhaite qu'il puisse rechercher des résultats qui contiennent uniquement la valeur d'entrée de recherche soumise. </p><p>Par exemple, si je sélectionne une option dans l'entrée 1 et un bouton radio dans l'entrée 3, la recherche ne devrait trouver que les lignes contenant les deux valeurs (si cela a du sens). </p><p><br /></p> <pre class="brush:php;toolbar:false;"><? //Véhicules if (in_array($_POST['searcha'], $search_a_option_list)) { $stmt = $pdo->prepare('SELECT * FROM country WHERE inth = ?'); $stmt->execute([ $_POST['searcha'] ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } sinon si ($_POST['searchb']) { $stmt = $pdo->prepare('SELECT * FROM country OÙ Bunty LIKE ?'); $stmt->execute([ '%' . $_POST['searchb'] . '%' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } sinon if (isset($_POST['radio1'], $_POST['radio2'])) { $stmt = $pdo->prepare('SELECT * FROM country WHERE ref = ? OR ref1 = ?'); $stmt->execute([ 'In', 'On' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } sinon if (isset($_POST['radio1'])) { $stmt = $pdo->prepare('SELECT * FROM country WHERE ref = ?'); $stmt->execute([ 'Dans' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } sinon if (isset($_POST['radio2'])) { $stmt = $pdo->prepare('SELECT * FROM country WHERE ref1 = ?'); $stmt->execute([ 'On' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } autre { $error = 'Aucune option sélectionnée !'; } ?>≪/pré> <p>Existe-t-il un moyen simple d'ajuster ce script pour refléter la recherche saisie ? Je commence tout juste à apprendre PHP, donc un guide approprié serait parfait. Merci. </p><p><br /></p>
P粉541551230P粉541551230515 Il y a quelques jours562

répondre à tous(1)je répondrai

  • P粉930534280

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

    Tout d'abord, je ne comprends pas comment sélectionner deux boutons radio en même temps, tu veux dire des cases à cocher ? Concernant votre question - de toute façon, vous devriez exécuter une requête mais la construire en fonction de votre valeur $_POST

    peut-être comme ceci :


    // 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!';
    }

    répondre
    0
  • Annulerrépondre