Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Controllo esistenza record particolare

    Ciao.

    Una vostra opinione su come organizzare al meglio questa procedura asp.

    1) Lo script controlla che nel database mysql non ci siano records simili a quello che l'utente vuole registrare:

    codice:
    <%
    
    strNome = "MARIO"
    strCognome = "ROSSI"
    strData_comunicazione = "30/05/2008"
    strCittà = "ROMA"
    
    SQL = "SELECT * FROM " 
    SQL = SQL & " comunicazioni " 
    SQL = SQL & " WHERE " 
    SQL = SQL & " Nome = '" & strNome & "' " 
    SQL = SQL & " AND " 
    SQL = SQL & " Cognome = '" & strCognome & "' "
    SQL = SQL & " AND " 
    SQL = SQL & " Data_comunicazione = '" & strData_comunicazione & "' "
    SQL = SQL & " AND " 
    SQL = SQL & " Città = '" & strCittà & "' "
    response.write SQL &"
    
    "
    
    set RS = Server.CreateObject("ADODB.Recordset")
    Rs.Open SQL, cn
    
    if RS.eof then
       '//Eseguo registrazione
    else
       response.redirect ("controlloSegnalazione.asp")   
    end if
    
      RS.close()    
      set RS = nothing 
    
      cn.close()    
      set cn = nothing 
    
    %>
    2) Se i dati inseriti sono del tutto nuovi eseguo automaticamente la registrazione altrimenti lo rimando alla pagina controllaSegnalazione.asp.

    3) Sulla pagina controllaSegnalazione.asp l'utente visualizza eventuali records simili già inseriti, ma lo lascio libero di registrare la sua nuova comunicazione ( PROSEGUI ) o rinunciare alla registrazione ( ANNULLA ).

    4) nel caso in cui dovesse decidere ( nonostante esiste già un record/s simile già registrato nel db ) di continuare a registrare la sua segnalazione come posso organizzare il proseguimento dello script e "portarmi dietro" la mole dei dati già inseriti nel form di registrazione ?

    Saluti.
    MR

  2. #2
    Dovresti fare tutto nella stessa pagina.
    Invece del redirect metti il blocco di codice che visualizza i dati simili e in campi hidden i dati presi dalla prima form con un ulteriore campo hidden dove passi (ad esempio) 1 per dire che stai dando una ulteriore conferma.
    Facendo la request anche su quest'ultimo campo hidden, se passa "1" allora vuol dire che devi saltare il controllo se i dati esistono, altrimenti fai il controllo.
    Tutto in una pagina.

  3. #3
    Originariamente inviato da Domenix
    Dovresti fare tutto nella stessa pagina.
    Invece del redirect metti il blocco di codice che visualizza i dati simili e in campi hidden i dati presi dalla prima form con un ulteriore campo hidden dove passi (ad esempio) 1 per dire che stai dando una ulteriore conferma.
    Facendo la request anche su quest'ultimo campo hidden, se passa "1" allora vuol dire che devi saltare il controllo se i dati esistono, altrimenti fai il controllo.
    Tutto in una pagina.
    OK, ci provo e ti faccio sapere; grazie x il momento.

  4. #4
    Sono bloccato qui... questa è la pagina default.asp :

    codice:
    if request.querystring("Approvato") <> 1 then 
    
    '//CONTROLLO ESISTENZA RECORD
    
    SQL = "SELECT * FROM ..."
    
    set RS = Server.CreateObject("ADODB.Recordset")
    Rs.Open SQL, cn
    
    if RS.eof then                    
    
    '//QUERY DI REGISTRAZIONE NELLA TABELLA
    
    else
    %>
    
    
    
    <%   
    
    end if
    
      RS.close()    
      set RS = nothing 
    
    end if  
    
    %>
    In controlloSegnalazione.asp ho previsto ( oltre alla stampa del record simile ) :

    codice:
    <form method="POST" action="Default.asp?Approvato=1">  
    
    <input type=hidden name=Data_comunicazione value="<%=strData_comunicazione%>"> 
    
    </form>
    Ma quando approvato = 1 non parte la INSERT INTO... :master:

  5. #5
    Supponiamo che la form passi i campi nome e cognome.
    La pagina che sta nel post della form è:
    codice:
    <%
    approvato = trim(request.form("approvato"))
    nome = trim(request.form("nome"))
    cognome = trim(request.form("cognome"))
    
    esegui = false
    
    set conn = ...
    conn.open ...
    
    if approvato = <> "1" then
      ' qui il controllo se i dati esistono già
      sql = "SELECT nome, cognome FROM tabella WHERE nome = '" & nome & "' AND cognome = '" & cognome & "'"
      set rs = conn.execute(sql)
        if not rs.eof then
          do until rs.eof
          ' elenchi i dati uguali
            response.write rs("nome") & " " & rs("cognome") & "
    "
            rs.moveNext
          loop
          ' qui metti la form per ripostare i dati
    %>
    <form method="post">
    Confermare comunque?
    <input type="hidden" name="nome" value="<%=nome%>" />
    <input type="hidden" name="cognome" value="<%=cognome%>" />
    <input type="hidden" name="approvato" value="1" />
    <input type="submit" value="si" />
    </form>
    <%
        else
          esegui = true
        end if
      rs,close
      set rs = nothing
    else
      esegui = true
    end if
    
    if esegui then
      sql = "INSERT INTO tabella (nome, cognome) VALUES(?" & nome & "', '" & cognome & "')"
      conn.execute(sql)
    end if
    
    conn.close
    set conn = nothing
    %>

  6. #6
    Scusa dom non capisco questa parte del tuo codice:

    codice:
    if esegui then
      sql = "INSERT INTO tabella (nome, cognome) VALUES(?" & nome & "', '" & cognome & "')"
      conn.execute(sql)
    end if
    Esegui che valore deve prendere?

  7. #7
    Guarda tutto l'esempio.
    Cerca dove sta la variabile boolean di nome esegui.

  8. #8
    Originariamente inviato da Domenix
    Guarda tutto l'esempio.
    Cerca dove sta la variabile boolean di nome esegui.
    Si, ma non dovrebbe essere:

    codice:
    if esegui = true then
      sql = "INSERT INTO tabella (nome, cognome) VALUES(?" & nome & "', '" & cognome & "')"
      conn.execute(sql)
    end if
    Sbaglio?

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    ma cos'è?


    codice:
    VALUES(? " & nome & "'
    Roby

  10. #10
    Originariamente inviato da Roby_72
    ma cos'è?


    codice:
    VALUES(? " & nome & "'
    Roby
    Voleva scrivere apice ' ma gli è rimasto sulla tastiera....

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.