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

    Realizzare un formulario

    Ciao a tutti. Ho iniziato da poco a studiarmi ASP per obblighi lavorativi, per cui sono alle prime armi.
    Quello che devo fare è realizzare (ahimé con una certa urgenza) un formulario con dei combobox collegati tra loro (come potrebbero essere Regione-->Provincia-->Città) e dei campi da riempire obbligatoriamente, per poi salvare i dati in un DB access.

    Sono riuscito a creare i combobox (nel caso specifico seleziono la categoria, mi filtra le segnalazioni ed in base a questa i possibili riceventi). Poi dovrei riempire il campo data, descrizione e numero, ed inviare i dati nel db.

    Il codice che ho realizzato è questo:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    'If Session("IDUtente")="" Then
    ' Response.Redirect("login.asp")
    'Else
    %>

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" href="2col_rightNav.css" type="text/css" />
    <style type="text/css">
    .Stile2 {font-size: 36px}
    .Stile5 {color: #334d55; font-weight: bold; }
    .Stile6 {color: #FF0000; font-weight: bold; }
    </style>
    <SCRIPT LANGUAGE="JavaScript">
    function link() {
    var lArea='<%=Session("Area")%>';
    var lSegnalazione='<%Session ("Segnalazione")%>';
    var lCarico='<%Session ("Carico")%>';
    var lDataSegn='<%Session ("DataSegn")%>';
    var lNrSegn='<%Session ("NrSegn")%>';
    var lDescrSegn='<%Session ("DescrSegn")%>';
    window.location.href="InsSegn.asp?LA='"+lArea+"'&L S='"+lSegnalazione+"'&LC='"+lCarico+"'&LD='"+lData Segn+"'&LN='"+lNrSegn+"'&LD='"+lDescrSegn+"'"
    }
    </SCRIPT>
    </head>



    <body>
    <%
    %>

    <table>
    <tr>
    <td valign="top" width="800">
    <%

    Session ("Area")=request.form("Farea")
    Session ("Segnalazione")=request.form("FcodSegn")
    Session ("Carico")=request.Form("FCarico")
    Session ("DataSegn")=request.Form("FDataSegn")
    Session ("NrSegn")=request.Form("FNrSegn")
    Session ("DescrSegn")=request.Form("FDescrSegn")

    'Stringa per la connessione
    cString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("\NCB\prova.mdb")
    'set connession to database
    Set objConn=Server.CreateObject("ADODB.Connection")
    'open connession to database
    objConn.Open cString
    Set rs = Server.CreateObject("ADODB.Recordset")
    %>
    <form name="tabella1" method="post">

    <div align="center">
    Categoria:
    <select name="Farea" title="Categoria:" onChange="submit();">
    <option value="0" selected>Scegli una categoria</option>
    <%
    sql = "SELECT DISTINCT Area FROM NCS WHERE TIPO<>'NC' AND Disattiva=0 ORDER BY Area"
    rs.open sql, objconn
    if not rs.eof then
    do until rs.eof
    %>
    <option value="<%=rs.Fields(0).Value%>" <% if rs.Fields(0).Value=Session("Area") then %> selected <% end if %>>
    <%= RS.Fields(0).Value%></option>

    <%
    rs.movenext
    loop


    end if
    rs.close
    set rs = nothing

    %>
    </select>
    </div>



    <%

    if Session ("Area")<>"0" then
    Set RS1 = Server.CreateObject("ADODB.Recordset")
    sql1 = "SELECT IdCodice, Descrizione from NCS WHERE Area='"&Session("Area")&"'"
    'response.write sql1:response.end
    rs1.open sql1, objconn

    if not rs1.eof then
    %>
    <div align="center">
    Segnalazione:
    <select name="FcodSegn" onChange="submit();">
    <option value="0">Scegli una segnalazione</option>
    <%
    Do while Not RS1.EOF
    %>
    <option value="<%=RS1.Fields(1).Value%>" <% if RS1.Fields(1).Value=Session("FSegnalazione") then %> selected <% end if %>>
    <%= RS1.Fields(1).Value%></option>

    <%
    RS1.Movenext
    LooP
    end if
    rs1.close
    set rs1 = nothing
    end if
    %>
    </select>
    </div>



    <%

    if Session ("Segnalazione")<>"0" then
    Set RS2 = Server.CreateObject("ADODB.Recordset")
    sql2 = "SELECT DISTINCT Unita.Descrizione FROM (Unita INNER JOIN RiceventiSegn ON Unita.IdUnita = RiceventiSegn.IdUnita) INNER JOIN NCS ON RiceventiSegn.IdCodice = NCS.IdCodice WHERE (((NCS.Descrizione)='"&Session ("Segnalazione")&"'));"
    RS2.open sql2, objconn

    if not RS2.eof then
    %>
    <div align="center">
    A carico di:
    <select name="FCarico" onChange="submit();">
    <option value="0">Indica a chi è in carico</option>
    <%
    Do while Not RS2.EOF
    %>
    <option value="<%=RS2.Fields(0).Value%>">
    <%= RS2.Fields(0).Value%></option>

    <%
    RS2.Movenext
    LooP
    end if
    RS2.close
    set RS2 = nothing
    end if
    %>
    </select>
    </div>






    <div align="center">Data: <input name="FDataSegn" type="text" maxlength="10" onChange="submit();"/> (gg/mm/aaaa)</div>






    <div align="center">Nr di segnalazioni riscontrate: <input name="FNrSegn" type="text" maxlength="10" onChange="submit();"/></div>






    <div align="center">Descrizione: <input name="FDescrSegn" size="100" height="60" type="text" maxlength="255" onChange="submit();"/></div>






    <div align="center">
    <input type="button" value="invia dati" onClick="javascipt:link()"/>
    <input type="reset" value="annulla"/>
    </div>
    </form>
    <%



    objconn.close
    set objconn = nothing

    %>

    </td>
    </tr>
    </table>
    </body>

    </html>

    <%
    'end if
    %>

    Ho in pratica cercato di realizzare un link ad una seconda pagina dove poi ci sarà la query d'inserimento (se però i campi data/descriz ecc. non sono riempiti, dovrebbe reindirizzarmi a questa pagina, in modo da avere un controllo sull'inserimento corretto dei dati), però non mi prende tutti i parametri,ma solo il primo (eppure gli passo le stesse variabili di sessione che uso per costruire le query collegate).
    Ci sarà sicuramente qualche errore di javascipt (non conosco il linguaggio), ma se c'è qualche metodo migliore per realizzare il tutto, ben venga.
    Grazie

  2. #2
    Manca la Response.Write (l'uguale) dove assegni il valore della sessione alla variabile javascript. Come regola generale, verifica sempre il codice html prodotto per trovare eventuali mancanze nella controparte asp.

    Inoltre, attento, perchè potrebbe essere presente un errore concettuale nel codice. Se un utente:
    1. seleziona prima un certo valore X per la prima select
    2. seleziona un certo valore X_1 per la seconda select
    3. modifica il valore della prima select con Y
    4. effettua il click sul bottone <<invia dati>>
    In questo invia due valori non associati, X_1 ed Y.

    Infine, inviare il form per ogni modifica, anche di un input, può essere una seccatura per un utente. Prova a riconsiderare questa scelta.

    Ah, manca l'attributo action nel tag form

    Ciau!
    - Dean

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.