Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Menu ad albero con elementi da query

    Ciao a tutti,

    sono un nuovo utente di questo forum davvero utile...e sono qui per sottoporvi una domanda, sperando che qualcuno riesca ad aiutarmi.

    Dovrei realizzare in una pagina php un menu ad albero che si espande in base a quello che viene selezionato. Gli elementi della lista sono tutti dinamici, ovvero da recuperare tramite query SQL (MSSQL).

    Vi faccio un esempio:

    Lista Aziende

    Azienda_01
    Azienda_02
    ...

    Questa lista dovrebbe essere visualizzata facendo una SELECT sulla tabella Table_Azienda

    Successivamente l'utente facendo un click sull'azienda desiderata (o eventualmente su un apposito pulsante) dovrebbe visualizzare la lista dei reparti, ad esempio


    Azienda_01
    -- Amministrazione
    -- Ricerca e Sviluppo
    --Officina

    (anche i reparti dovranno essere visualizzati estraendo i dati con una query sulla tabella Table_Reparto "WHERE" Azienda='Azienda_01')

    Successivamente sempre con un click sul reparto desiderato dovrei visualizzare la lista dei dipendenti, ad esempio:

    Azienda_01
    -- Amministrazione
    -- Ricerca e Sviluppo
    --Officina (espando "Officina"...)
    ---Mario Rossi
    ---Carlo Verdi
    ---Fabio Bianchi


    Non mi interessa molto l'aspetto estetico, nel senso che posso usare qualsiasi oggetto, tipo menu a tendina, form, pulsanti...ecc, purchè si riesca a procedere con questa "espansione" dell'albero estraendo i dati dal db di SQL.


    Grazie in anticipo a tutti.

  2. #2
    insomma, parliamone... i livelli dell'albero immagino sia finiti, visto che per ogni livello fai una query ad una tabella diversa... quindi iniziamo dalla geografia: come facciamo a capire dove ci troviamo?

    nel senso, da quel che ho capito è un menu del tipo AZIENDA->REPARTO->IMPIEGATO->MAGARI_ALTRO

    come sai, quando clicchi su magari_altro, la path che hai fatto? Cioè immagino che ogni click sia un caricamento della pagina, o è via ajax? immaginiamo di avere tipo $_GET['azienda_id'], $_GET['reparto_id'], $_GET['impiegato_id'] e $_GET['magari_altro_id'] ?

    in quest'ultimo caso, avresti uno script del tipo:

    codice:
    
    $aziende = carico_tutte_le_aziende
    
    while ( $azienda in $aziende)
    {
         print link azienda;
         if($azienda['id'] == $_GET['azienda_id']){
              $reparti = carico_tutti_i_reparti_dell'azienda_selezionata
    
              while($reparto in $reparti){
                      print link reparto;
    
                      if($reparto['id'] == $_GET['reparto_id']){
                          //etc etc etc
                      }
    
              }
    
         }
    
    }
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Ciao,

    innanzitutto grazie per la risposta!
    No non è via ajax ma pensavo di caricare la pagina. Chiaramente le tabelle AZIENDA - REPARTO - DIPENDENTE sono collegate tramite foreign key (ma penso tu lo abbia intuito).

    Purtroppo non sono molto pratico con il php e questa storia del menu ad albero mi sta tirando scemo

    Nella table DIPENDENTE c'è un campo id_reparto che è la chiave esterna verso la table REPARTO.

    Nella table REPARTO c'è un campo id_azienda che è la chiave esterna verso la table AZIENDA.


    Banalmente la pagina potrebbe presentare all'inizio solo la lista delle aziende. Poi in base alla selezione dell'utente espandere i reparti dell'azienda selezionata...e successivamente i dipendenti.

    Spero di averti chiarito un po' di più la situazione. Non penso sia importante ma utilizzo SQL SERVER con apposito driver (FreeTDS). PHP è la versione 5.

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    Per rendere la cosa leggera ti conviene usare un po' di ajax che ad ogni clic su una voce, interroga il DB e ti restituisce i risultati cercati.

    L'alternativa è creare un file xml che contenga la struttura ad albero.
    Il file xml può essere generato onfly, oppure se non vi saranno troppe modifiche al DB, staticamente come file (in questo modo risparmi risorse perché leggi un file e non interroghi in continuazione il DB)

  5. #5
    ok...allora prova a seguire l'idea che ti ho dato io poi vediamo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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 © 2025 vBulletin Solutions, Inc. All rights reserved.