• User Attivo

    [Risolto] evidenziare voce menu dinamico in pagina corrente

    buongiorno a tutti,
    come da oggetto ho un menù con link che vengono creati su pagina asp da db access.

    Praticamente:
    link1
    link2
    link3
    link4

    ogni link porta ad una pagina del sito.

    quando clicco sul link2 nella nuova pagina il menù dovrebbe presentarsi in questo modo:
    link1
    link2
    link3
    link4

    ovvero il link relativo alla pagina in cui mi trovo dovrebbe essere evidenziato.

    Il mio problema è che non saprei come fare per collegare le due cose, ovvero: nella nuova pagina devi riconoscere da che link si è aperta e di conseguenza mi devi evidenziare il link corrispondente.

    Spero di essermi spiegato e che qualcuno possa aiutarmi.

    Grazie,
    c.


  • Moderatore

    Ciao Bormiositi,

    Mi viene in mente questo:

    Potresti catturare la pagina corrente con

    Request.ServerVariables("SCRIPT_NAME")
    

    Confrontare il risultato con gli elementi del menù, quando uno di questi corrisponde lo evidenzi.

    Buon lavoro! 😉


  • User Attivo

    intanto grazie per la risposta.
    Quindi se on ho capito male dovrei fare un IF sulle voci del menù e quando trova la voce corrispondente alla pagina la faccio evidenziare.

    Il problema è che ho solamente una conoscenza base di ASP e quindi sono completamente a digiuno della sintassi che dovrei scrivere.

    Quando io clicco su una voce del menù praticamente l'indirizzo della nuova pagina contiene l'ID del record relativo alla voce cliccata: quindi l'IF devo farlo su quell'ID?

    Grazie ancora,
    c.


  • Moderatore

    Scusa ma mi sono perso, puoi fare un esempio concreto di URL contenuto nei link delle pagine?


  • User Attivo

    l'indirizzo della pagina dopo aver cliccato sulla voce del menu è questa: w w w.miosito.it/dettaglio-progetto.asp?id=33

    praticamente l'ID 33 se l'è portato dietro dopo aver cliccato sulla voce del menu.

    A questo punto dovrei creare un IF su tutte le voci del menù per andare a vedere quale di quelle ha l'id=33 e quindi evidenziarla


  • Moderatore

    Ah ok, allora è più semplice...

    Se confronti **Request.QueryString("id") **con l'id della pagina ottieni il confronto, sì con un If sulle voci di menù.
    Se i link provengono da una tabella di Access allora puoi scorrerle con un For Each e per ciascuna confrontare l'ID del link con quello che trovi nel QueryString...

    Buon lavoro 😉


  • User Attivo

    ok, ora ci provo e poi semmai ti disturbo di nuovo.

    grazie 1000 per la disponibilità!!!!


  • Moderatore

    Figurati, facci sapere com'è andata...


  • User Attivo

    ciao artcava, come pensavo sto avendo problemi con lo script.....

    Ho provato in questo modo:

    
    <%Do while NOT RS.EOF%>
    <%
        if request.QueryString("id") <> rs("id") then
        response.write ("<span class='evid_txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")
        else 
        response.write ("<span class='txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")
        end if
        rs.MoveNext 
        Loop 
        rs.Close 
        Set rs = Nothing
        objConn.Close 
    Set objConn=Nothing
    %>
    
    

    così facendo però mi evidenzia tutti i link allo stesso modo e non solamente quello relativo all'id della pagina in cui mi trovo.
    Dove sbaglio?

    Grazie ancora!!!


  • Moderatore

    Ciao Bormiositi, la prima cosa che mi viene in mente è che rs("id") non contiene mai quello che arriva nel QueryString...

    Quindi siccome rs("id") dovrebbe essere un tipo numerico, mentre il valore in QueryString è un testo, è probabile che anche se sembrano uguali in realtà sono sempre diversi.

    Prova così:

    
    <%
    Do while NOT RS.EOF
        if request.QueryString("id") <> CStr(rs("id")) then    
            response.write ("<span class='evid_txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")    
        else     
            response.write ("<span class='txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")    
        end if    
        rs.MoveNext     
    Loop     
    rs.Close     
    Set rs = Nothing    
    objConn.Close 
    Set objConn=Nothing
    %>
    
    

  • User Attivo

    ciao artcava e grazie ancora per l'attenzione.
    ho provato a fare come dici tu ma ora quando sono sulla pagina interessata non mi mostra più l'elenco dei link ma solamente quello relativo alla pagina in cui mi trovo e peraltro non viene nemmeno evidenziato come da istruzioni.

    Forse mi sono spiegato male: nella pagina in cui mi trovo dovrebbe comunque esserci l'elenco dei link (richiamato dalla select):

    
    strSQL="SELECT * FROM progetti WHERE id =  " &id& " ORDER BY periodo DESC ;"
    
    

    e dovrebbe essere evidenziato solamente il link relativo alla pagina stessa.

    Ti riassumo tutto lo script che dovrebbe eseguire l'operazione desiderata:

    
    <%
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection") 
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("mdb-database/bear.mdb") 
    ID=request.QueryString("id")
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset") 
    strSQL="SELECT * FROM progetti WHERE id =  " &id& " ORDER BY periodo DESC ;"
    rs.Open strSQL,conn,1,3 
    %>
    
    <%Do while NOT RS.EOF
        if request.QueryString("id") <> CStr(rs("id")) then    
            response.write ("<span class='evid_txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")    
        else     
            response.write ("<span class='txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")    
        end if    
        rs.MoveNext     
    Loop     
    rs.Close     
    Set rs = Nothing    
    conn.Close 
    Set conn=Nothing
    %>
    
    

    Ti ringrazio ancora per il prezioso aiuto.


  • Moderatore

    OK, ma facendo quella query estrai solo il record che contiene quell'id, dovresti invece eseguire la query senza filtro per id in modo da avere tutti i record a diosposizione da scorrere...


  • User Attivo

    ecco appunto, ma come ti dicevo non saprei proprio come fare a scorrere tutti i record e confrontarli con l'id della pagina....
    un aiutino?

    grazie


  • Moderatore

    OK, prova così:

    
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection") 
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("mdb-database/bear.mdb") 
    ID=request.QueryString("id")
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset") 
    strSQL="SELECT * FROM progetti ORDER BY periodo DESC ;"
    rs.Open strSQL,conn,1,3
    
    Do while NOT RS.EOF    
        if request.QueryString("id") <> CStr(rs("id")) then
             response.write ("<span class='evid_txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")
        else
             response.write ("<span class='txt'><a href=dettaglio-progetto.asp?id="&rs("id")&">"&rs("nome")&"</a></span><br>")
        end if
        rs.MoveNext     
    Loop     
    rs.Close     
    Set rs = Nothing    
    conn.CloseSet 
    conn=Nothing
    
    

  • User Attivo

    grande artcava, moooolto gentile!!!!!!
    ho capito dov'era l'errore: nella select gli dicevo di tirarmi fuori solo il record con un certo ID ed è per quel motivo che nell lla pagina veniva mostrato solamente un link.

    E poi grazie a:

    
    
     if request.QueryString("id") <> CStr(rs("id")) the
    
    

    sono riuscito a fare il confronto tra gli ID: quello portato dalla pagina precedente e quello presente nel link.
    Davvero grazie ancora!!!!

    PS come faccio a mettere (RISOLTO) davanti al titolo del post????


  • Moderatore

    Figurati...

    Per il (RISOLTO) non saprei, non mi sembra venga utilizzato... Chiedo e ti faccio sapere!


  • Consiglio Direttivo

    Messo il tag. 😉

    Grazie per aver condiviso idee e conoscenze e aver portato alla felice risoluzione del caso in esame.

    :ciauz: e buon proseguimento in gt.


  • User Attivo

    Grazie a tutti voi per il prezioso aiuto!!!

    Ottimo forum!!! Complimenti!!!:gthi: