Κατηγορίες με PHP+MySql+JQuery+Multi Languages

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

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

Απάντηση
Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από fafos » 30 Οκτ 2010 05:51

Έφτιαξα πριν λίγες ημέρες για έναν φίλο την διαχείριση κατηγοριών για το site του και λέω να το μοιραστώ μαζί σας.

Πριν προχωρήσω προσέξτε τα παρακάτω:

1. Η περιοχή admin δεν είναι ασφαλισμένη. Αν πρόκειται να το χρησιμοποιήσετε ασφαλίστε την με κάποιο τρόπο να μπαίνει μόνο ο διαχειριστής!

2. Η βάση και τα αρχεία είναι με κωδικοποίηση UTF-8 για ευνόητους λόγους.

3. Δεν με ενδιαφέρει που θα το χρησιμοποιήσετε (για προσωπικούς ή εμπορικούς λόγους). Για οιανδήποτε πρόβλημα όμως δεν φέρνω ευθύνη.



ΓΕΝΙΚΑ
Με αυτό το script μπορείτε να δημιουργήσετε απεριόριστες κατηγορίες και υποκατηγορίες. Επίσης μπορείτε να εμφανίζετε τις κατηγορίες σε διάφορες γλώσσες.


ΕΓΚΑΤΑΣΤΑΣΗ

Δημιουργήστε μία βάση δεδομένων με ένα όνομα (π.χ. categories).

Βάλτε τα παρακάτω μέσα στην βάση:

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

