Συνδυαστικά φίλτρα eshop

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 28 Απρ 2011 20:10

Γεια σας,

Προσπαθώ να κάνω σε ένα eshop που φτιάχνω συνδυαστικά φίλτρα.

Δηλαδή: ένα προϊόν (π.χ. laptop) έχει τα ακόλουθα φίλτρα:
Κατασκευαστής: Turbo-X
Συνιστώμενη Χρήση: Για απλή χρήση
Εύρος οθόνης (inches): 15 έως 16 inches
Μνήμη Κάρτας Γραφικών: 256ΜΒ

Αυτό που έκανα για αρχή είναι όταν βλέπει κάποιος την Κατηγορία στο αριστερό μέρος να εμφανίζονται τα Φίλτρα με ένα count. Δηλαδή φαίνεται κάπως έτσι:
Κατασκευαστής
- Turbo-X (1)

Συνιστώμενη Χρήση
- Για απλή χρήση (2)

Εύρος οθόνης (inches)
- 15 έως 16 inches (2)
- μικρότερη από 15 inches (1)

Μνήμη Κάρτας Γραφικών
- 256 MB (2)

Μέσα στην παρένθεση βρίσκεται το count των προϊόντων που υπάρχουν σε αυτό το φίλτρο.

Μέχρι στιγμής, όλα καλά. Τα προβλήματα αρχίζουν όταν πατήσουμε σε κάποιο φίλτρο. Τα φίλτρα τα περνάω από το URL με τα ID τους χωρισμένα με άνω και κάτω τελεία και τα διαβάζω με explode ( URL: category/6/filter/14:12 )

Όταν φτάσουμε σε αυτό το σημείο θα πρέπει να έχουμε 2 SQL queries. Ένα SQL query που θα κάνει το count των προϊόντων (λογικά κάποια φίλτρα θα έχουν 0, αφού ο σκοπός των φίλτρων είναι να περιορίσει τα αποτελέσματα).

Και ένα άλλο query το οποίο θα διαβάζει ποια προϊόντα πρέπει να εμφανίσει σύμφωνα με τα επιλεγμένα φίλτρα.

Το query για να εμφανίσει τα επιλεγμένα προϊόντα είναι αυτό:

Κώδικας: Επιλογή όλων

SELECT *
FROM products
JOIN products_details
JOIN products_filters
WHERE products.product_ID = products_details.product_ID
AND products_details.lang_ID = '1'
AND products.product_ID = products_filters.product_ID
OR products_filters.filter_ID = '2'
OR products_filters.filter_ID = '19'
AND products.quantity <> 0
AND products.category_ID = '6'
GROUP BY products.product_ID
ORDER BY RAND&#40;&#41;;
Και το άλλο query:

Κώδικας: Επιλογή όλων

SELECT COUNT&#40;products_filters.product_ID&#41; AS count_products
FROM products_filters
JOIN products
WHERE products.product_ID = products_filters.product_ID
AND products_filters.filter_ID = '8'
AND products_filters.filter_ID = '2'
AND products_filters.filter_ID = '19'
AND products.quantity <> 0
Χρειάζεται να κάνω κάποιες αλλαγές στα query επειδή δεν μου λειτουργούν σωστά.

Αν μπορεί κάποιος να με βοηθήσει θα το εκτιμούσα πολύ.

Αν έχετε κάποια πρόταση, κάποιο βοήθημα ή κάτι που μπορεί να βοηθήσει παρακαλώ κάντε ένα post.

Ευχαριστώ πολύ.

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 29 Απρ 2011 02:44

Παιδιά κανείς;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Συνδυαστικά φίλτρα eshop

Δημοσίευση από dva_dev » 29 Απρ 2011 19:48

