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

    Gestione categorie - si accettano consigli

    Salve ragazzi,
    mi sono spluciato il post vecchi non ho trovato nulla di utile, quindi vi spiego un mio problema.
    Allora sto progettando un sito che deve contenere i prodotti divisi per cateogrie/sotto categorie fino a un massimo di 5 livelli.
    Ora voi come oganizzereste una cosa del genere:
    ho cercato in rete alcuni utilizzano una sola tabella e memorizzano infinite sottocategorie - ok per la flessibità ma la gestione risulta molto onerosa. Altri utilizzano 1 tabella per ogni sottocategoria da memorizzare collegandola alle altre - questa mi sembra più consona ma si crea un macello quando un oggetto si trova catalogato in un numero minore di 5 livelli di categoria.

    Voi cosa consigliate?
    Grazie a tutti
    Marko!

  2. #2
    Una sola tabella.
    campoID - contatore
    campoNome - testo
    campoDescrizione - Memo
    parentID - numerico
    isProduct - numerico

    Esempio di tabella popolata:
    codice:
    campoID     campoNome      campoDescrizione  parentID  isProduct
       1        Casa             bla bla bla        0          0
       2        Abbigliamento    idem               0          0
       3        Mobili           idem               1          0
       4        Tavolo in noce   bla bla bla        3          1
       5        Uomo             idem               2          0
       6        Scapre           idem               5          0
       7        Donna            idem               2          0
       8        Collant          idem               7          0
       9        Nike             idem               6          1
      10        Golden Lady      idem               8          1
    Vediamo se comprendi la logica di questa tabella e a riprodurre la relazione tra le varie voci e a dire quali tra queste sono prodotti specifici oppure categorie, sottocategorie, etc...

  3. #3
    Originariamente inviato da Mems
    [CUT]
    Vediamo se comprendi la logica di questa tabella e a riprodurre la relazione tra le varie voci e a dire quali tra queste sono prodotti specifici oppure categorie, sottocategorie, etc...
    Ciao,
    grazie per la risposta.
    Ho capito la tua tabella ma mi sembra un che sia poi un casino quando devi ricostruire tutta la gerarchia.
    Cioè devi lancare una query per vedere qual'è la categoria di IV livello poi un altra per quello di III e così via.
    Ma da quanto ho letto sembra la soluzione più utilizzata.

    Ti ringrazio ancora.
    Marko!

  4. #4
    No, non è un casino risalire alla gerarchia.
    La pagina di default mostra solo le voci che hanno parentID = 0, ovvero le voci categorie principali.
    Ogni voce passa alla stessa pagina il proprio ID che recuperi dalla queryString e che passi alla query per recuperare le voci figlie di quella selezionata e così via. Quando poi becchi un record con isProduct = 1 allora sei arrivato alla scheda del prodotto.
    In questo modo non sei legato alla profondità di 2, 3, 5, 10 livelli, ma puoi andare in maniera infinta a N livelli di profondità.

  5. #5
    Originariamente inviato da Mems
    No, non è un casino risalire alla gerarchia.
    La pagina di default mostra solo le voci che hanno parentID = 0, ovvero le voci categorie principali.
    Ogni voce passa alla stessa pagina il proprio ID che recuperi dalla queryString e che passi alla query per recuperare le voci figlie di quella selezionata e così via. Quando poi becchi un record con isProduct = 1 allora sei arrivato alla scheda del prodotto.
    In questo modo non sei legato alla profondità di 2, 3, 5, 10 livelli, ma puoi andare in maniera infinta a N livelli di profondità.
    Sono d'accordo sulla flessibilità, ma per risalire la gerarchia all'indietro (partendo dall'oggetto è un pò un casino) però considerando che non è un operazione "da tutti i minuti" si potrebbe anche fare.

    Ti ringrazio per la disponibilità.
    Marko.

  6. #6
    Ecco una funzione per ricostruire ricorsivamente la gerarchia di valori ID:
    codice:
    <%
    function getParentPathByID(cn, valueID, cnt, byRef outArray)
    	if len(valueID) = 0 or not isNumeric(valueID) then valueID = 0
    	s = "SELECT parentID FROM tblNodes WHERE nodeID = " & valueID
    	set r = cn.execute(s)
    		if not r.eof then
    		reDim preserve outArray(cnt)
    		parentValueID = r("parentID")
    		outArray(cnt) = parentValueID
    			if not parentValueID = 0 then
    			cnt = cnt + 1
    			getParentPathByID cn, parentValueID, cnt, outArray
    			end if
    		end if
    	r.close
    	set r = nothing
    end function
    
    ID = request.queryString("ID")
    if len(ID) = 0 or (not isNumeric(ID) then ID = 0
    
    set conn = ...
    conn.open ...
    %>
    &raquo; Homepage 
    <%
    dim arrID()
    getParentPathByID conn, ID, 0, arrID
    
           if isArray(arrID) then	
    		for i = uBound(arrID) to lBound(arrID) step -1								 	
    			sql = "SELECT * FROM tblNodes WHERE nodeID = " & arrID(i) 			set rs = conn.execute(sql)
    				if not rs.eof then
    %>
    &raquo; <%=campoNome%>
    <%
    				end if
    			rs.close
    			set rs = nothing
    		next
    	end if
    
            if ID > 0 then		
    		sql = "SELECT * FROM tblNodes WHERE nodeID = " & ID 		set rs = conn.execute(sql)
    			if not rs.eof then
    %>
    &raquo; <%=rs("nodeName")%>
    <%
    			end if
    		rs.close
    		set rs = nothing
    		
    	end if
    
    conn.close
    set conn = nothing
    %>

  7. #7
    Utente di HTML.it L'avatar di luigi76
    Registrato dal
    Jan 2001
    Messaggi
    460
    Salve utilizzo anche io lo stesso sistema.Vorrei stampare tutto l'albero delle categorie è quale il miglior modo per farlo?

    Grazie anticipatamente

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.