--
-- Table structure for table `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) DEFAULT '0',
  `sort_order` int(11) DEFAULT '0',
  `show_in_menu` tinyint(1) NOT NULL DEFAULT '1',
  `image` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `categories_lang`
--

CREATE TABLE IF NOT EXISTS `categories_lang` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `language` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `category` int(11) NOT NULL,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `description` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `languages`
--

CREATE TABLE IF NOT EXISTS `languages` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `short_name` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `flag_icon` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `sort_lang` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
αν θέλετε και τα παραδείγματα του demo μου μέσα στο zip που θα κατεβάσετε μπορείτε να ανεβάσετε την βάση από το αρχείο categories.sql.zip



Κατεβάστε και αποσυμπιέστε τα αρχεία που θα βρείτε εδώ: http://www.istopoli.com/tuts/categories/categories.zip

Ανοίξτε το αρχείο config-cats.php και αλλάξτε ότι γράφει εκεί μέσα (βάσεις, διαδρομές κλπ)

Όλα τα αρχεία ανεβάστε τα στο site σας σε ένα φάκελλο (π.χ. categories) και πηγαίνετε στο admin όπου η πρώτη σας δουλειά είναι να δημιουργήσετε τις γλώσσες και μετά τις κατηγορίες που θέλετε.

Δώστε CHMOD=777 στον φάκελλο images/categories/


...έτοιμο!!


Μέσα θα βρείτε και κάποια παραδείγματα εφαρμογής-εμφάνισης των κατηγοριών...


DEMO ADMIN: http://www.istopoli.com/tuts/categories/admin/ (μόνο για προεπισκόπιση, δεν μπορείτε να προσθέσετε ή να αφαιρέσετε κάτι)


DEMO ΕΜΦΑΝΙΣΗΣ ΚΑΤΗΓΟΡΙΩΝ: http://www.istopoli.com/tuts/categories/


Για οιανδήποτε απορία ΕΔΩ... δεν θα απαντάω σε pm...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Banavas » 30 Οκτ 2010 11:48

Fafe είναι καταπληκτικό.!!! :clap:

Έδωσα ρέστα με την αλλαγή σειράς των γλωσσών, πολύ προχωρημένη.
Happy coding....
Μάρκος
http://lasernet.gr

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Apostolis_38 » 30 Οκτ 2010 12:14

Ωραίος.

Εχω μια απορία όμως.
Στο functions.php, γιατί χρησιμοποιείς την list.
Τι κερδίζεις σε σχέση με ένα "απλό" $row όπως στο get all rows;
Ούτως ή άλλως κι εκεί μετά "χτίζεις" ένα array.

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Khronos » 30 Οκτ 2010 14:05

Ωραίο fafo! Αυτά τα notices να μην υπήρχαν μόνο! Έχω συνηθίσει να δουλεύω με τα πάντα ενεργά (erros, notices κτλ) και στην αρχή είδα ένα μαύρο πράμα! :P

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από fafos » 30 Οκτ 2010 17:11

Thanks dudes..

Marko den mporo na katalavo giati den to xrhsimopoioun oles oi nees efarmoges alla paramenoun sta velakia pano-kato kai mexri na anevaseis h na katevaseis mia kathgoria tros olh thn hmera... Vasika, sto script pou efeiaksa gia ton filo exo mia selida gia tis kathgories kai mia gia tis glosses oi opoies kanoun ta panta epitopou me full ajax.. to thema edo einai opoios to parei na to melethsei ena ena kai se oti tou aresei na dei tis texnikes.. h methodos ths mias selidas einai mperdema akoma kai gia mena pou to efeiaxa :lol:

Apostole na sou po thn alhtheia oute pou thymamai giati exo list ekei mesa.. oi 2 protes function einai toulaxiston 10 eton... thn array thn xrhsimopoio gia ta paradeigmata kai evala na kalei ta panta gia na mporei opoios thelei na ta xrhsimopoihsei analoga...

Khronos, ta notices paragmati einai ponokefalos alla to 99% ton servers ta exoun apenergopoihsei... se allh periptosh vazeis ena not notices sto config kai katharises..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Khronos » 30 Οκτ 2010 21:52

fafos έγραψε:Thanks dudes..

Marko den mporo na katalavo giati den to xrhsimopoioun oles oi nees efarmoges alla paramenoun sta velakia pano-kato kai mexri na anevaseis h na katevaseis mia kathgoria tros olh thn hmera...
Μήπως για το λόγο του ότι πρέπει να δημιουργηθεί μια σελίδα μόνο για το ordering στην οποία μάλιστα δεν φαίνεται η δενδρική δομή? Προσωπικά αυτός είναι ο λόγος που χρησιμοποιώ ακόμα τα βελάκια.

Πάντως αν υπάρχει τρόπος να γίνει, πολύ ευχαρίστως θα το γύριζα στο drag n drop!

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από dimsis » 30 Οκτ 2010 22:02

Khronos αυτό θα μπορούσε να γίνει πάνω σε κάποιο script σαν και το παρακάτω που έχει και drag drop και rename - delete:
http://www.dhtmlgoodies.com/scripts/dra ... -tree.html
ή σε jquery : http://www.jstree.com/demo

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από fafos » 30 Οκτ 2010 22:15

Khronos έγραψε:
Μήπως για το λόγο του ότι πρέπει να δημιουργηθεί μια σελίδα μόνο για το ordering στην οποία μάλιστα δεν φαίνεται η δενδρική δομή? Προσωπικά αυτός είναι ο λόγος που χρησιμοποιώ ακόμα τα βελάκια.

Πάντως αν υπάρχει τρόπος να γίνει, πολύ ευχαρίστως θα το γύριζα στο drag n drop!
Opos grafo parapano sthn selida tou dikou mou ta exo ola se mia selida (edit,delete, sorting klp).. to thema einai na analythei apo auton pou tha to parei gia na dei tis leitourgies.. to na sou doso mia class kai ena jquery 30 stremata den prokeitai na katalaveis kai polla.. einai thema fantasias kai gnoseon apo kei kai pera..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Khronos » 31 Οκτ 2010 14:07

dimsis έγραψε:Khronos αυτό θα μπορούσε να γίνει πάνω σε κάποιο script σαν και το παρακάτω που έχει και drag drop και rename - delete:
http://www.dhtmlgoodies.com/scripts/dra ... -tree.html
ή σε jquery : http://www.jstree.com/demo
Thanks! Θα τα τσεκάρω ;P
fafos έγραψε:Opos grafo parapano sthn selida tou dikou mou ta exo ola se mia selida (edit,delete, sorting klp).. to thema einai na analythei apo auton pou tha to parei gia na dei tis leitourgies.. to na sou doso mia class kai ena jquery 30 stremata den prokeitai na katalaveis kai polla.. einai thema fantasias kai gnoseon apo kei kai pera..
Έχεις δίκιο, απλά είχα την εντύπωση οτι δεν γίνεται...Θα το προσπαθήσω!

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Khronos » 01 Νοέμ 2010 21:51

Μια ερώτηση! Πώς θα εμφανίζατε τα προιόντα στο admin panel?

Πχ εγώ έχω ένα κουμπί view products δίπλα απο κάθε κατηγορία που με πάει στο products.php?cat=1 και ετσι βλέπω τα προιοντα που ανηκουν στη συγκεκριμμένη κατηγορία.

Υπάρχει κάποιος πιο λειτουργικός τρόπος? Εσεις πως το κανετε?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από fafos » 01 Νοέμ 2010 22:03

etsi einai o sostos tropos... to na to kaneis me ajax kai effedakia den vohtha kapou idiaitera..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από Khronos » 01 Νοέμ 2010 22:14

Thnx ;)

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από pimpogio » 06 Ιαν 2011 18:29

πολύ καλή δουλεία... μπράβο !!!

ωστόσο το Adjacency List Model ειναι παρωχημένο και εχει διαφορα προβληματα..
αλλα μπορεις να τα λυσεις με client side code ή stored procedures και αλλα δεν λυνονται.
Δεν ειναι κανονικοποιημενο το σχημα της βασης με οτι προβληματα συνεπαγετε αυτο..

Ποιο σωστο μοντελο ειναι το Nested Set Model
εχει εδω ενα παραδειγμα
http://dev.mysql.com/tech-resources/art ... -data.html
και για παραπανω πληροφοριες υπαρχει το πολυ καλο βιβλιο
Joe Celko's Trees and Hierarchies in SQL for Smarties

Επισης για storage engine η myisam δεν ειναι καλη γι αυτη τη δουλεια..
innoDB ειναι η σωστη επιλογη με ολα τα καλα που εχει..


ειχα και εγω το ιδιο προβλημα με τις κατηγοριες και εφαρμοσα το Nested Set Model..

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από korgr » 06 Ιαν 2011 21:25

pimpogio έγραψε: ωστόσο το Adjacency List Model ειναι παρωχημένο και εχει διαφορα προβληματα..
Θα προτιμούσα κάτω από αυτή την φράση να έβαζες:
1....
2....
3....
Μπορείς να μας πεις συγκεκριμένα προβλήματα με 50-100 εγγραφές στον πίνακα? Γιατί για κατηγορίες είναι υπέρ αρκετές...

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Κατηγορίες με PHP+MySql+JQuery+Multi Languages

Δημοσίευση από ThyClub » 06 Ιαν 2011 21:38

korgr έγραψε:
pimpogio έγραψε: ωστόσο το Adjacency List Model ειναι παρωχημένο και εχει διαφορα προβληματα..
Θα προτιμούσα κάτω από αυτή την φράση να έβαζες:
1....
2....
3....
Μπορείς να μας πεις συγκεκριμένα προβλήματα με 50-100 εγγραφές στον πίνακα? Γιατί για κατηγορίες είναι υπέρ αρκετές...
Όχι 50-100 κατηγορίες δεν είναι αρκετές... :)

1. 800 κατηγορίες με 2 υποκατηγορίες η καθε μία και τότε καταλαβαίνεις γιατί είναι προβληματικό... εκτός και αν ορίσεις κάποιον άλλο τρόπο πχ ajax...

Απάντηση

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

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

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