Ρίξε μια ματιά σε αυτά και μας ξαναλές αν έχεις πρόβλημα (αναφέροντας και το σχήμα της βάσης σου) και πως ακριβώς θέλεις να δουλεύουν τα φίλτρα (τη λειτουργία, τι θα πατάς και τι θέλεις να κάνει).
http://www.freestuff.gr/forums/viewtopic.php?t=45773
http://www.freestuff.gr/forums/viewtopic.php?t=43405

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 30 Απρ 2011 13:24

Οι πίνακες της βάσης μου έχουν ως εξής:
products_filters

Κώδικας: Επιλογή όλων

CREATE TABLE IF NOT EXISTS `products_filters` &#40;
  `product_ID` int&#40;10&#41; NOT NULL,
  `filter_ID` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`product_ID`,`filter_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;
products

Κώδικας: Επιλογή όλων

CREATE TABLE IF NOT EXISTS `products` &#40;
  `product_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `category_ID` int&#40;10&#41; NOT NULL,
  `tax_ID` int&#40;10&#41; NOT NULL,
  `start_date` int&#40;10&#41; NOT NULL,
  `end_date` int&#40;10&#41; NOT NULL,
  `status` tinyint&#40;1&#41; NOT NULL,
  `logo` varchar&#40;100&#41; NOT NULL,
  `weight` float NOT NULL,
  `price` float NOT NULL,
  `discount` float NOT NULL,
  `embed_code` text NOT NULL,
  `front_page` tinyint&#40;1&#41; NOT NULL,
  `product_code` varchar&#40;100&#41; NOT NULL,
  `quantity` int&#40;10&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`product_ID`,`category_ID`,`tax_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
products_details

Κώδικας: Επιλογή όλων

CREATE TABLE IF NOT EXISTS `products_details` &#40;
  `product_ID` int&#40;10&#41; NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  `title` text NOT NULL,
  `description` text NOT NULL,
  PRIMARY KEY &#40;`product_ID`,`lang_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;
Το query που εμφανίζει τα προϊόντα είναι έτσι όταν βλέπουμε την κατηγορία:

Κώδικας: Επιλογή όλων

SELECT DISTINCT *
FROM products
JOIN products_details on &#40;products.product_ID = products_details.product_ID
AND products_details.lang_ID = '1'&#41;
AND products.category_ID = '6'
GROUP BY products.product_ID
HAVING count&#40;products.product_ID&#41;=1
ORDER BY RAND&#40;&#41;;
Αν επιλεχθεί κάποιο φίλτρο το query που εμφανίζει τα Προϊόντα γίνεται έτσι:

Κώδικας: Επιλογή όλων

SELECT DISTINCT *
FROM products
JOIN products_details on &#40;products.product_ID = products_details.product_ID
AND products_details.lang_ID = '1'&#41;
JOIN products_filters ON &#40;products.product_ID = products_filters.product_ID&#41;
AND products.product_ID = products_filters.product_ID
AND products_filters.filter_ID = '12'
AND products.quantity <> 0
AND products.category_ID = '6'
GROUP BY products.product_ID
HAVING count&#40;products.product_ID&#41;=1
ORDER BY RAND&#40;&#41;;
Τώρα στο sidebar που εμφανίζω τα φίλτρα όταν δεν έχει επιλεχθεί κάποιο φίλτρο το query που κάνει καταμέτρηση των φίλτρων είναι έτσι (αυτό νομίζω ότι δουλεύει σωστά):

Κώδικας: Επιλογή όλων

SELECT products_filters.product_ID
FROM products_filters
JOIN products on products.product_ID = products_filters.product_ID and &#40; products_filters.filter_ID in &#40;2&#41; &#41;
WHERE products.quantity <> 0
GROUP BY products_filters.product_ID
HAVING count&#40;products_filters.product_ID&#41;=1
Και όταν επιλέγεται ένα φίλτρο, το query γίνεται έτσι:

Κώδικας: Επιλογή όλων

