Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461

    elenco categorie-prodotti

    Ciao!
    Devo creare una specie di elenco stile elenco telefonico
    solo che si basa su categorie e sottocategorie prese da db...
    il mio obbiettivo è creare un elenco in ordine alfabetico dove all'inizio in grassetto metto il nome della categoria e sotto tutte le sue sottocategorie associate,
    ad esempio:
    CATEGORIA 1
    -sottocat
    -sottocat
    CATEGORIA 2
    -sottocat
    -sottocat
    -sottocat
    ...
    e via dicendo...
    pero non riesco a creare un ciclo che mi dia questo risutltato!
    come potrei fare?

  2. #2
    Poche info, ma suppongo che tu abbia un db con (minimo) 2 tabelle
    CATEGORIE e SOTTOCATEGORIE

    Suppongo, sempre "suppongo", che tu abbia la prima così strutturata:

    | ID_CATEGORIA | DESCRIZIONE |

    e la seconda così:

    | ID_SOTTOCATEGORIA | ID_CATEGORIA | DESCRIZIONE |

    A questo punto puoi fare una select su CATEGORIE e salvarti i valori in una matrice:

    codice:
    <%
    'ipotizzo che tu abbia già aperto la connessione, dichiarato il recordset ecc...
    dim ArrCategorie
    dim TotaleCategorie
    dim IndiceArrCategorie
    dim Sql
    
    IndiceArrCategorie=0 'inutile ma chiarifica...
    
    Sql="Select id_categoria, descrizione from categorie" 'order by .... (se ti serve)
    rs.Open Sql, connessione
    if not rs.eof then   'ovviamente controlli che ci siano delle categorie
        TotaleCategorie=rs.recordcount
        redim ArrCategorie(TotaleCategorie,2)
        do until rs.eof
             ArrCategorie(IndiceArrCategorie,0)=rs("id_categoria")
             ArrCategorie(IndiceArrCategorie,1)=rs("descrizione")
             IndiceArrCategorie=IndiceArrCategorie+1
             rs.movenext
        loop
    else
       '-----------fai cio che vuoi
    end if
    
    if IndiceArrCategorie>0 then 'controlli se il recordset precedente non era vuoto ed eviti l'errore
         for IndiceArrCategorie=0 to TotaleCategorie - 1
               Sql="Select descrizione from sottocategorie where ID_CATEGORIA = " & ArrCategorie(IndiceArrCategorie,0)
               rs.Open Sql, connessione
               if not rs.eof then   'ovviamente controlli che ci siano delle sottocategorie
                    response.write "[b]" & ArrCategorie(IndiceArrCategorie,1) & "[b]
    "
                    do until rs.eof
                         response.write rs("descrizione") & "
    "
                         rs.movenext
                    loop
                    response.write "
    "
               else
                   '--------------cio che vuoi
               end if
               rs.close
          next
    else
         '-----------cio che vuoi
    end if
    
    'quindi scarichi connessione e recordset
    set rs=nothing
    set connessione=nothing
    Spero non ci siano errori....non l'ho testato, ma a parte qualche eventuale dimenticanza "ortografica" dovrebbe andare.

    Ciao e fammi sapere.
    Senatus PopulusQue Romanus

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    <%
    dim ArrCategorie
    dim TotaleCategorie
    dim IndiceArrCategorie
    dim Sql

    IndiceArrCategorie=0 'inutile ma chiarifica...

    sql="Select * from CATEGORIA" 'order by .... (se ti serve)
    aprirs sql
    if not rs.eof then 'ovviamente controlli che ci siano delle categorie
    TotaleCategorie=rs.recordcount
    redim ArrCategorie(TotaleCategorie,2)
    do until rs.eof
    ArrCategorie(IndiceArrCategorie,0)=rs("ID_CAT")
    ArrCategorie(IndiceArrCategorie,1)=rs("CATEGORIA")
    IndiceArrCategorie=IndiceArrCategorie+1
    rs.movenext
    loop
    end if

    if IndiceArrCategorie>0 then 'controlli se il recordset precedente non era vuoto ed eviti l'errore
    for IndiceArrCategorie=0 to TotaleCategorie - 1
    sql="SELECT CODICE from PRODOTTO where ID_CAT = " & ArrCategorie(IndiceArrCategorie,0)
    aprirs sql
    if not rs.eof then 'ovviamente controlli che ci siano delle sottocategorie
    response.write "[b]" & ArrCategorie(IndiceArrCategorie,1) & "[b]
    "
    do until rs.eof
    response.write rs("codice") & "
    "
    rs.movenext
    loop
    response.write "
    "
    end if
    rs.close
    next

    end if

    %>

    scrivendo questo codice mi da questo errore:

    Microsoft VBScript runtime error '800a0009'

    Subscript out of range: '0'

  4. #4
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    Originariamente inviato da KOLOSSEO
    Poche info, ma suppongo che tu abbia un db con (minimo) 2 tabelle
    CATEGORIE e SOTTOCATEGORIE

    Suppongo, sempre "suppongo", che tu abbia la prima così strutturata:

    | ID_CATEGORIA | DESCRIZIONE |

    e la seconda così:

    | ID_SOTTOCATEGORIA | ID_CATEGORIA | DESCRIZIONE |

    A questo punto puoi fare una select su CATEGORIE e salvarti i valori in una matrice:

    codice:
    <%
    'ipotizzo che tu abbia già aperto la connessione, dichiarato il recordset ecc...
    dim ArrCategorie
    dim TotaleCategorie
    dim IndiceArrCategorie
    dim Sql
    
    IndiceArrCategorie=0 'inutile ma chiarifica...
    
    Sql="Select id_categoria, descrizione from categorie" 'order by .... (se ti serve)
    rs.Open Sql, connessione
    if not rs.eof then   'ovviamente controlli che ci siano delle categorie
        TotaleCategorie=rs.recordcount
        redim ArrCategorie(TotaleCategorie,2)
        do until rs.eof
             ArrCategorie(IndiceArrCategorie,0)=rs("id_categoria")
             ArrCategorie(IndiceArrCategorie,1)=rs("descrizione")
             IndiceArrCategorie=IndiceArrCategorie+1
             rs.movenext
        loop
    else
       '-----------fai cio che vuoi
    end if
    
    if IndiceArrCategorie>0 then 'controlli se il recordset precedente non era vuoto ed eviti l'errore
         for IndiceArrCategorie=0 to TotaleCategorie - 1
               Sql="Select descrizione from sottocategorie where ID_CATEGORIA = " & ArrCategorie(IndiceArrCategorie,0)
               rs.Open Sql, connessione
               if not rs.eof then   'ovviamente controlli che ci siano delle sottocategorie
                    response.write "[b]" & ArrCategorie(IndiceArrCategorie,1) & "[b]
    "
                    do until rs.eof
                         response.write rs("descrizione") & "
    "
                         rs.movenext
                    loop
                    response.write "
    "
               else
                   '--------------cio che vuoi
               end if
               rs.close
          next
    else
         '-----------cio che vuoi
    end if
    
    'quindi scarichi connessione e recordset
    set rs=nothing
    set connessione=nothing
    Spero non ci siano errori....non l'ho testato, ma a parte qualche eventuale dimenticanza "ortografica" dovrebbe andare.

    Ciao e fammi sapere.
    Kolos sei da sposare !!!

  5. #5
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    Originariamente inviato da stewe19
    <%
    dim ArrCategorie
    dim TotaleCategorie
    dim IndiceArrCategorie
    dim Sql

    IndiceArrCategorie=0 'inutile ma chiarifica...

    sql="Select * from CATEGORIA" 'order by .... (se ti serve)
    aprirs sql
    if not rs.eof then 'ovviamente controlli che ci siano delle categorie
    TotaleCategorie=rs.recordcount
    redim ArrCategorie(TotaleCategorie,2)
    do until rs.eof
    ArrCategorie(IndiceArrCategorie,0)=rs("ID_CAT")
    ArrCategorie(IndiceArrCategorie,1)=rs("CATEGORIA")
    IndiceArrCategorie=IndiceArrCategorie+1
    rs.movenext
    loop
    end if

    if IndiceArrCategorie>0 then 'controlli se il recordset precedente non era vuoto ed eviti l'errore
    for IndiceArrCategorie=0 to TotaleCategorie - 1
    sql="SELECT CODICE from PRODOTTO where ID_CAT = " & ArrCategorie(IndiceArrCategorie,0)
    aprirs sql
    if not rs.eof then 'ovviamente controlli che ci siano delle sottocategorie
    response.write "[b]" & ArrCategorie(IndiceArrCategorie,1) & "[b]
    "
    do until rs.eof
    response.write rs("codice") & "
    "
    rs.movenext
    loop
    response.write "
    "
    end if
    rs.close
    next

    end if

    %>

    scrivendo questo codice mi da questo errore:

    Microsoft VBScript runtime error '800a0009'

    Subscript out of range: '0'
    Questo errore lo hai quando chiedi qualcosa che lui non ha trovato.
    Ora come detto io con i codici non ho tanto feeling a mala pena riesco a sistemare i miei figuriamoci quelli degli altri.
    Potrebbe esser che gli chiedi qualcosa che lui non ha trovato nel database quando ha letto il contenuto. Che so tu hai dentro 3 campi e gli chiedi dimmi cosa ci sta nel 4* campo...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    <%
    apro la conn
    set conn= Server.CreateObject("ADODB.Connection")
    conn.Open connstring
    Set objrs=server.CreateObject("ADODB.Recordset")
    Set objrs2=server.CreateObject("ADODB.Recordset")
    objrs.open "Select * from CATEGORIA",conn,3,3
    While Not objrs.eof%>
    <%=objrs("categoria")%>

    <%objrs2.open "select * From prodotti where ID_CAT='" & objrs("ID_CAT") & "'",conn,3,3
    While Not objrs2.eof
    response.write objrs2("PRODOTTO")%>

    <%obojrs2.movenext
    Wend
    objrs2.close
    objrs.movenext
    Wend
    objrs.close%>

    questo mi crea un elenco di categoria con relaive sottocategorie...e funziona alla pefezione!
    pero ora ho bisogno di inserire le sottocategorie delle sottocategorie...ho provato cosi':

    Set rs3=server.CreateObject("ADODB.Recordset")
    Set rs2=server.CreateObject("ADODB.Recordset")
    Set rs=server.CreateObject("ADODB.Recordset")
    rs2.open "SELECT * FROM CATEGORIA",conn,3,3
    While Not rs2.eof%>
    <h1><%=rs2("categoria")%></h1>

    <%
    rs3.open "SELECT * FROM TIPO WHERE ID_CAT='"&rs2("id_cat")&"'",conn,3,3
    While Not rs3.eof%>
    <h2><%=rs3("tipo")%></h2>

    <%rs.open "SELECT * FROM PRODOTTO WHERE ID_CAT='"&rs2("id_cat")&"' AND ID_TI='"&rs3("id_ti")&"'",conn,3,3
    While Not rs.eof%>
    <%=rs("prodotto")%>
    <%rs.movenext
    Wend
    rs.close
    rs3.movenext
    Wend
    rs3.close
    rs2.movenext
    Wend
    rs2.close
    %>

    ma mi sballa l'ordine delle sottocategorie finali(le "sottosottocategorie")

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