La recherche contient uniquement les résultats pour la valeur d'entrée de recherche soumise.
P粉541551230
P粉541551230 2023-07-25 09:17:02
0
1
514
<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粉541551230
P粉541551230

répondre à tous(1)
P粉930534280

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!';
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!