• 16-08-2023, 14:51:46
    #1
    arama formunda selectboxlarım var 3 tane. biri araç sınıfı, biri yakıt türü, biri de vites şeklinde. bunların ilk seçenekleri TÜMÜ olarak yazıyor. kullanıcı tümü olarak seçtiğinde veritabanındaki tüm araçları listelesin istiyorum. Ama araç sınıfını ekonomik, yakıt ve vitesi tümü seçtiğinde sadece ekonomik sınıfındaki araçları vites ve yakıt gözetmeksizin listelemesini istiyorum. bunu nasıl yapabilirim? benim yazdığım kod aşağıdaki gibi ama çalışmıyor bu. like deme sebebim yakıt türünde mesela dizel/benzinli şeklinde seçenek mevcut. ama arama formunda dizel, benzinli ayrı iki seçenek.

    Filtrelerden hangisinden tümü seçilirse formdan gelen değer boş gösterip hepsini göstermeye çalıştım ama yapamadım. ASP'de bu şekilde oluyordu.

    if ($_GET['classFilter'] !== "TÜMÜ"){
    $selectedClass = $_GET['classFilter'];
    }else{
    $selectedClass = "";
    }
    if ($_GET['transmissionFilter'] !== "Tümü"){
    $selectedTransmission = $_GET['transmissionFilter'];
    }else{
    $selectedTransmission = "";
    }
    if ($_GET['fuelFilter'] !== "Tümü"){
    $selectedFuel = $_GET['fuelFilter'];
    }else{
    $selectedFuel = "";
    }

    $sql = "SELECT * FROM araclar WHERE sinif like '$selectedClass' AND vites like '$selectedTransmission' AND yakit like '$selectedFuel'";

    hallettim. syntax hatası yapmışım.
  • 16-08-2023, 15:17:58
    #2
    TÜMÜ veya Tümü gibi string tutmayın, buna göre filtreleme yapmayın, get ile gelen string veriyi SQL'de kullanmayın.

    $sql = "SELECT * FROM araclar WHERE sinif like '$selectedClass' AND vites like '$selectedTransmission' AND yakit like '$selectedFuel'";

    kodun altını üstünü göremiyorum ancak umarım SQL Injection saldırılarından korunmak için gerekli aksiyonları almışsınızdır.

    Ayrıca tahminim select/check box seçildiğinde get parametresi alıp sayfayı yeniletiyor ve gelen veriye göre içerik çekip kullanıcıya göstertiyorsunuz. Bu da her filtrelemede sayfanın yenilenmesi demek.

    Tavsiyem;

    https://jsfiddle.net/neon38/56MvQ/2/

    Checkbox/Select vb event'i yakalayarak back-end'e istek atın ve SQL sorgusunu çalıştırın. Back-end bölümünden front-end 'e json verisi dönün ve JS/Jquery ile front-end'de işleyin.

    İyi çalışmalar.