Προς το περιεχόμενο

Φίλτρα (PHP & MYSQL)


killer76

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα. Προσπαθώ να φτιάξω φίλτρα για μια σελίδα που έχω. Κάτι σαν τα φίλτρα του skroutz. Δηλάδη αν πατάει κάποιος στην κατηγορία κινητά να έχει φίλτρα (οθόνη, dual sim κλπ) αν πατάει στους σκληρούς δίσκους να έχει φίλτρα (χωρητικότητα, τύπος κλπ). Απλά δεν ξέρω αν αυτός είναι ο σωστός τρόπος δημιουργίας φίλτρων. Γιατί έχω και ένα πρόβλημα.

Έφτιαξα ένα πίνακα filters με πεδία id, filtername, filtercategory,filtergroup.

οπότε βάζω ας πούμε

image.png.58633ef06f2b6959de0e1a4631ca874b.png

Στο σημείο δηλαδή που θέλω να εμφανίσω τα μεγέθη του δίσκου, βάζω  για παράδειγμα το filtergroup hardisksize

Μετά έφτιαξα ένα δεύτερο πίνακα  filter-products που παντρεύει τα προιόντα με τα φίλτρα

δηλαδή κάπως έτσι:

image.png.91bb829c589e1dde95f86eb3de6d905b.png

Δηλαδή το προιόν 22 είναι dual-sim, αδιάβροχο και με οθόνη 6 ιντσών

Όπως το έχω κάνει, δουλέυει σωστά μόνο σε  OR τα φίλτρα. εγώ θέλω όμως να είναι AND. Αν τσεκάρω δηλαδή το dual-sim θα μου εμφανίσει το κινητό 22, αν τσεκάρω το αδιάβροχο μόνο του, πάλι θα μου το εμφανίσει. Αν τσεκάρω και το dual-sim και το αδιάβροχο, δεν θα το εμφανίσει αν έχω το query μου σε AND. Μόνο αν το έχω σε OR. Εγώ θέλω να φιλτράρω τα πάντα με AND όμως.

Κάπως έτσι είναι το model μου τώρα. Εκεί που τραβάω τα προιόντα.
 

    $this->db->select('*');
    $this->db->from('products');
    $this->db->join('brands', 'brands.brand_id = products.product_brand_id');
    $this->db->join('filter_products', 'filter_products.filter_id = filters.filter_id', 'left');
    $this->db->group_by('products.product_id');

    if(isset($_GET['filters']) && $_GET['filters'] != ""){
        $filters = $_GET['filters'];
        $filterquery = implode(' AND filter_products.filter_id = ',$filters);
        $this->db->where("(filter_products.filter_id = $filterquery)");
    }

Και το url με τα φίλτρα τσεκαρισμένα είναι κάπως έτσι όταν επιλέγω πχ dual sim και αδιάβροχο.

?filters[]=1&filters[]=2

===================================================================

Αυτός είναι σωστός τρόπος φιλτραρίσματος ή υπάρχει κάποιος καλύτερος? Προτιμώ να μου πείτε αν υπάρχει καλύτερος τρόπος κάπως σαν αυτό που έχω κάνει εγώ, δηλαδή  με get και php και όχι ajax και js

 

 

 

Επεξ/σία από killer76
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τελικα κραταω τα φιλτρα σε ενα column στα products και καταργησα το πινακα που κανει το παντρεμα. Δεν ξερω αν ειναι ο καλυτερος τροπος, αλλα τουλαχιστον δουλευει τωρα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...