• User

    Problema recupero dati da menu a tendina

    Salve a tutti.
    Sto creando una pagina di modifica di alcune anagrafiche e vorrei selezionare la scheda da modificare tramite un menu a tendina in cui mi appaiono tutti i nominativi presenti nel DB. Attualmente ho scritto questo codice:

    <%
    strConnection = "Driver={SQL Server};Server=xx.xxx.xxx.xx;Database=MSSqlxxxxx;Uid=MSSqlxxxxx;Pwd=xxxxxx;"

    Set conn = Server.CreateObject("ADODB.Connection")

    conn.Open strConnection

    Set rs = Server.CreateObject("ADODB.recordset")

    query="SELECT * FROM TBL_Collaboratori"

    rs.open query,conn,1,3

    %>
    <form id="form1" name="form1" method="post" action="modifica.asp">
    <select name="nome">
    <% while not rs.eof %>
    <%response.Write("<option value="+rs("id")+">"+rs("nome")+"</option>")%>
    <% rs.movenext
    wend %>
    <% rs.close
    conn.close %>
    </select><br /><br />
    <input type="submit" name="Submit" class="button2" value="Modifica" />
    </form>

    Così facendo però il menu a tendina mi appare vuoto. Se invece il menu lo scrivo così:

    <%response.Write("<option value="+rs("nome")+">"+rs("nome")+"</option>")%>

    cioè gli dico di assumere come valore al posto dell'id il campo nome mi visualizza tutti i nominativi, anche se poi ovviamente non trova alcuna corrispondenza nella pagina successiva. La stessa cosa avviene se setto qualsiasi altro campo del db. Solo se imposto come value l'id il menu non funziona. Qualcuno può aiutarmi a capire dove sta il problema? Come DB uso MsSql Server
    Grazie a tutti....


  • User Attivo

    Prova così:

    <%response.Write("<option value=""" & rs("id") & """>" & server.HTMLEncode(rs("nome")) & "</option>")%>
    

  • User

    Wow, funziona......grandioso!!! :yuppi:

    Innanzitutto grazie mille per la risposta.
    Se puoi quando hai 2 minuti mi spieghi in maniera rapidissima come mai il tuo codice funziona ed il mio no???

    Grazie ancora.....


  • User Attivo

    Ciao allora i casi sono 2.
    Innanzitutto con il codice di prima avresti avuto un html così:

    value=1 e non value="1" semplicemente perchè le virgolette non le avevi raddoppiate.

    In secondo luogo ho aggiunto server.htmlencode perchè se un tuo nome ha dei tag html questi vengono stampati a video e non renderizzati come oggetto. In pratica non spezzerebbero l'html

    Per sapere cos'è di preciso dovrei avere il tuo caso sotto mano per poter escludere le cose.
    Ciao


  • User

    A mio parere il problema era dato dalla prima ipotesi da te proposta, anche se ovviamente può darsi che io sbagli.
    Comunque l'importante è che funziona, la mia era giusto una curiosità personale per comprendere soprattutto il comando server.htmlencode.

    Grazie ancora per l'aiuto rapido, preciso e conciso: non si può chiedere di meglio.....
    :ciauz: