cari

Rumah  >  Soal Jawab  >  teks badan

Carian hanya mengandungi hasil untuk nilai input carian yang diserahkan.

<p>Hai, saya berbesar hati untuk membantu anda dengan skrip carian anda jika boleh. </p><p>Saya mempunyai fungsi carian yang mendapatkan semula data tentang kenderaan daripada pangkalan data menggunakan tiga jenis input carian dan butang hantar. </p><p>Input 1: carian senarai pilihan (carian)</p><p>Input 2: carian teks (searchb)</p><p>Input 3: dua Pilih tunggal butang untuk memilih carian (anda boleh memilih satu atau dua butang)</p><p>Terdapat juga butang serah. </p><p>Apabila saya menyerahkan carian, kod PHP berikut berjalan. Ia akan memaparkan keputusan, tetapi hanya jika ia sepadan dengan hasil pertama yang betul dalam pangkalan data. Saya mahu ia dapat mencari hasil carian yang hanya mengandungi nilai input carian yang diserahkan. </p><p>Sebagai contoh, jika saya memilih pilihan daripada input 1 dan butang radio daripada input 3, carian hanya perlu mencari baris yang mengandungi kedua-dua nilai (jika itu masuk akal). </p><p><br /></p> <pre class="brush:php;toolbar:false;"><? //Kenderaan if (in_array($_POST['searcha'], $search_a_option_list)) { $stmt = $pdo->prepare('PILIH * DARI bilangan WHERE inth = ?'); $stmt->execute([ $_POST['searcha'] ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } lain jika ($_POST['searchb']) { $stmt = $pdo->prepare('PILIH * DARI hitung DI MANA bunty SUKA ?'); $stmt->execute([ '%' . $_POST['searchb'] . '%' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio1'], $_POST['radio2'])) { $stmt = $pdo->prepare('PILIH * FROM count WHERE ref = ? ATAU ref1 = ?'); $stmt->execute([ 'In', 'On' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio1'])) { $stmt = $pdo->prepare('PILIH * DARI hitung DI MANA ref = ?'); $stmt->execute([ 'In' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if (isset($_POST['radio2'])) { $stmt = $pdo->prepare('PILIH * DARI hitung DI MANA ref1 = ?'); $stmt->execute([ 'Hidup' ]); $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC); } lain { $error = 'Tiada pilihan dipilih!'; } ?></pra> <p>Adakah terdapat cara mudah untuk melaraskan skrip ini untuk mencerminkan carian yang dimasukkan? Saya baru mula belajar PHP, jadi panduan yang betul akan menjadi sempurna. terima kasih. </p><p><br /></p>
P粉541551230P粉541551230524 hari yang lalu572

membalas semua(1)saya akan balas

  • P粉930534280

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

    Pertama sekali, saya tidak faham cara memilih dua butang radio pada masa yang sama, adakah anda maksudkan kotak semak? Mengenai soalan anda - bagaimanapun, anda harus melaksanakan pertanyaan tetapi membinanya berdasarkan nilai $_POST anda

    mungkin seperti ini:


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

    balas
    0
  • Batalbalas