SELECT products_filters.product_ID
FROM products_filters
JOIN products on products.product_ID = products_filters.product_ID and &#40; products_filters.filter_ID in &#40;2, 8&#41; &#41;
WHERE products.quantity <> 0
GROUP BY products_filters.product_ID
HAVING count&#40;products_filters.product_ID&#41;=1
Βέβαια αυτό δεν δουλεύει σωστά γιατί όταν επιλέγω ένα φίλτρο (π.χ. το 8), μου εμφανίζει όλα τα φίλτρα (ακόμα και αυτά που δεν αντιστοιχούν σε κάποιο προϊόν με count 2.

Κάτι κάνω λάθος και δεν μπορώ να το βρω.

Το function που κάνει καταμέτρηση τα φίλτρα για το sidebar είναι αυτό:

Κώδικας: Επιλογή όλων

function ProductsFiltersLink&#40;$filter_ID, $filtering, $products&#41; &#123;
	$filtering_sql = $criteria = array&#40;&#41;;
	if &#40;!empty&#40;$filter_ID&#41;&#41; &#123;
		$criteria&#91;&#93; = $filter_ID;
	&#125;

	if &#40;!empty&#40;$filtering&#41;&#41; &#123;
		foreach&#40;$filtering as $filteringID&#41; &#123;
			$criteria&#91;&#93; = $filteringID;
		&#125;
	&#125;

	$sql = "SELECT products_filters.product_ID
			FROM products_filters
			JOIN products on products.product_ID = products_filters.product_ID ";
	if &#40;!empty&#40;$criteria&#41;&#41; &#123;
		$sql .=	"and &#40; products_filters.filter_ID in &#40;".implode&#40;', ',$criteria&#41;."&#41; &#41;\n";
	&#125;

	$sql .= "WHERE products.quantity <> 0
			GROUP BY products_filters.product_ID
			HAVING count&#40;products_filters.product_ID&#41;=".count&#40;$filtering&#41;."\n";

	if &#40; ! &#40; $result = mysql_query&#40;$sql&#41; &#41; &#41; &#123;
		front_error&#40;'Could not execute MySQL query.'&#41;;
	&#125;
			
	$rows = mysql_num_rows&#40;$result&#41;;
	if &#40;$rows == 0&#41; &#123;
		return '0';
	&#125;
	else &#123;
		return $rows;
	&#125;
&#125;
και καλείται κάπως έτσι:

Κώδικας: Επιλογή όλων

foreach&#40;$filter_groups as $filter_group&#41; &#123;
	foreach&#40;$filters as $filter&#41; &#123;
		$filter_value = $filter&#91;'value'&#93;;
		$counter = ProductsFiltersLink&#40;$filter&#91;'ID'&#93;, $filtering&#41;;
      ...
...
Tα $filter_groups και τα $filters τα παίρνει από την βάση και τα χειρίζομαι ως arrays.

Ευχαριστώ πολύ.

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 02 Μάιος 2011 19:20

Παιδιά κάποια βοήθεια;

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Συνδυαστικά φίλτρα eshop

Δημοσίευση από jpk » 03 Μάιος 2011 00:30

Εξήγησε λίγο περισσότερο το data model σου πώς το σκέφτηκες αρχικά; Όλο αυτό με τον πίνακα products_filters φαίνετε ότι δεν λειτουργεί, αλλά ακόμα και να λειτουργούσε είναι Αθήνα &#8211; Θεσσαλονίκη μέσω Ανταρκτικής.

Από ότι βλέπω όλες τις πληροφορίες που θες τις έχεις από τον πίνακα products που με ένα distinct ανά πεδίο της φόρμας θα μπορούσες να γεμίσεις το select της.

(Ακόμα καλλίτερα θα μπορούσες να τα παραμετροποιήσεις σε ξεχωριστούς πίνακες τόσο για να είναι εύκολη και σωστή η προσθήκη δεδομένων (product) από τον διαχειριστή της εφαρμογής όσο και να ξέρεις ανά πάσα τι σου γίνεται (φυσικά ο διαχειριστής θα είχε δυνατότητα αλλαγής αυτών των παραμετροποιήσεων). Αν το έκανες έτσι το μόνο που θα είχες θα ήταν να φτιάξεις ένα query δυναμικά, αναλόγως τι θα σου ερχόταν από το post (ή το get στην περίπτωσή σου &#8230; (αφού είναι που είναι get δεν του δίνεις ελληνικά labels να κάνεις και καλλίτερο SEO ;) )

Ελπίζω να μην σε μπέρδεψα , όπως και να έχει εξήγησε λίγο περισσότερο πώς έχεις σκεφτεί την δομή των δεδομένων για τους πίνακες και θα βρούμε την λύση και με την μέθοδο που έχεις επιλέξει.

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 03 Μάιος 2011 04:01

Η όλη ιστορία με τα φίλτρα γίνεται γιατί θέλω να περιορίσω τα προϊόντα που εμφανίζονται σε μια κατηγορία.

Αυτό το κάνει και το e-shop του plaisio.gr. Δηλαδή πας σε μια κατηγορία και έχει διάφορα φίλτρα σε κάθε κατηγορία.

Όταν πατάς σε ένα φίλτρο σου εμφανίζει τα προϊόντα που είναι συνδεδεμένα με αυτό το φίλτρο που επέλεξες και σου εμφανίζει και κάποια άλλα φίλτρα.

Τα άλλα φίλτρα που σου εμφανίζει είναι τα υπόλοιπα φίλτρα των προϊόντων που εμφανίζονται.

Δεν θέλω να μπερδέψω περισσότερο τις καταστάσεις, είναι ήδη δύσκολο για μένα να το κάνω. Αν δεν το εξήγησα πολύ καλά μπορείτε να δείτε π.χ. στην Κατηγορία: Laptop

Αν επιλέξεις το Φίλτρο Turbo-x τότε σου εμφανίζει και άλλα φίλτρα αλλά τα αποτελέσματα και τα φίλτρα έχουν περιοριστεί σύμφωνα με τις προτημήσεις του χρήστη.

Αυτό προσπαθώ να κάνω και δεν μου βγαίνουν τα query.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Συνδυαστικά φίλτρα eshop

Δημοσίευση από jpk » 03 Μάιος 2011 04:22

Έχω φτιάξει πολλά τέτοια &#8230;. σίγουρα το πλαίσιο δεν παίζει με αυτό το μοντέλο που (ακόμα δεν έχεις αναφέρει) &#8230; το Πλαίσιο (και κάθε Ελένη) αυτό που κάνουν είναι να έχουν κάποια κλειδιά στις βάσεις τους &#8230;.δεν είναι φίλτρα όπως τα εννοείς εσύ &#8230; απλά είναι συνδυαστικά id παραμετροποιημένων πινάκων &#8230;. Έχεις μια περίεργη αντίληψη το τι σημαίνει φίλτρο &#8230; έχεις άλλους πίνακες εκτός από αυτούς που έδωσες για να τους συσχετίσεις? &#8230; Και για να μην σε κουράζω για κάθε ιδιότητα του προϊόντος που θέλεις να ετεροκαθορίζεται πρέπει να φτιάξεις πίνακα που να είναι προσπελάσιμος από την εφαρμογή διαχείρισης&#8230;.. Να σημειωθεί ότι δεν είπες το πώς σκέφτηκες το μοντέλο δεδομένων προκειμένου να κτήσεις την εφαρμογή σου έτσι &#8230; το τι είναι το &#8230; products_filters και πως συνδέεται με τους άλλους πίνακες&#8230;

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 03 Μάιος 2011 04:26

Δεν χρησιμοποιώ κάποιο μοντέλο, απλώς τα έστησα έτσι στο μυαλό μου και τα έφτιαξα έτσι. Η εφαρμογή αυτή έχει διαχειριστική περιοχή που μπορείς να βάλεις προϊόντα τα οποία προϊόντα αντιστοιχούν σε κάποια φίλτρα (αν ο όρος φίλτρα δεν είναι σωστός, τότε ας πούμε χαρακτηριστικά).

Ο products_filters στην ουσία συνδέει τα χαρακτηριστικά προϊόντων με τα προϊόντα (δηλαδή το filter_ID με το product_ID) για να πεις ότι το Laptop X-Ψ έχει 512ΜΒ RAM.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Συνδυαστικά φίλτρα eshop

Δημοσίευση από jpk » 03 Μάιος 2011 04:32

Έχεις καμία όρεξη να μας πεις πως συνδέεται ότι το Laptop X-Ψ έχει 512ΜΒ RAM ? Το όνομα κάθε laptop είναι μοναδικό και το όνομα κάθε ram .... οπότε μπορώ να κάνω συσχετισμό .... ή αν δεν ήταν ram τι γίνεται τότε σε κάποια άλλη ιδιότητα... (να μην σε παίζω ... σβήστο και σκέψου 10 λεπτά πριν το ξαναγράψεις)

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 03 Μάιος 2011 04:35

Η σύνδεση γίνεται ως εξής: Δημιουργείς από την διαχειριστική περιοχή διάφορα χαρακτηριστικά και μετά πας να δημιουργήσεις νέο προϊόν και τσεκάρεις ποια χαρακτηριστικά είναι γι' αυτό το προϊόν και αποθηκεύονται τα ID στον πίνακα products_filters.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Συνδυαστικά φίλτρα eshop

Δημοσίευση από jpk » 03 Μάιος 2011 04:40

οκ αν δεν θέλεις να πεις το μοντέλο των δεδομένων για τους δικούς σου λόγους δεν μπορώ να βοηθήσω ... μπορεί και να έχεις και λόγο που δεν το λες ... να είναι κάτι σαν κρατικό μυστικό .... επίσης μπορεί να αντιγράφεις κάτι που δεν καταλαβαίνεις&#8230; υποθέσεις μπορώ να κάνω πολλές αλλά δεν έχει νόημα ... (αλλά αν ζητάς βοήθεια από forum να είσαι έτοιμη / έτοιμος να προσφέρεις όλες τις πληροφορίες) .

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 03 Μάιος 2011 04:50

Είπα ότι δεν χρησιμοποιώ κάποιο μοντέλο δεδομένων. Τώρα αυτό για το κρατικό μυστικό το θεωρώ κάπως ειρωνικό.

Οι πίνακες είναι αυτοί:
admins - οι διαχειριστές του site
customers - πελάτες του eshop
filters - τα φίλτρα (συνδέεται με filters_details όπου εκεί αποθηκεύονται τα values λόγω του ότι θα είναι πολυγλωσσικό site)
filter_categories - Κατηγορίες φίλτρων (για να είναι τα φίλτρα τακτοποιημένα σε κατηγορίες, πχ σε μια κατηγορία θα ανήκουν όλα τα φίλτρα για τους φορητούς υπολογιστές, συνδέεται με filter_categories_details)
filter_cats_product_cats - συνδέει τις κατηγορίες φίλτρων με τις κατηγορίες προϊόντων (αυτό για να πει ότι στην συγκεκριμένη κατηγορία στο sidebar θέλω να μου εμφανίσεις π.χ. όλα τα φίλτρα για τους φορητούς υπολογιστές)
languages - οι γλώσσες του eshop
newsletter - το newsletter του eshop
orders - οι παραγγελίες που έχουν γίνει (συνδέεται με το orders_products)
pages - στατικές σελίδες (συνδέεται με το pages_details)
products - τα προϊόντα (συνδέεται με το products_details)
products_filters - ποια φίλτρα ανήκουν σε κάθε προϊόν
products_photos - φωτογραφίες του κάθε προϊόντος (συνδέεται με τον products)
product_categories - κατηγορίες προϊόντων (συνδέεται με product_categories_details και product_categories_depth)
product_categories_depth - το βάθος της κάθε κατηγορίας (που ανήκει η κάθε κατηγορία π.χ. root, ή αν είναι subcategory)
settings - ρυθμίσεις eshop
shipping_price - κανόνες εξόδων αποστολής βάση της τιμής
shipping_weight - κανόνες εξόδων αποστολής βάση του βάρους
taxes - φορολογικοί συντελεστές
web2sms - sms μέσω του eshop

Η βάση μου έχει ως εξής:

Κώδικας: Επιλογή όλων

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS `admins` &#40;
  `admin_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `username` varchar&#40;50&#41; NOT NULL,
  `password` varchar&#40;100&#41; NOT NULL,
  PRIMARY KEY &#40;`admin_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `customers` &#40;
  `customer_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `first_name` varchar&#40;50&#41; NOT NULL,
  `last_name` varchar&#40;50&#41; NOT NULL,
  `home_address` varchar&#40;80&#41; NOT NULL,
  `telephone` varchar&#40;15&#41; NOT NULL,
  `home_postal` varchar&#40;5&#41; NOT NULL,
  `home_city` varchar&#40;50&#41; NOT NULL,
  `email` varchar&#40;50&#41; NOT NULL,
  `company_address` varchar&#40;80&#41; NOT NULL,
  `company_name` varchar&#40;100&#41; NOT NULL,
  `company_city` varchar&#40;50&#41; NOT NULL,
  `AFM` varchar&#40;10&#41; NOT NULL,
  `DOY` varchar&#40;20&#41; NOT NULL,
  `profession` varchar&#40;50&#41; NOT NULL,
  `username` varchar&#40;30&#41; NOT NULL,
  `password` varchar&#40;100&#41; NOT NULL,
  `newsletter` tinyint&#40;1&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`customer_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `filters` &#40;
  `filter_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `filter_category_ID` int&#40;10&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`filter_ID`,`filter_category_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;

CREATE TABLE IF NOT EXISTS `filters_details` &#40;
  `filter_ID` int&#40;10&#41; NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  `title` varchar&#40;200&#41; NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY &#40;`filter_ID`,`lang_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `filter_categories` &#40;
  `filter_category_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`filter_category_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `filter_categories_details` &#40;
  `filter_category_ID` int&#40;10&#41; NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  `title` varchar&#40;200&#41; NOT NULL,
  PRIMARY KEY &#40;`filter_category_ID`,`lang_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `filter_cats_product_cats` &#40;
  `filter_category_ID` int&#40;10&#41; NOT NULL,
  `category_ID` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`filter_category_ID`,`category_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `languages` &#40;
  `lang_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `lang_code` varchar&#40;5&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`lang_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `newsletter` &#40;
  `newsletter_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `email` varchar&#40;50&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`newsletter_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `orders` &#40;
  `order_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `code` varchar&#40;15&#41; NOT NULL,
  `sum` float NOT NULL,
  `customer_ID` int&#40;10&#41; NOT NULL,
  `payment_method` tinyint&#40;1&#41; NOT NULL,
  `shipping_address` varchar&#40;100&#41; NOT NULL,
  `shipping_tel` varchar&#40;15&#41; NOT NULL,
  `shipping_postal` varchar&#40;5&#41; NOT NULL,
  `shipping_city` varchar&#40;50&#41; NOT NULL,
  `progress` tinyint&#40;1&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`order_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `orders_products` &#40;
  `order_ID` int&#40;10&#41; NOT NULL,
  `product_ID` int&#40;10&#41; NOT NULL,
  `filter_ID` int&#40;10&#41; NOT NULL,
  `quantity` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`order_ID`,`product_ID`,`filter_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `pages` &#40;
  `page_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `status` tinyint&#40;1&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`page_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `pages_details` &#40;
  `page_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `title` varchar&#40;200&#41; NOT NULL,
  `description` text NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`page_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `products` &#40;
  `product_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `category_ID` int&#40;10&#41; NOT NULL,
  `tax_ID` int&#40;10&#41; NOT NULL,
  `start_date` int&#40;10&#41; NOT NULL,
  `end_date` int&#40;10&#41; NOT NULL,
  `status` tinyint&#40;1&#41; NOT NULL,
  `logo` varchar&#40;100&#41; NOT NULL,
  `weight` float NOT NULL,
  `price` float NOT NULL,
  `discount` float NOT NULL,
  `embed_code` text NOT NULL,
  `front_page` tinyint&#40;1&#41; NOT NULL,
  `product_code` varchar&#40;100&#41; NOT NULL,
  `quantity` int&#40;10&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`product_ID`,`category_ID`,`tax_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

CREATE TABLE IF NOT EXISTS `products_details` &#40;
  `product_ID` int&#40;10&#41; NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  `title` text NOT NULL,
  `description` text NOT NULL,
  PRIMARY KEY &#40;`product_ID`,`lang_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `products_filters` &#40;
  `product_ID` int&#40;10&#41; NOT NULL,
  `filter_ID` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`product_ID`,`filter_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `products_photos` &#40;
  `photo_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `product_ID` int&#40;10&#41; NOT NULL,
  `photo` varchar&#40;200&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`photo_ID`,`product_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

CREATE TABLE IF NOT EXISTS `product_categories` &#40;
  `category_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `status` tinyint&#40;1&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`category_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

CREATE TABLE IF NOT EXISTS `product_categories_depth` &#40;
  `parent_ID` int&#40;10&#41; NOT NULL,
  `category_ID` int&#40;10&#41; NOT NULL,
  PRIMARY KEY &#40;`parent_ID`,`category_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `product_categories_details` &#40;
  `category_ID` int&#40;10&#41; NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL,
  `title` varchar&#40;200&#41; NOT NULL,
  PRIMARY KEY &#40;`category_ID`,`lang_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `settings` &#40;
  `settings_key` varchar&#40;100&#41; NOT NULL,
  `value` text NOT NULL,
  `lang_ID` int&#40;10&#41; NOT NULL
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `shipping_price` &#40;
  `shipping_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `price` float NOT NULL,
  `charge` float NOT NULL,
  `extra_price` float NOT NULL,
  `extra_charge` float NOT NULL,
  `free_delivery` float NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`shipping_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `shipping_weight` &#40;
  `shipping_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `kilos` float NOT NULL,
  `price` float NOT NULL,
  `extra_kg` float NOT NULL,
  `extra_price` float NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`shipping_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `taxes` &#40;
  `tax_ID` int&#40;10&#41; NOT NULL AUTO_INCREMENT,
  `rate` varchar&#40;10&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`tax_ID`&#41;
&#41; ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

CREATE TABLE IF NOT EXISTS `web2sms` &#40;
  `sms_ID` int&#40;11&#41; NOT NULL AUTO_INCREMENT,
  `mobile` varchar&#40;10&#41; NOT NULL,
  `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00&#58;00&#58;00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY &#40;`sms_ID`&#41;
&#41; ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Τελευταία επεξεργασία από το μέλος kapoios001 την 03 Μάιος 2011 04:53, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Συνδυαστικά φίλτρα eshop

Δημοσίευση από jpk » 03 Μάιος 2011 04:50

από την διαχειριστική περιοχή ... πια διαχειριστική περιοχή ... χρήστης-διαχειριστής είσαι που θέλει να επέμβει στον κώδικα του προγραμματιστή χωρίς να έχει ιδέα τί πως και γιατί ? ...

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Συνδυαστικά φίλτρα eshop

Δημοσίευση από kapoios001 » 03 Μάιος 2011 04:54

Συγγνώμη αλλά τι λες;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης