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

    Creare menu dinamico partendo da una base dati di pagine

    Ciao a tutti, scusate se scasso violentemente le.....
    ho cercao in giro ma non sono riuscito a trovare un risultato soddisfacente......

    sto cercado di costruire un paio simil applicazioni web... ma mi sono incagliato in 2 problemi...che sono praticamente uno e mezzo.. cioè risolta il primo si risolve anche metà del secondo...


    per prima cosa parto da una base dati (SqLite, non odiatemi ma il mysql non lo reggo piu)
    con questa base dati
    0 id INTEGER yes primary key
    1 owner INTEGER no
    2 page INTEGER no
    3 titolo TEXT no
    4 note TEXT no
    5 vedere TEXT no '1'

    Owner è la pagina parentale PAGE cui la pagina in oggeto è figlia, se è "0" siamo sulla radice
    Page è un numero arbitrario ed indica una procedura PHP (100.php 200.php .358.php) che è anche il nome della mia pagina
    Titolo: è una cosa umanamnete comprensibile ("home", "clienti" e che sarà il testo del link
    note: per capire cosa fa ad esempio maschera immissione dati
    vedere: se è 1 la pagina apparià nel menu' altrimenti è una procedura (sempre indicizzata) che non deve essere visibile.

    lo scopo è ottenere il classico menu'
    home
    +- clienti
    |
    + aggiungi
    |
    + cerca

    + - stampe

    e cosi' via....
    il problema è che NON so quanti livelli avro' alla fine

    a fare una estrazione sqlite ed a fare un numero X di annidati.. ci si impiega assai ben poco.. il problema è che non so quanti livelli di profondità avro' alla fine del caricamento delle pagine....

    il secondo step (che mi serve per una seconda applicazione) è rendere "dinamico" il risultato.. ovvero quando clicco su una voce parentale si aprano a vista le voci contenute e cosi' via...
    ho guardato dei javascrips e ne ho trovato uno ... ma per me è arabo da quanto complesso...



    c'e' qualcuno che mi da una idea...
    almeno per risolvere il primo casino?

    grassie
    Disaster

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma il problema è di efficienza? altrimenti è sufficiente un ciclo... parti dal livello radice e scendi di uno alla volta fino a che non ce ne sono più...

  3. #3
    il problema è che non ho idea di come il loop per scendere...

    cioè lo saprei fare se avessi un numero FISSO di livelli...

    per l'efficenza direi che è abbastanza semplice risovere.. basta infilare in una serie di Array tutto il menu' in modo da poter schiafare il risultato appena si presenta l'owner corretto....

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    itendevo più che altro efficienza nelle query... un metodo "semplice" infatti è quello di fare:

    livello iniziale=0 (root)
    SELECT dei record "root" (owner=0)
    metto i record nella lista
    finchè la lista non è vuota...
    per ogni elemento...
    ...prendo quelli che hanno come parent tale elemento e lo aggiungo alla lista
    ...fine controllo lista

  5. #5
    non ci ho capito na crippa....

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    livello iniziale=0 (root)
    imposti una variabile, p.es. $livello=0

    SELECT dei record "root" (owner=0)
    fai un select dei record con "owner=0" e metti i risultati in un $array


    metto i record nella lista
    finchè la lista non è vuota...
    per ogni elemento...
    ...prendo quelli che hanno come parent tale elemento e lo aggiungo alla lista
    ...fine controllo lista


    fai un ciclo in $array finchè ci sono elementi: peschi con altri SELECT gli elementi che hanno quello corrente analizzato come parent e li aggiungi in coda al vettore $array stesso, togliendo dalla testa quello già controllato. A un certo punto $array diventerà vuoto e il ciclo è finito.
    Naturalmente dentro il ciclo devi anche popolare un'altro vettore per tenere traccia dell'albero dei menu che si viene a creare.

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.