/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Et til spørgsmål angående en værdi der ikk~
Fra : AHR


Dato : 18-12-02 16:11

Hej

Jeg indtaster et tlf. nr på min side og trykker afbestil.

Jeg bruger derefter en denne SQL sætning poå min anden asp side.

strSQL = "Delete from bestilling where tlf= ('" & Request.Form("tlf")&"')"

----------------------------------------------------------------------------
--------------------

Men hvad gør jeg hvis tlf. nummeret ikke er i min DB kan jeg gøre noget
lignende:

if tlf in DB

strSQL = "Delete from bestilling where tlf= ('" & Request.Form("tlf")&"')"

Else

Du har ikke oprettet en bestilling og kan derfor ikke slette.
----------------------------------------------------------------------------
---------------------

Hvordan er syntaksen.

Mange Tak



 
 
Jesper Stocholm (18-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 18-12-02 16:59

AHR wrote in dk.edb.internet.webdesign.serverside.asp:

> Jeg indtaster et tlf. nr på min side og trykker afbestil.
>
> Jeg bruger derefter en denne SQL sætning poå min anden asp side.
>
> strSQL = "Delete from bestilling where tlf= ('" & Request.Form("tlf")&"')"
>
> Men hvad gør jeg hvis tlf. nummeret ikke er i min DB kan jeg gøre noget
> lignende:
> if tlf in DB
> strSQL = "Delete from bestilling where tlf= ('" & Request.Form("tlf")&"')"
> Else
> Du har ikke oprettet en bestilling og kan derfor ikke slette.

Hvis du afvikler din forespørgsel via objCon.Execute-metoden, så kan du køre
således:

objCon.Execute strSQL,intRowsAffected

intRowsAffected vil herefter indeholde antallet af rækker, som din
forespørgsel har berørt. Hvis der er en række med det korrekte telefonnummer,
så vil den have værdien 1 - hvis der ingen matchene række er, så vil den have
værdien 0

I øvrigt behøver du ikke at indkapsle dit telefonnummer i parenteser. Du kan
snildt gøre det som

strTlf = Request.Form("telefonnummer")
strSQL = "DELETE FROM Table WHERE telefonnummer = '" & strTlf & "'"


/Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

AHR (18-12-2002)
Kommentar
Fra : AHR


Dato : 18-12-02 19:08

> Hvis du afvikler din forespørgsel via objCon.Execute-metoden, så kan du
køre
> således:
>
> objCon.Execute strSQL,intRowsAffected
>
> intRowsAffected vil herefter indeholde antallet af rækker, som din
> forespørgsel har berørt. Hvis der er en række med det korrekte
telefonnummer,
> så vil den have værdien 1 - hvis der ingen matchene række er, så vil den
have
> værdien 0

OK. Men det virker ikke. Hvor skal jeg sætte "objCon.Execute
strSQL,intRowsAffected" ind henne?


strSQL = "Select Tlf From Bestilling WHERE tlf = ('" &
Request.Form("tlf")&"')"
Conn.Execute(strSQL)

if (intRowsAffected=0) then

response.write("Der er ingen bestilling med dette Tlf. nr.")

else

strSQL = "Delete from bestilling where tlf= ('" & Request.Form("tlf")&"')"
Conn.Execute(strSQL)



Jens Gyldenkærne Cla~ (18-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-12-02 21:30

AHR skrev:

>> objCon.Execute strSQL,intRowsAffected

> OK. Men det virker ikke. Hvor skal jeg sætte "objCon.Execute
> strSQL,intRowsAffected" ind henne?

Du kan ikke bruge den sådan som din kode er bygget op nu. Man kan
kun få et antal ved en handlingsforespørgsel (INSERT, UPDATE eller
DELETE) - og altså ikke på en SELECT.

Du kan enten bruge:

' A **************************************
deleteSQL = "DELETE FROM Bestilling " & whereSQL
conn.Execute deleteSQL, rowsAffected

If rowsAffected > 0 Then
   response.write cstr(rowsAffected) & "post(er) slettet"
Else
   response.write "Der er ingen bestilling med dette Tlf. nr."
End If
'******************************************

eller også:

' B **************************************
countSQL = "SELECT count(*) FROM Bestilling " & whereSQL
deleteSQL = "DELETE FROM Bestilling " & whereSQL

set rsAntal = conn.execute(countSQL)
select case rs(0)
   case 0    ' Ingen poster fundet
       response.write "Der er ingen bestilling med dette    
Tlf.nr."
   case 1    ' én post fundet
       conn.execute deleteSQL
       response.write "posten er slettet"
   case else    ' mere end én post
       ' enten slettekode eller en fejlmeddelelse
       ' alt efter smag og behag
end select
'****************************************

I begge tilfælde benyttes variablen whereSQL som fx kan sættes
således:

strTlf = Request.Form("tlf") & ""
strTlf = Replace(strTlf, "'", "''")
whereSQL = " WHERE tlf = '" & strTlf & "'"

Det kan stadig varmt anbefales at udføre replacekoden inden
sqlstrengen sendes til databasen (jf mit sidste indlæg i tråden).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (18-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-12-02 21:30

AHR skrev:

>> objCon.Execute strSQL,intRowsAffected

> OK. Men det virker ikke. Hvor skal jeg sætte "objCon.Execute
> strSQL,intRowsAffected" ind henne?

Du kan ikke bruge den sådan som din kode er bygget op nu. Man kan
kun få et antal ved en handlingsforespørgsel (INSERT, UPDATE eller
DELETE) - og altså ikke på en SELECT.

Du kan enten bruge:

' A **************************************
deleteSQL = "DELETE FROM Bestilling " & whereSQL
conn.Execute deleteSQL, rowsAffected

If rowsAffected > 0 Then
   response.write cstr(rowsAffected) & "post(er) slettet"
Else
   response.write "Der er ingen bestilling med dette Tlf. nr."
End If
'******************************************

eller også:

' B **************************************
countSQL = "SELECT count(*) FROM Bestilling " & whereSQL
deleteSQL = "DELETE FROM Bestilling " & whereSQL

set rsAntal = conn.execute(countSQL)
select case rs(0)
   case 0    ' Ingen poster fundet
       response.write "Der er ingen bestilling med dette    
Tlf.nr."
   case 1    ' én post fundet
       conn.execute deleteSQL
       response.write "posten er slettet"
   case else    ' mere end én post
       ' enten slettekode eller en fejlmeddelelse
       ' alt efter smag og behag
end select
'****************************************

I begge tilfælde benyttes variablen whereSQL som fx kan sættes
således:

strTlf = Request.Form("tlf") & ""
strTlf = Replace(strTlf, "'", "''")
whereSQL = " WHERE tlf = '" & strTlf & "'"

Det kan stadig varmt anbefales at udføre replacekoden inden
sqlstrengen sendes til databasen (jf mit sidste indlæg i tråden).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (18-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-12-02 17:28

AHR skrev:

> strSQL = "Delete from bestilling where tlf= ('" &
> Request.Form("tlf")&"')"


*Pas på* med at putte formdata ind i en handlingsforespørgsel uden
først at validere input.

En ondsindet bruger vil - som din kode står nu - kunne slette
samtlige poster i tabellen fra din afmeldingsside.
Erstat *altid* anførselstegn i strengvariable der skal fortolkes af
en database - det sikrer både mod fejl og misbrug.

Brug fx:

Function plingEscape(inputText)
   plingEscape = Replace(inputText, "'", "''")
End Function

- og så erstat alle forekomster af "Request.Form("feltnavn")" med
plingEscape(Request.Form("feltnavn") & "")

Jesper har vist hvordan du kan se om der er slettet poster.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408536
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste