• 25-08-2020, 17:29:08
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar,

    Elinde filtreleme dökümanı olan var mı? E-Ticaret sitelerinde bulunan filtrelemelerden.


    $checklist = $_POST['aramasec'];
    foreach($checklist as $list) {
        
         echo $alt_kategoriler = $list.',';
        
        $depourunlersor=$db->prepare("SELECT * FROM depourunler WHERE alt_kategori IN($alt_kategoriler 9)");
        $depourunlersor->execute();
        
    }
    Yukarıda gördüğünüz $alt_kategoriler değerini nasıl IN() içerisine yazdırabilirim?
  • 25-08-2020, 17:34:58
    #2
    $checklist = $_POST['aramasec'];
    foreach($checklist as $list) {
         
        $alt_kategoriler = $list.',';
         
        $depourunlersor=$db->prepare("SELECT * FROM depourunler WHERE alt_kategori IN(?)");
        $depourunlersor->execute([$alt_kategoriler]);
         
    }
  • 25-08-2020, 17:41:56
    #3
    <form action="sec.php" method="post">
    <select name="kategoriler[]" multiple>
    <option value="1">Araba</option>
    <option value="2">TV</option>
    <option value="3">Bilgisayar</option>
    </select>
    <input type="submit">
    </form>
    sec.php
    $kategoriler = $_POST['kategoriler'];
    $alanlar= str_repeat('?, ', count($kategoriler) - 1) . '?';
    $query = $db->prepare("SELECT * FROM urunler WHERE c_id IN ($alanlar)");
    $query->execute($kategoriler);
    $query = $query->fetchAll(PDO::FETCH_OBJ);
    print_r($query);
    mantığı bu şekilde olacaktır.
  • 25-08-2020, 18:22:03
    #4
    kodlar güncellenmiştir deneme yapılar düzeltme yapılmıştır
    • xacnologia
    xacnologia bunu beğendi.
    1 kişi bunu beğendi.
  • 26-08-2020, 08:21:07
    #5
    Evet ekrana yazdırıyor fakat ben bunları hazırladığım tabloda göstermek istiyorum.

        if (isset($_POST['aramayap'])) {
    $checklist = $_POST['aramasec'];
    foreach($checklist as $list) {
        $alt_kategoriler = $list.',';
        $depourunlersor=$db->prepare("SELECT * FROM depourunler WHERE alt_kategori IN($alt_kategoriler 9)");
        $depourunlersor->execute();
    }
        }else{
            $depourunlersor=$db->prepare("SELECT * FROM depourunler");
            $depourunlersor->execute();
        }
  • 26-08-2020, 08:21:43
    #6
    Misafir adlı üyeden alıntı: mesajı görüntüle
    <form action="sec.php" method="post">
    <select name="kategoriler[]" multiple>
    <option value="1">Araba</option>
    <option value="2">TV</option>
    <option value="3">Bilgisayar</option>
    </select>
    <input type="submit">
    </form>
    sec.php
    $kategoriler = $_POST['kategoriler'];
    $alanlar= str_repeat('?, ', count($kategoriler) - 1) . '?';
    $query = $db->prepare("SELECT * FROM urunler WHERE c_id IN ($alanlar)");
    $query->execute($kategoriler);
    $query = $query->fetchAll(PDO::FETCH_OBJ);
    print_r($query);
    mantığı bu şekilde olacaktır.
    Seçilen kategori ID'sine göre arama yapsa yeter benim için.
  • 26-08-2020, 12:05:15
    #7
    seçilen kategorilere göre arama yapıyor
  • 26-08-2020, 13:34:05
    #8
    $checklist = $_POST['aramasec'];
    foreach($checklist as $list) {
    $alt_kategoriler[] = $list['id'];
    }
    if(is_array($alt_kategoriler) && count($alt_kategoriler) >= '1'){
    $alt_kategoriler = implode(',', $alt_kategoriler);
    $depourunlersor=$db->prepare("SELECT * FROM depourunler WHERE alt_kategori IN($alt_kategoriler 9)");
    $depourunlersor->execute();
    }
    Hocam mantık olarak gittiğimde kategori idlerini bir array içinde topladım. Sonra onları implode ile virgüllere ayırdım. Daha sonra MYSQL IN sorgusu içerisinde arattım.

    Belki bu mantık işinize yarayabilir diye düşündüm.
  • 26-08-2020, 16:29:39
    #9
    batuhan_polat adlı üyeden alıntı: mesajı görüntüle
    $checklist = $_POST['aramasec'];
    foreach($checklist as $list) {
    $alt_kategoriler[] = $list['id'];
    }
    if(is_array($alt_kategoriler) && count($alt_kategoriler) >= '1'){
    $alt_kategoriler = implode(',', $alt_kategoriler);
    $depourunlersor=$db->prepare("SELECT * FROM depourunler WHERE alt_kategori IN($alt_kategoriler 9)");
    $depourunlersor->execute();
    }
    Hocam mantık olarak gittiğimde kategori idlerini bir array içinde topladım. Sonra onları implode ile virgüllere ayırdım. Daha sonra MYSQL IN sorgusu içerisinde arattım.

    Belki bu mantık işinize yarayabilir diye düşündüm.
    Merhaba, Teşekkür ederim ama bir sonuç elde edemedim.