Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32

    Visualizzazione tabella ricorsiva

    Ciao a tutti,

    ho una query ricorsiva in MSSQL che mi restituisce i risultati dell'estrazione dei topic e dei sottotopic di un forum in questa modalità:

    ID padre Id figlio Oggetto Testo Autore
    1 0 Prova Prova Tizio
    2 1 Reply Prova Reply Prova Caio
    3 1 Reply di Reply Prova dasdasdas Pinco
    4 0 Prova 2 Prova Sempronio

    Vorrei riprodurre la stessa gerarchia in php dove mi visualizza il padre con tutti i suoi figli, una volta visualizzato tutti i figli, mi visualizza il secondo padre e così via

    Con il classico "do while" o con il "while" non arrivo a fare ciò.

    Qualcuno ha un idea come potrei fare?

    CIao Mauro

    PS: usando solo la query citata se possibile

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Devi realizzare una struttura ad albero
    https://it.wikipedia.org/wiki/Albero_(informatica)

    Quote Originariamente inviata da mau79 Visualizza il messaggio
    Ciao a tutti,

    ho una query ricorsiva in MSSQL che mi restituisce i risultati dell'estrazione dei topic e dei sottotopic di un forum in questa modalità:

    ID padre Id figlio Oggetto Testo Autore
    1 0 Prova Prova Tizio
    2 1 Reply Prova Reply Prova Caio
    3 1 Reply di Reply Prova dasdasdas Pinco
    4 0 Prova 2 Prova Sempronio

    Vorrei riprodurre la stessa gerarchia in php dove mi visualizza il padre con tutti i suoi figli, una volta visualizzato tutti i figli, mi visualizza il secondo padre e così via

    Con il classico "do while" o con il "while" non arrivo a fare ciò.

    Qualcuno ha un idea come potrei fare?

    CIao Mauro

    PS: usando solo la query citata se possibile

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32
    Quote Originariamente inviata da bstefano79 Visualizza il messaggio
    Devi realizzare una struttura ad albero
    https://it.wikipedia.org/wiki/Albero_(informatica)
    Grazie per l'input. Ma come posso realizzarlo in PHP?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Io mi creerei due oggetti: Topic e SubTopic

    codice:
    class Topic 
    {
        public $id;
        public $oggetto
        public $testo
        public $autore
        public $subtopics;
        
        public function __construct($id,$oggetto,$testo,$autore)
        {
            $this->$id = $id;
            $this->$oggetto = $oggetto;
            $this->$testo = $testo;
            $this->$autore = $autore;
        }
        
        public function addSubtopic(SubTopic $sub)
        {
            $this->subtopics[] = $sub;
        }
        
        public function displayTopic()
        {
            // Qui fai quello che vuoi per visualizzare i dati dell'oggetto.
        }
    }
    
    
    class SubTopic
    {
        public $parentTopicId;
        public $oggetto;
        public $testo;
        public $autore;
        
        
        public function __construct($id,$oggetto,$testo,$autore)
        {
            $this->$parentTopicId = $id;
            $this->$oggetto = $oggetto;
            $this->$testo = $testo;
            $this->$autore = $autore;
        }
    }

    A quel punto scansioni le righe della tabella.
    Se Id figlio è 0 prendi i dati della riga e istanzi un nuovo Topic (padre) e lo metti in un array.
    Consiglio: usa "Id padre" come key, così sarà più facile aggiungere subtopic in seguito)

    Se Id figlio è > 0 prendi i dati e istanzi un nuovo Sottotopic (figlio) e lo inserisci nel Topic padre ricercandolo nell'array tramite la key "Id padre".

    Alla fine avrai un array di oggetti Topic ognuno con dentro i suoi SubTopic.

    Ho scritto il codice di getto e potrebbero esserci errori, ma è giusto per darti una direzione.

    p.s. questa non è l'implementazione dell'albero (che rimane una buona idea) è solo come lo farei io.

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.