Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [sql] Albero di dati (commenti gerarchici)

    Mi trovo nella situazione di dover creare un sistema di commenti in cui preferirei mettere la funzione di visualizzare i commenti per "discussione", modello menù ad albero.

    Ora vorrei studiare un'organizzazione del database (MySQL) e relativo script che mi permetta di ottenere i miei commenti in un array (o un qualcos'altro) che segua l'ordine gerarchico dei commenti.

    Come devo strutturare il database?

    Io per ora ho pensato ad un campo "padre", solo che non riesco a ricostruire facilmente la struttura in un array.

    C'è un modo per fare ciò con una query?

    Grazie

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Un buon metodo è la ricorsione.
    Ci sono molti argomenti simili a questo nel forum, prova a fare una ricerca.

  4. #4
    Grazie, ora studio e vedo cosa riesco a fare.

    La mia intenzione è quella di limitare al massimo le query, quindi per ora prendo in considerazione la soluzione dei Nested Sets, anche se devo ancora capire quanti loop mi servono :adhone:

  5. #5
    Originariamente inviato da vortex87
    Grazie, ora studio e vedo cosa riesco a fare.

    La mia intenzione è quella di limitare al massimo le query, quindi per ora prendo in considerazione la soluzione dei Nested Sets, anche se devo ancora capire quanti loop mi servono :adhone:
    Ciao,
    la tecnica dei nested sets è più rapida se devi prelevare lìintero albero o una sua porzione partendo da un punto x fino alla fine.
    Meno rapida se devi prelevare solo i figli (e non i discendenti) di un certo nodo.
    Sto mettendo a punto un sistema che dovrebbe limitare al massimo l'uso delle query anche in questo secondo caso.

    Il sistema tradizionale (cioè non nested sets) è molto efficiente nel recuperare i soli figli e molto INefficiente nel recuperare tutti i discendenti
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #6
    Originariamente inviato da Fabio Heller
    Ciao,
    la tecnica dei nested sets è più rapida se devi prelevare lìintero albero o una sua porzione partendo da un punto x fino alla fine.
    Meno rapida se devi prelevare solo i figli (e non i discendenti) di un certo nodo.
    Sto mettendo a punto un sistema che dovrebbe limitare al massimo l'uso delle query anche in questo secondo caso.

    Il sistema tradizionale (cioè non nested sets) è molto efficiente nel recuperare i soli figli e molto INefficiente nel recuperare tutti i discendenti
    A me serve proprio recuperare l'intero albero dei commenti, anche se per ora ho qualche problemino: non ho un unico elemento root (cioè ne ho alcuni che sono adiacenti ma non fratelli, poichè non hanno padre) e, quando vado a ricavare l'intero albero (leggendo MIN(lft) e MAX(rgt)) mi impalla Apache :master:

    Partendo però da un solo elemento primitivo il procedimento funziona bene.

    A dire la verità non so se il sistema che ho usato sia esattamente il Nested-sets, è questo: http://www.sitepoint.com/article/1105

    In particolare mi ha illuminato questo schema:

  7. #7
    Sì è quello
    per favore NIENTE PVT TECNICI da sconosciuti

  8. #8
    Originariamente inviato da Fabio Heller
    Sì è quello
    Bene

    Credo di aver capito il problema, o meglio: non ho capito come devo mettere gli elementi radice.

    Se io ho il primo che va da 1 a 4 (al suo interno c'è un figlio 2-3) il secondo elemento solo padre (senza figli) deve essere 1-2 o, come ho messo, 5-6, che però, in questo caso, mi fanno saltare il ciclo di riduzione dello stack.

    Grazie

  9. #9
    L'ordine è esattamente quello dell'immagine che hai postato, dov'è il problema?
    per favore NIENTE PVT TECNICI da sconosciuti

  10. #10
    Che io non ho solo "Food", ho anche "Drink", e i due non hanno un padre in comune: nell'esempio dell'immagine Drink (supponendolo senza figli) che numeri avrebbe? 19-20? Perchè se è così a me non funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.