Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: domanda su directory

  1. #1

    domanda su directory...per veri programmatori

    ciao ragazzi,
    ho da farvi una domanda alla quale, credo, che potranno rispondermi in pochi.
    Sto realizzando una directory con categorie e sottocategorie in php e mysql.
    L'idea è quella di fare iscrivere un visitatore in una o + categorie e sottocategorie.
    l'home page del sito conterrà le varie categorie-MACRO e le pagine interne le sottocategorie-MICRO.
    La mia domanda è questa:
    è possibile trovare un sistema tramite il quale io possa cliccare sulla MACRO-categoria in hp ed avere un'altra pagina con vari link alle sottogorie relative,poi clicco sulla sottocategoria e faccio un ulteriore sfoltimento del risultato di ricerca?
    esempio:

    --------------------------------------------------------------------------
    HOME PAGE

    categoria STAMPANTI
    categoria MONITOR


    ora clicco su stampanti ed ho un altra pagina con:

    sottocategoria EPSON
    sottocategoria CANON
    sottocategoria LEXMARK
    + elenco di tutti quelli che fanno parte di epson,canon,lexmark
    ----------------------------------------------------------------------------
    ...ovviamente le categorie e le sottocategorie le inserirò io da un pannello di amministrazione.

    Il programmatore che mi sta aiutando a fare questa directory dice che la ricerca sarà troppo lenta perchè "ricorsiva" e non conviene farla.
    Voi che mi dite?devo comunque chiedergli di farlo così o togliermi dalla testa di fare una ricerca nelle sottogategorie?
    Grazie...a quei pochi che risponderanno

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Forse non ho capito bene (probabile) ma non vedo quale sia il problema.

    A database avrai due tabelle circa categorie e sottocategorie (che conterrà un ID della tabella padre categorie) tramite le quali prima generi i link in Home page e poi cliccando su una Macro categoria andrai in una pagina in cui ti sei passato ad esempio l'ID della categoria in GET e con la quale richiami tutte le sottocategorie relative.

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    e se le sottocategorie avessero a loro volta delle sottocategorie?
    non puoi mica creare una tabella nel database per ogni livello di profondità dell'albero che si crea...
    secondo me la soluzione potrebbe essere usare un unica tabella per la descrizione dell'albero delle categorie.
    in questa tabella ogni record avrà un riferimento all'id del record padre (le macrocategorie avranno tale riferimento = 0).
    in questo modo potrai ricreare l'albero facilmente partendo dalle macrocategorie (identificabili dall'id=0) fino a scovare le relative sotto-sotto-sotto-...-sottocategorie.
    in un altra tabella terrai poi quello che le varie categorie contengono (mettiamo siano articoli) con un riferimento alla categoria di appartenenza.
    una volta che l'utente ha selezionato dall'albero la categoria di interesse passerà al server il suo id che verrà usato per fare una ricerca nella suddetta tabella.

    ricapitolando:
    tabella "categorie": (id, nome, id_padre)
    tabella "articoli": (id, titolo, testo, ... , id_categoria)

    la prima tabella la usi per disegnare l'albero dei link all'utente.
    la seconda la usi una volta che hai l'id della categoria scelta per trovare tutti gli articoli in essa contenuti...

    spero di essere stato chiaro....
    e sopratutto di aver centrato il problema :P

    ciao
    citrus

  4. #4
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Ok ok allora se il numero dei rami non è determinato bisogna giustamente optare per un'unica tabella AUTOREFERENZIANTE.

    Ad ogni record "categoria" assegni un proprio ID ed un ID padre ... bla bla bla.


  5. #5
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    bene allora siamo d'accordo

    non ho poi capito molto bene il discorso che ha fatto il tuo programmatore sulla velocità nelle ricerche....
    è chiaro che più è profondo l'albero con più query bisognerà fare per disegnarlo...
    perchè ogni volta che estrai un record dovrai fare una nuova query per cercare i record figli.. e per ciascuno di questi di nuovo un altra query per cercare i nipoti ecc...
    capisci anche tu che il numero di query aumenta in modo spaventoso...
    cmq se non intendi arrivare ad avere un albero gigantesco direi che il carico è sostenibile...
    altrimenti potresti strutturare l'albero delle categorie usando xml...
    ad ogni foglia dell'albero assegni un id univoco...
    questo id ti servirà poi per estrarre tutti gli articoli assegnati a quella determinata categoria...

    ex:
    codice:
    <stampanti>
      <laser>
         <hp id="1" />
         <canon id="2" />
      </laser>
      <aghi>
         <epson id="3" />
         <lexmark id="4" />
      </aghi>
    </stampanti>
    così dovrebbe essere meno pesante sfogliare le directory perchè in questo modo non impegni eccessivamente il database...
    ciauuuuuz

  6. #6
    ragazzi,innanzitutto vi ringrazio per le risposte.
    dovrò farle leggere al mio amicoke sta programmando perchè io ci capisco molto poco.
    Comunque l'idea è quella di fare una struttura tipo http://www.euroshopping.it/
    qui,se si clicca sulla macro categoria si va nell'altra pagina con le sottocategorie e la lista di tutte le aziende contenute nelle stesse sottocategorie. Poi cliccando sulla sottocategoria interessata si fa un ulteriore filtro.
    Quello che mi è stato detto è ke nel mio caso la ricerca potrebbe risultare lenta perchè i campi per ogni azienda sono una quindicina mentre su questo sito c'è solo,per ogni azienda, il nome,la descrizione e l'url.

    "il sito che mi hai fatto vedere
    per ogni azienda
    memorizza solo il titolo .. una descrizione .. e il link
    e quindi va scorrevole!

    tu per ogni azienda memorizzi un casino di dati
    quindi la ricerca ricorsiva è di molto + lenta"



    voi ke mi dite?

  7. #7
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Avete già determinato se una determinata sottocategoria può avere una sola categoria padre oppure se possono verficarsi delle referenze incrociate?

    Perchè in quest'ultimo caso avreste, ovviamente, bisogno anche di una tabella di collegamento per gestire la relazione M:N

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Sinceramente non capisco perchè la cosa dovrebbe essere ricorsiva...
    Alla fine visualizzare una sottocategoria è la stessa cosa di visualizzare una sottosottocategoria o una sottosottosotto.....sottocategoria nel senso che devi fare sempre lo stesso tipo e lo stesso numero di query.

    Mi spiego meglio:

    Tabella categorie

    codice:
    ID   |  Parent   |  Nome       |
    1          0           Stampanti
    2          0           Scanner
    3          1           HP  (sottocat di stampanti)
    4          3           Laser (sottocat. di HP)
    5          3           Inkjet (sottocat di HP)
    6          1           Canon (sottocat di stampanti)
    7          2           HP (sottocat di scanner)
    Tabella prodotti

    codice:
    ID   |   Categoria   |  Modello  | .... ....
    1                3            x
    2                4            y
    3                3            z
    ....
    Quindi tu avrai 2 query x pagina:
    1) SELECT * FROM categorie WHERE Parent = ....
    dove al posto dei puntini metti 0 se vuoi vedere le categorie principali oppure l'ID della categoria che stai guardando se vuoi vedere le sottocategorie o l'ID di una sottocategoria se vuoi vedere le sue sotto-sottocategorie e così via.
    Ad es. se metti 1 (stampanti) ottieni come risultati HP e Canon

    2) SELECT * FROM prodotti WHERE Categoria = ....
    dove al posto dei puntini metti l'ID della categoria di cui vuoi vedere i prodotti.

    Non so se ho capito male quello che vuoi fare, ma a me questo non sembra particolarmente pesante.

  9. #9
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    scusa ma se ho capito bene:
    tu hai delle categorie che a loro volta contengono delle sottocategorie e così via..
    fino a che ad un certo punto avrai, nell'ultima categoria dell'albero, delle aziende.
    giusto?

    non capisco allora cosa c'entri il fatto che le aziende abbiano tanti campi.....
    la ricorsività in questo caso è rivolta alle query che fai sulla tabella "categorie" per generare l'albero dei link, non alla tabella "aziende"...
    una volta che l'utente da questo menu ha scelto la categoria di interesse, cliccando sul link passa al server l'id della categoria scelta.
    a questo punto farai una sola query nella tabella "aziende" cercando quelle che hanno come referenza esterna l'id della categoria passato.

    ripeto: la ricorsività delle query viene fatta sulla tabella "categorie" per far in modo che, data la macrocategoria di partenza, si possano ricavarne tutte le sottocategorie con relative sottocategorie e via dicendo...
    quanti campi poi tu metta per descrivere un azienda non ha importanza (almeno per come vedo io la cosa).

    inoltre la ricorsività (intesa come il fare duecentomila query in un sol colpo per disegnare subito tutto l'albero) può anche essere evitata:
    invece che disegnare subito l'intero albero delle categorie puoi far apparire nella prima pagina solo le macro categorie (query: SELECT * FROM categorie WHERE id_padre=0),
    nella seconda pagina fai apparire solo le sottocategorie della macrocategoria selezionata (query: SELECT * FROM categorie WHERE id_padre=id_categoria_selezionata), e via dicendo....
    alla fine ti è sufficiente creare una sola pagina che non fa altro che un unica query per trovare, dato l'id della categoria padre, l'elenco di tutte le sue figlie.
    query: SELECT * FROM categorie WHERE id_padre=$GET["id_padre"]
    per visualizzare per prime le macrocategorie di basterà chamare di deafult la pagina in questo modo: categorie.php?id_padre=0


    se ho capito bene quello che devi fare non è poi molto complicato (sicuramente lo è meno di quanto non lo sia descriverlo qui )

  10. #10
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    Originariamente inviato da nICO80
    Sinceramente non capisco perchè la cosa dovrebbe essere ricorsiva...
    Alla fine visualizzare una sottocategoria è la stessa cosa di visualizzare una sottosottocategoria o una sottosottosotto.....sottocategoria nel senso che devi fare sempre lo stesso tipo e lo stesso numero di query.

    Mi spiego meglio:

    Tabella categorie

    codice:
    ID   |  Parent   |  Nome       |
    1          0           Stampanti
    2          0           Scanner
    3          1           HP  (sottocat di stampanti)
    4          3           Laser (sottocat. di HP)
    5          3           Inkjet (sottocat di HP)
    6          1           Canon (sottocat di stampanti)
    7          2           HP (sottocat di scanner)
    Tabella prodotti

    codice:
    ID   |   Categoria   |  Modello  | .... ....
    1                3            x
    2                4            y
    3                3            z
    ....
    Quindi tu avrai 2 query x pagina:
    1) SELECT * FROM categorie WHERE Parent = ....
    dove al posto dei puntini metti 0 se vuoi vedere le categorie principali oppure l'ID della categoria che stai guardando se vuoi vedere le sottocategorie o l'ID di una sottocategoria se vuoi vedere le sue sotto-sottocategorie e così via.
    Ad es. se metti 1 (stampanti) ottieni come risultati HP e Canon

    2) SELECT * FROM prodotti WHERE Categoria = ....
    dove al posto dei puntini metti l'ID della categoria di cui vuoi vedere i prodotti.

    Non so se ho capito male quello che vuoi fare, ma a me questo non sembra particolarmente pesante.

    ecco appunto..
    proprio come dice lui (non avevo letto bene) :P

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.