/ 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
submit-forms i tabeller
Fra : Peter Skensved


Dato : 15-01-03 22:46

Jeg har en asp side med en række submit forms. Siden har til
formål at sætte en række person oplysninger ind i en access
database. Denne funktionalitet virker da også umidelbart fint,
men jeg har alligevel to problemer.
Det første problem er at hvergang jeg åbner siden med submit
forms, indsættes en blank record i db'en.
Det andet problem er at mine forms ikke virker når de er indsatte
i tabeller, som om at request funktionen ikke kan "se" dem.

Jeg håber at der er nogen som kan hjælpe mig med disse problemer
som jeg håber blot er nybegynderfejl.

På forhånd tak.


koden er som følger:

<html>
<head>
<title>Remain</title>
<link rel="stylesheet" type="text/css" href="../style/style.css">
</head>

<body>

<form method="post" action="krop90.asp">
<input type="hidden" name="redirect" value="krop91.html">

<p>Fornavn:<br>
<input type="text" name="Fornavn" id="t5"></p><br>
<p>Efternavn:<br>
<input type="text" name="Efternavn" id="t5"></p><br>
<p>Adresse:<br>
<input type="text" name="Adresse" id="t7"></p><br>
<p>By:<br>
<input type="text" name="Bynavn" id="t8"></p><br>
<p>Postnummer:<br>
<input type="text" name="Postnr" id="t8"></p><br>
<p>Land:<br>
<input type="text" name="Land" id="t8"></p><br>
<p>Email:<br>
<input type="text" name="Email" id="t11"></p><br>

<br>
<input type=image value="Submit" border=0 width="60" height="20"
src="../images/submitKnap.gif">
</form>


<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("remain1.mdb")
Conn.Open DSN


strSQL = ("INSERT INTO Medarbejdere(Fornavn, Efternavn, Email,
Adresse, Bynavn, Postnr, Land) VALUES('" &
request.form("Fornavn") & "', '" & request.form("Efternavn") &
"', '" & request.form("Email") & "', '" & request.form("Adresse")
& "', '" & request.form("Bynavn") & "', '" &
request.form("Postnr") & "', '" & request.form("Land") & "')")
Set rs = Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>

</body>
</html>

--
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

 
 
Jens Gyldenkærne Cla~ (15-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-01-03 23:49

Peter Skensved skrev:

> Jeg har en asp side med en række submit forms.

Er der flere forms på samme side?

> Det første problem er at hvergang jeg åbner siden med submit
> forms, indsættes en blank record i db'en.

Det er ikke så mærkeligt. Når du som her har formhandleren på samme
side som selve formen (altså siden submittes til sig selv) skal du
i formhandlerkoden tjekke om der i det hele taget er submittet
noget.

En nem måde at tjekke det på er ved at bruge

If Request.Form.Count <> 0
   ' Der er submittet en form
Else
   ' Der er ikke submittet en form
End If

Hvis du har flere forms på en side er det ikke sikkert at
ovenstående kode er nok.

> Det andet problem er at mine forms ikke virker når de er indsatte
> i tabeller, som om at request funktionen ikke kan "se" dem.

Du kan kun submitte én form ad gangen - dvs. hvis du har flere
forms på en side er det kun felterne fra den form du submitter du
kan tilgå med Request.Form (eller request.querystring).

Bortset fra det skulle det ikke gøre nogen forskel at have
inputfelterne i en tabel - sålænge form-koden stadig omslutter det
hele. Hvordan ser dit tabelforsøg ud?

Et par kommentarer til din databasekode:

> strSQL = [...] VALUES('" & request.form("Fornavn") & "', '" & ...

Når du indsætter tekstværdier fra en form ind i en sql-streng er
det en god ide at sikre mod de fejl der kan ske hvis et felt
indeholder enkelt anførselstegn. ASP sætter blot værdierne ukritisk
sammen - og hvis Request.Form("fornavn") herover fx indeholder
"Mc'Masters" vil den sammensatte streng blive "....
VALUES('Mc'Masters', '...). Det vil give en fejl fra databasen som
ikke kan regne ud hvad den skal gøre med det ekstra anførselstegn.

Løsningen er at escape alle enkeltanførselstegn med følgende kode:

   Replace(<formtekst>, "'", "''")

Altså erstat alle forekomster af ' med '' (2 x ').


> Set rs = Conn.Execute(strSQL)

En handlingsforespørgsel (INSERT, UPDATE og DELETE) genererer ikke
noget postsæt - derfor er der heller ikke nogen grund til at lave
et postsæt i asp (det er det du gør med Set rs = ...).

Du kan nøjes med at skrive
   Conn.Execute(strSQL)

Skal det være rigtig fint kan man give en ekstra parameter der
fortæller systemet at der ikke returneres nogle poster, men jeg kan
ikke lige huske værdien for 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

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste