Non registrare se il "dato" esiste già

  • Creatore Discussione Creatore Discussione Meta
  • Data di inizio Data di inizio

Meta

Nuovo Utente
21 Mag 2006
5
0
0
Ciao a tutti, sono nuovo in questo forum, spero di trovare un po' di aiuto.

Ho un database con cognomi, gli utenti devono aggiungere il cognome, ma se il cognome esiste già nel database allora dovrei reinderizzare con un messaggio del tipo "cognome già presente".

Ho cercato in giro ma senza risultati, qualcuno sa dirmi come fare?

Grazie in anticipo.
 
E' molto semplice da fare!

Nella pagina dove dovrebbe scrivere il cognome sul database, prima della stringa di inserimento, crei un recordset con questa stringa sql:

"Select * from TABELLA where cognome="&replace(request.form("Cognome"),"'","''")

Quello in rosso è se mando i dati con POST, modificalo se è diverso.

Dopo di che fai il ciclo e controlli se esiste

i=0

while not NOMETUORECORDSET.EOF
i=i+1
wend


ed infine ti basta una if!

if i<1 then

INSERISCI DATI NEL DATABASE

else

response.write("Cognome già esistente")

end if


Ciao!:byebye:
 
Ciao,
grazie per la risposta
ho cmq riscontrato degli errori nella riga Select che non ho saputo risolvere.
Facciamo così, posto lo script, è cortissimo, se puoi me lo modifichi qui così potrà essere utile anche per altri, giusto? :)

Codice:
<%
cognome = Request.Form("cognome")
Cognome	= Replace(Cognome,"'","’")
SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & "VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
Conn.close
Response.Redirect "conferma.asp"
%>

La tabella si chiama RISULTATI il set della connessione è CONN
funziona regolarmente, se mi aiuti mi fai un grosso favore.
Grazie.
 
Meta ha scritto:
Ciao,
grazie per la risposta
ho cmq riscontrato degli errori nella riga Select che non ho saputo risolvere.
Facciamo così, posto lo script, è cortissimo, se puoi me lo modifichi qui così potrà essere utile anche per altri, giusto? :)

Codice:
<%
cognome = Request.Form("cognome")
Cognome	= Replace(Cognome,"'","’")
SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & "VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
Conn.close
Response.Redirect "conferma.asp"
%>

La tabella si chiama RISULTATI il set della connessione è CONN
funziona regolarmente, se mi aiuti mi fai un grosso favore.
Grazie.

potrebbe essere solo un problema di spazio:

<%
cognome = Request.Form("cognome")
Cognome = Replace(Cognome,"'","’")
SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & " VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
Conn.close
Response.Redirect "conferma.asp"
%>
 
Intanto che aspetto una risposta ho fatto diverse prove ma senza un risultato

ricevo il seguente errore:
Codice:
Microsoft VBScript compilation  error '800a0400'
Expected statement
/cognomi/add.asp, line 3
"Select * from Risultati where cognome="&replace(request.form("Cognome"),"'","''")
^

Sono convinto che si tratta di una cosa semplice ma non conosco la sintassi e tantomeno la logica per costruire lo script
ho proprio bisogno di una dritta
:(
 
Scusa, non ho capito la tua risposta
potresti essere più chiaro?
Questo è lo script che uso per aggiornare il database:
Codice:
<!--#include file="connessione.asp"-->
<%
cognome = Request.Form("cognome")
Cognome	= Replace(Cognome,"'","’")
SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & "VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
Conn.close
Response.Redirect "conferma.asp"
%>
e, come ti ho detto funziona perfettamente, ma a questo script vorrei aggiungere (come ho già detto nel precedente post) l'opzione che se il cognome esiste già nel database allora non deve registrarlo ma deve dare un messaggio del tipo:
"il cognome è già presente"
oppure un Response.Redirect "error.asp"
Spero di essere stato chiaro abbastanza
tu di quale spazio parlavi?
 
Ma allora di quello che ho scritto non hai capito un cazzo, andiamo bene!

Ti ho descritto la logica da usare e mi richiedi come fare comparire cognome esistente?

Per quanto riguarda l'errore ti ho detto che potrebbe essere un errore di spazio e ti ho riscitto tutto il comando di inserimento corretto, bastava un copia ed incolla! per cui, dato che non comprendi riscrivo tutto:

"Select * from TABELLA where cognome="&replace(request.form("Cognome"),"'","''")

Quello in rosso è se mando i dati con POST, modificalo se è diverso.

Dopo di che fai il ciclo e controlli se esiste

i=0

while not NOMETUORECORDSET.EOF
i=i+1
wend


ed infine ti basta una if!

if i<1 then

cognome = Request.Form("cognome")
Cognome = Replace(Cognome,"'","’")
SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & " VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
Conn.close
Response.Redirect "conferma.asp"


else

response.write("Cognome già esistente")

end if


Prova e ciao. :hammer:
 
Ti ringrazio per la risposta, ho fatto come mi hai detto ma non funziona, ho fatto diverse prove e modifiche ma senza risultati.
Poi ho risolto così:
Codice:
Dim Conn
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/fpdb/cognomi.mdb")
cognome = Request.Form("cognome")
Cognome = Replace(Cognome,"'","’")

'controllo che non sia già stato inserito
sql="select Cognome from Risultati where ucase(Cognome)='" & trim(ucase(Cognome)) & "'"

set rs=conn.execute(sql)

if not rs.eof then
Response.Redirect "error.asp"
else

SQL = "INSERT INTO Risultati (Cognome)"
SQL = SQL & "VALUES ('"&Cognome&"')"
Conn.Execute(SQL)
end if
set rs=nothing
Conn.close
Response.Redirect "conferma.asp"

Adesso funziona perfettamene.
Grazie ancora
:D
 
Ciao

la sosuzione logica per controllare se un dato è gia presente in un campo del db è quella. :fonzie:


Valeria
 

Discussioni simili