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

    Problema con request query string step 2

    Ho un piccolo problemino con una pagina di controllo ASP.
    Codice:

    <%Response.Expires = -1 %>
    <%Response.ExpiresAbsolute = Now() - 1 %>
    <%Response.AddHeader "pragma", "no-cache" %>
    <%Response.AddHeader "cache-control", "private" %>
    <%Response.CacheControl = "no-cache" %>
    <%
    Response.Expires = -1000
    Response.Buffer = True
    Response.Clear
    %>
    <%
    Function CheckEmail(str)
    Dim objER, result
    Set objER = New RegExp
    objER.Global = True
    objER.IgnoreCase = True
    objER.Pattern = "^[a-z0-9._-]+\@[a-z0-9._-]+\.[a-z]{2,4}$"
    result = objER.Test(str)
    Set objER = Nothing
    CheckEmail = result
    if CheckEmail = false then
    CheckEmail = result2
    else
    CheckEmail = ""
    end if
    End Function
    %>

    <%
    Dim id1
    id1=request.querystring("id")
    Dim Conn
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/vuoto.mdb")
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "select * from tabella where id ="&id1, conn, 3, 3
    Dim tom, pre, ven, vis, off
    tom=rs("tom")
    pre=rs("Prezzo")
    ven=rs("Venditore")
    vis=rs("Vis")
    off=rs("Off")
    rs.Close
    Set rs = Nothing
    Conn.Close
    Set Conn = Nothing
    %>

    <%
    If Request.QueryString("step") = 2 Then
    Dim Offerta, txtOfferta, txtEmail, txtNick, strData
    Offerta = Request.Form("Offerta")
    txtOfferta = Request.Form("txtOfferta")
    txtEmai = Request.Form("txtEmail")
    txtNick = Request.Form("txtNick")

    strData = Now()
    Dim errore, caratnonval, result2, campobb, min6car, min3car, deviacc, nickerrore, emailerrore, erroreofferta
    errore = 0

    caratnonval = "<span style=""color: #FF0000;"">Carattere non valido! "
    result2 = "<span style=""color: #FF0000;"">Email non valida! "
    campobb = "<span style=""color: #FF0000;"">Campo obbligatorio! "
    min6car= "<span style=""color: #FF0000;"">Minimo 6 caratteri! "
    min3car = "<span style=""color: #FF0000;"">Minimo 3 caratteri! "
    deviacc = "<span style=""color: #FF0000;"">Devi accettare! "
    nickerrore ="<span style=""color: #FF0000;"">NickName già in uso! "
    emailerrore ="<span style=""color: #FF0000;"">Email già in uso! "
    erroreofferta ="<span style=""color: #FF0000;"">Non puoi offrire di meno! "
    end if
    %>

    <html>

    <head>
    <title> Offri</title>
    <script type="text/vbscript">
    Function svuotacampi()
    document.FormOfferta.txtOfferta.value=""
    document.FormOfferta.txtEmail.value=""
    document.FormOfferta.txtNick.value=""
    End Function
    </script>
    </head>
    <body topmargin="0">
    <h3>Fai la tua offerta </h3>
    <p align="justify">Stai per fare la tua offerta : <font size=5 color=#0000FF><%response.write(tom)%></font>

    <align="justify">Registrato : <font size=5 color=#0000FF><%response.write(ven)%></font>

    <align="justify">Prezzo : <font size=5 color=#0000FF><%response.write(pre)%>,00 euro
    </font> </p>

    <form action="offri.asp?step=2" method="POST" name="FormOfferta" >
    <table width="100%">
    <tr> <td width="50%">
    La Tua Offerta :
    <% If Offerta <> "" And len(txtOfferta) <> "" Then
    Response.Write numerica(txtOfferta)
    errore = errore + 1
    end if
    %>

    <input align="right" type="text" name="txtOfferta" value="<%=txtOfferta%>" size="10" maxlength="10"> <font color="#000000">,00 euro</font>
    </td>
    <td width="50%"> La Tua Email :
    <% If Offerta <> "" And len(txtEmail) <=6 Then
    Response.Write campobb
    errore = errore + 1
    End If
    If Offerta <> "" And len(txtEmail) >= 7 Then
    Response.Write CheckEmail(txtEmail)
    End If
    %>

    <input type="text" name="txtEmail" value="<%=txtEmail%>" size="38" maxlength="35">
    </td></tr>
    <tr><td width="50%">

    Il Tuo Nick se registrato :
    <% If Offerta <> "" and len(txtNick) <= 5 then
    Response.Write min6car
    errore = errore + 1
    end If
    If Offerta <> "" and len(txtNick) >= 6 then
    Response.Write alfanumpic(txtNick)
    End If
    %>

    <input type="text" name="txtNick" value="<%=txtNick%>" size="20">

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


    <input type="submit" name="Offerta" value="Invia Offerta" >
    <input type="button" value="Cancella Dati" name="Cancella" onClick="svuotacampi()">

    </td>
    </form>

    <% response.write errore
    If Offerta <> "" And errore = 0 Then

    txtOfferta = Request.Form("txtOfferta")
    txtEmai = Request.Form("txtEmail")
    txtNick = Request.Form("txtNick")
    response.redirect "offerta.asp"

    end if
    %>
    </body>

    ------------------ fine codice
    Inserendo lo step "Impossibile visualizzare la pagina"
    Se tolgo la prima chiamata al DB posso andare avanti ma non ho i dati che mi servono.
    Se tolgo la funzione CheckMail mi passa anche email sbagliate.
    Quello che vorrei :
    carico il DB con i dati che mi servono,
    stampo la pagina html con i campi in attesa dell'utente,
    al submit passo il controllo alle funzioni, es. CheckMail, per la correzione dei vari campi,
    se tutto corretto redirect alla pagina offerta.
    In altre pagine lo "step 2" funziona a meraviglia, senza però nessun richiamo a DB prima dello step, può essere un conflitto tra i due sistemi?
    Le pagine sono ASP, il database Access.
    Grazie
    Daniele

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Verifica quanto valga lo "step" con una response.write step...
    Il controllo fallo così:
    codice:
    If Request.QueryString("step") = "2" Then
    Roby

  3. #3

    Di nuovo su query string step

    Grazie ma non va lo stesso. Lo step è corretto, valore 2 ma non segue niente.
    RIpeto se tolgo la prima chiamata al DB esegue lo step 2 e mi controlla i campi; ma poi non ho niente da passare all'altra pagina.
    Può essere dato dalla posizione?
    In linea di logica dovrebbe fare così :
    chiama il DB con i valori,
    stampa il form con i valori e i campi da riempire,
    una volta dato il submit va a sto benedetto step 2 e mi controlla i campi digitati,
    se non c'è nessun errore reindirizza all'altra pagina che processa il form.
    Ho altre pagine che funzionano similmente ma non hanno una chiamata al Db prima dello step. E' questo che sfascia tutto?
    Grazie
    Daniele

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La puoi mettere online in test questa pagina in modo che sia accessibile?

    Roby

  5. #5

    Problema querystring con step

    Purtroppo non posso metterlo ancora in linea perché è un lavoro che mi è stato affidato da un cliente.
    Ripeto : l'accesso al DB funziona, provato con altre pagine asp!
    lo step messo in fase di registrazione cliente funziona, con i relativi controlli dei campi del form, esempio CheckMail!
    ma l'accesso al DB prima e poi lo step su querystring non va per niente.
    La prima query prende i dati da DB riguardo l'articolo.
    La seconda (step=2) dovrebbe fare il controllo dei campi e se errore=0 passarli all'altra pagina che aggiorna il DB.
    Forse non vanno insieme nella stessa pagina?
    Ne ho provate molte ma purtroppo niente.
    Boh.
    Grazie
    Daniele
    P.S.: ho risolto cose un tantino più complicate di questa!

  6. #6
    Utente di HTML.it L'avatar di jonnyl
    Registrato dal
    Dec 2003
    Messaggi
    180
    scusa se al submit ti dice pagina non trovata l'errore è nell'action del form....
    Edit1: ci sono errori di ragionamento.

    Edit2: Boh e che è questa Response.Write numerica(txtOfferta)

    Non vedo una function numerica nella pagina.....
    Kovalsky per gli amici.

  7. #7

    Sempre query string step 2

    Sì scusa, non ho copiato interamente il codice, sono comunque dei controlli sui campi del form, in questo caso controlla che ci sia il prezzo dell'articolo, questo comunque funziona.
    La logica in sintesi è questa :
    Pagina 1 - elenco di vari articoli con alcune caratteristiche. Se clikko sul link mi apre la pagina con altre cose e la possibilità di comprare l'articolo.
    Pagina 2 - c'è la prima querystring con l'id dell'articolo selezionato. Con questo ID apro il DB Access e mi carico altre informazioni. L'utente inserisce tipo email e nick, controllo se siano validi (es. CheckMail) e se tutto va bene (querystring step=2) passo alla Pagina 3 che prende i dati dal form e li scrive in DB.
    Però al momento 1) se apro il primo DB poi non mi fa il controllo dei campi.
    2) se non apro il primo DB (e non ho altre informazioni sull'articolo!) mi controlla i campi. Ma poi passo altri dati a metà.
    E' forse la presenza di due Request.QueryString anche se con nomi differenti a creare il mio problema?
    Grazie

  8. #8
    Utente di HTML.it L'avatar di jonnyl
    Registrato dal
    Dec 2003
    Messaggi
    180
    Non puoi passare i dati del form come hai fatto !

    txtOfferta = Request.Form("txtOfferta")
    txtEmai = Request.Form("txtEmail")
    txtNick = Request.Form("txtNick")
    response.redirect "offerta.asp"

    questo è sbagliato non senda i dati con metodo post alla nuova pagina.

    Non hai bisogno di piu pagine per elaborare la richiesta ne basta una, e ad ogni step devi far cambiare l'action del form.
    Kovalsky per gli amici.

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.