php mysql tree

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

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

Απάντηση
ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

php mysql tree

Δημοσίευση από ksamole » 25 Νοέμ 2008 12:51

οχι απλως στο css μπορεις να το κανεις και πανω απο 4.
ο κωδικας βεβαια ειναι spaggeti αμα μπορει να τον φτιαξει καποιος...
κατα τα αλλα ειναι ωραιο css menu χωρις js και με 1 μονο query στην db

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

php mysql tree

Δημοσίευση από korgr » 25 Νοέμ 2008 13:46

Όσον αφορά το θέμα της JS είναι γνωστές οι απόψεις μου.
Ειδικά στο σήμερα νομιμοποιούμαστε να λέμε "No js no game!" (95% Js enabled browsers today)
Είναι τόσα πολλά τα πλεονεκτήματα της JS που και ένα menu να σώσεις έχεις χάσει λειτουργικότητα σε πολλά άλλα σημεία του site (ειδικά στο e-commerce που ασχολούμαι εγώ).

Από την άλλη προτιμώ την μέθοδο που θα μου δώσει no limits levels στις κατηγοριοποιήσεις! Αυτό δεν το αλλάζω με τίποτα!

Anyway η προσέγγιση σου με ένα query και js safe είναι πραγματικά πολύ καλή! :wink:

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

php mysql tree

Δημοσίευση από cpulse » 25 Νοέμ 2008 16:21

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

class Category {

    function __construct($id, $parent_id, $title) {
        $this->id = $id;
        $this->parent_id = $parent_id;
        $this->title = $title;
        $this->children = array();
    }

    function render() {
        if ($this->id > 0)
            echo '<li>' . htmlspecialchars&#40;$this->title&#41; . "\n";

        if &#40;!empty&#40;$this->children&#41;&#41; &#123;
            global $cats;
            echo '<ul>' . "\n";
            foreach &#40;$this->children as $id&#41;
                $cats&#91;$id&#93;->render&#40;&#41;;
            echo '</ul>' . "\n";
        &#125;

        if &#40;$this->id > 0&#41;
            echo '</li>' . "\n";
    &#125;

&#125;

$cats = array&#40;0 => new Category&#40;0, 0, ''&#41;&#41;;
$res = mysql_query&#40;"SELECT * FROM categories"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
while &#40;$rec = mysql_fetch_assoc&#40;$res&#41;&#41;
    $cats&#91;$rec&#91;'categoryID'&#93;&#93; = new Category&#40;$rec&#91;'categoryID'&#93;, $rec&#91;'parentID'&#93;, $rec&#91;'title'&#93;&#41;;

foreach &#40;$cats as $k => $v&#41;
    $cats&#91;$cats&#91;$k&#93;->parent_id&#93;->children&#91;&#93; = $k;

$cats&#91;0&#93;->render&#40;&#41;;
Δεν το χω δοκιμάσει αλλά έχω κάνει πολλές φορές τέτοια.. λογικά δεν θα βγάζει προβλήματα.

Edit: Έκανα μια μικρή διόρθωση στο κλείσιμο του <li>, και μια σημείωση.. οι κατηγορίες που είναι στο root θα πρέπει να έχουν για parentID την τιμή 0.

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

php mysql tree

Δημοσίευση από ksamole » 10 Δεκ 2008 22:38

τελικα το Adjacency List Model ειναι μαπα εδω το εξηγει
και μας λεει πως να χρησιμοποιουμε το nested model set
http://dev.mysql.com/tech-resources/art ... -data.html

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

php mysql tree

Δημοσίευση από korgr » 10 Δεκ 2008 23:46

Ευκαιρία να δημιουργήσεις το script σου με τον σωστό τρόπο :wink:

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

php mysql tree

Δημοσίευση από ksamole » 11 Δεκ 2008 05:10

ναι αυτο θα κανω.... απλα εμενα ειναι πολυγλωσσικες οι κατηγοριες και εχουνε
καποια extra joins τα queries

Απάντηση

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

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

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