Visualizzazione dei risultati da 1 a 7 su 7

Discussione: menu/lista dinamica

  1. #1

    menu/lista dinamica

    Ciao a tutti,
    premetto che sono alle prime armi con ASP (sto studiando i rudimenti e vado ancora un pò "a naso"...).

    Vorrei creare un menu/lista dinamica di link per la selezione di articoli; gli articoli devono essere suddivisi per categoria tematica e sono prelevati da due tabelle Access: "ARTICOLI" e "ARTICOLI_CAT". Nella prima tabella sono inseriti gli articoli (con i campi ID, categoriaID, Titolo, Autore, Data, Testo), la seconda tabella contiene i nomi delle categorie (categoriaID, categoriaNome).

    Mi piacerebbe inserire il tutto in un listato di questo tipo:

    <ul> [*]ARTICOLI CATEGORIA #1
    <ul> [*]Primo articolo categoria #1 [*]Secondo articolo categoria #1 [*]Terzo articolo categoria #1
    [ecc...] [/list]
    [*]ARTICOLI CATEGORIA #2
    <ul> [*]Primo articolo categoria #2 [*]Secondo articolo categoria #2 [*]Terzo articolo categoria #2
    [ecc...] [/list]

    ecc... [/list]

    Qual'è il modo migliore di procedere per inserire in modo dinamico il nome della categoria nel[*] "padre" e i relativi articoli filtrati nei[*] "figli"?

    Ciao e grazie
    Yappa
    Love&Peace

  2. #2
    hai già scritto un po' di codice, almeno l'sql che estrae i dati? se sì, postali così è più semplice aiutarti

  3. #3
    Originariamente inviato da Surrender79
    hai già scritto un po' di codice, almeno l'sql che estrae i dati? se sì, postali così è più semplice aiutarti
    Ciao,
    grazie e scusa se sono stato esauriente.

    L'SQL dovrebbe essere questa:

    codice:
    SELECT * FROM ARTICOLI, ARTICOLI_CAT WHERE ARTICOLI.categoriaID = ARTICOLI_CAT.categoriaID ORDER BY ARTICOLI.ID DESC
    Ho già fatto un pò di tentativi, ma non riesco a raggruppare gli articoli come vorrei...

    A presto
    Yappa
    Love&Peace

  4. #4
    Non capisco la tua select, sinceramente non ho mai visto cose fatte così quindi non sapendo se effettivamente può essere corretta o meno, ti posto la soluzione che adotterei io:

    codice:
    SELECT ARTICOLI.*, ARTICOLI_CAT.* FROM ARTICOLI
    INNER JOIN ARTICOLI_CAT ON ARTICOLI_CAT.categoriaID = ARTICOLI.categoriaID
    ORDER BY ARTICOLI_CAT.categoriaID DESC, ARTICOLI.ID DESC
    Prova a vedere se intanto così riesci a ottenere l'estrazione che ti serve, poi... il codice che apre il recordset e inizia a scrivere i link l'hai già scritto? Se sì posta pure quello così troviamo gli eventuali errori

  5. #5
    ...innanzitutto grazie per il supporto.

    Purtroppo non riesco a testarlo in questo momento in quanto non sto scrivendo dal mio PC di casa, e qui non ho i file (sto andando a memoria).

    Comunque io il recordset lo creo come segue

    codice:
    <%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open Application("Conn")
    
    Set rsArticoli = Server.CreateObject("ADODB.Recordset")
    Set rsArticoli = Conn.Execute("SELECT * FROM ARTICOLI, ARTICOLI_CAT WHERE ARTICOLI.categoriaID = ARTICOLI_CAT.categoriaID ORDER BY ARTICOLI.artORD ASC")
    %>
    (La connessione al DB è nell'Application global.asa; il sito me lo sono ritrovato fatto così... è una storia lunga...)

    Successivamente, l'estrazione dei dati funziona ma non riesco ad organizzarlo nel listato <ul> che ho riportato in precedenza.

    Se ad esempio scrivo:

    codice:
    <%Do while NOT rsArticoli.EOF%>
    [*]"><%=rsArticoli("titolo")%>
    
    <%
    rsArticoli.Movenext
    Loop
    %>
    Questo funziona, ma non è quello che intendo fare

    Premetto che non sono mai riuscito a usare l'sql INNER JOIN (mi da sempre errore; ora non ricordo quale, ma un errore legato ad Access)

    ...mmm...
    Love&Peace

  6. #6
    Allora, supponendo sempre che l'sql è quello che ti ho dato io... che ti ordina i record per categoria e poi per articolo, quello che vuoi tu dovrebbe essere questo (in rosso ti commento):

    codice:
    <%If not rsArticoli.EOF AND not rsArticoli.BOF then
        tmpIdCategoria = "" variabile che mi servirà per capire quando cambia la categoria 
        Do while NOT rsArticoli.EOF
        se la variabile è vuota (quindi entro per la prima volta nella creazione della lista) o se è diversa dall'ultima categoria memorizzata, devo creare il "padre" 
          If tmpIdCategoria = "" OR tmpIdCategoria <> rsArticoli("categoriaID") Then%>
            <ul> [*]"><%=rsArticoli("categoriaNome")%>
      	<%End If
        Adesso valorizzo la variabile con l'Id della categoria appena creata, e scrivo il link all'articolo 
    	tmpIdCategoria = rsArticoli("categoriaID")%>[*]"><%=rsArticoli("titolo")%>    
    mi sposto al record successivo. Se la variabile della categoria appena testata non corrisponde al nuovo idcategoria, devo chiudere il "padre"   	
    <%rsArticoli.MoveNext
                     If tmpIdCategoria <> rsArticoli("categoriaID") Then%>
      	[/list]
      	<%End If
      Loop
    End If%>

  7. #7
    ...cavolo, non vedo l'ora di provarlo (ma purtroppo devo aspettare stasera, perchè ora non sono nel mio pc...).
    Ti farò sapere... per adesso, Grazie mille!!!!
    Love&Peace

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.