Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    mysql struttura ricorsiva

    ciao....come posso con una select sfogliare tutta una struttura ad albero?

    mi spiego meglio...
    Ho 2 tabelle sul db

    1) Folder ed ha come campi...id , name e id_padre
    2) File ed ha come attributi id , name, id_folder

    a questo punto come faccio a cicliare finche le folder hanno hanno figli?
    non capisco proprio da dove iniziare

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    42
    semplicemente con una query del tipo

    SELECT campi che vuoi FROM tabellafolder
    RIGHT JOIN tabellafile
    ON tabellafile.idfolder = tabellafolder.id

    dovrebbe essere sufficiente a fare quello che vuoi ti serve...

    bio

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    mi sa che mi son spiegato male....

    fai conto che devo ricreare in php la struttura....quindi devo ciclare sui record mantenendo padri e figli correttamente....


    quella che mi hai proposto te funziona....ma non posso dire....che per ogni record folder che trova mi crea un oggetto php e per ogni record file mi crea un oggetto file php

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    42
    avevi chiesto con una select e ti ho dato una select :P

    non so che cos'è il php quindi non ti posso aiutare dopo questo punto:P

    aspettavo qualcuno che mi rispondesse al mio problema con mysql e questa stessa query:P

    bio

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    non chiedo codice php....

    vorrei solo vedere come cicli....e non un insieme di record tutti appiccicati

  7. #7
    Ammetto la mia ignoranza e la mia incredulità davanti ad una struttura di dati memorizzati in maniera ricorsiva in un Database MySQL.

    Solitamente una funzione di accesso ricorsiva potrebbe essere del tipo:
    codice:
    oggetto function ricorsiva($padre) {
    if (ha_figlio($padre)) return ricorsiva($padre.$figlio);
    else return "fine figli"; 
    }
    Ecco... grosso modo questa é la base teorica... solo che io conosco solo query SQL per accedere ai campi delle tabelle MySQL e non ho proprio idea di come si possa accedere ad una struttura ricorsiva memorizzata in un db MySQL.
    "it's a dark night!"
    Il sito internet del mio EX studio:
    http://www.tribal-art.it/
    Il sito internet dei Manutentori di Caldaie:
    http://www.manutentori-caldaia-polesani.it/

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361

    Re: mysql struttura ricorsiva

    Originariamente inviato da stiffa
    ciao....come posso con una select sfogliare tutta una struttura ad albero?

    mi spiego meglio...
    Ho 2 tabelle sul db

    1) Folder ed ha come campi...id , name e id_padre
    2) File ed ha come attributi id , name, id_folder

    a questo punto come faccio a cicliare finche le folder hanno hanno figli?
    non capisco proprio da dove iniziare
    Ti potrei aiutare ma vorrei sapere come vuoi sfruttare il risultato ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    grazie a tutti per la partecipazione.
    Allora... provero' a spiegarmi bene...

    Devo gestire un albero fatto di cartelle e file....Ogni cartella puo avere N sottocartelle.
    Questo albero va a pescare le informazioni dal db.
    Il mio problema non e' tanto accedere al db, ma avere una funzione che sfogli l'albero in tutti i suoi nodi , in modo che ad ogni nodo possa creare oggetti php opportunamente e popolare i miei array corrispondenti ai nodi...

    La relazione e ' CARTELLA 1 - * file ossia una cartella puo avere molti file ma anche ricorsivamente CARTELLA 1 - * CARTELLA una cartella puo avere N cartelle
    Ho quindi 2 oggetti php ...l'oggetto Cartella() e l'oggetto File()
    Cartella() ha al suo interno ha come attributi un array di File , un array di Cartelle un nome e id_parent
    Mentre file ha un nome e id_cartella.
    Tutto questo e' in stretta relazione con le tabelle del db che vi ho gia spiegato (vedi sopra);

    A questo punto devo fare la funzione php generateTree() che in pratica non fa altro che fare query per estrarmi tutti i risultati dal db e man mano che li sfoglia andro' a fare le new Cartella() o new File() popolando gli attributi a dovere.
    spero di esser stato chiaro
    grazie ancora

  10. #10
    Originariamente inviato da stiffa
    A questo punto devo fare la funzione php generateTree() che in pratica non fa altro che fare query per estrarmi tutti i risultati dal db e man mano che li sfoglia andro' a fare le new Cartella() o new File() popolando gli attributi a dovere.
    spero di esser stato chiaro
    grazie ancora
    beh scusa se già sai che fare...fallo e poi ci dici i problemi che stai incontrando...

    poi non per fare il polemico però se uno non sa da dove partire per creare un albero è meglio che prima si documenti un po su cos'è un albero, come lo si scorre e come lo si crea piuttosto che mettersi a creare codice senza avere una base sull'argomento...

    inoltre con un po di logica:
    codice:
    1) Per ogni cartella principale analizza tutte le sue sottocartelle
    2) Per ogni sottocartella stampa il suo nome
    3) Per ogni sottocartella stampa eventuali files e torna al punto 1
    nella maniera più banale puoi prima ricavarti i dati di cartelle e files dal database, metterli in un array e poi usarli.

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.