Avatar billede henrik2055 Nybegynder
24. januar 2004 - 12:42 Der er 20 kommentarer og
2 løsninger

Hente data fra mysql database via asp

Jeg står og skal lave en tilmeldingsside i asp, jeg ville godt have lavet den så man kan udfylde nogle felter med navn adresse osv... og når man trykker på knappen tilmelding, ser asp siden om dataerne ligger i mysql databasen i forvejen ellers skriver den dataer´ne til databasen...?? jeg er ikke særlig stor haj til asp så er der nogle der vil hjælpe??
Avatar billede eagleeye Praktikant
24. januar 2004 - 12:47 #1
Det man gør er at lave en SELECT og hvis den finder en post med samme data gemmer men ikke i databasen:

Et eksempel hvor man tjekke for om et navn findes hvis ikke tilføjes data:

<%
navn = Request.Form("navn")
SQL = "select * from brugere where navn = '" & navn & "'"
Set rs = Conn.Execute(SQL)
if rs.EOF then
  'Indsæt data
  SQL = "insert into  brugere (navn, ....) values ('" & navn & "',......)"
  Conn.Execute(SQL)

else
  Response.Write "Navn findes i databasen, du må vælge et andet."
end if
%>
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 13:07 #2
Jeg har i forvejen en tilmeldings side skrevet i html, men det er bare en simpel "Form" hvor der bliver sendt en mail med oplysningerne... Ville jeg godt kunne implementere, den asp kode direkte i HTML dokumentet under submit knappen?

Koden:

<HTML>
<HEAD>
<TITLE>Tilmelding</TITLE>
<LINK REL="StyleSheet" HREF="Stylesheet.css" STYLE="Text/css">
</HEAD>
<BODY>
<FIELDSET>
<LEGEND ALIGN="Center"><H5>Tilmelding</H5></LEGEND>
<TABLE WIDTH="60%" Border="0">
<BR>
<BR>
<FORM ACTION="mailto:test@test.dk?Subject=Klubhua.dk" Method="post" ENCTYPE="text/plain">
<BASE TARGET="Hovedramme">
<TR><TD ALIGN="Center"><H4>Fornavn</H4></TD>
<TD ALIGN="Center"><H4>Tilmeldings type</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Fornavn"></TD></TR>
<TR><TD ALIGN="Center"><H4>Efternavn</H4></TD>
<TD ALIGN="Center"><H4>Nyt klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Efternavn"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Nyt klubmedlem" Checked></TR>
<TR><TD ALIGN="Center"><H4>Adresse</H4></TD>
<TD ALIGN="Center"><H4>Gammel klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Adresse"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Gammel klubmedlem"></TD></TR>
<TR><TD ALIGN="Center"><H4>Postnummer og by</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Postnummer"></TD></TR>
<TR><TD ALIGN="Center"><H4>E-mail adresse</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE= "Text" Name="Email adresse"></TD></TR>
<TR><TD ALIGN="Center"><H4>Telefon nummer</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Telefon nummer"></TD></TR>
</TABLE>
<TABLE WIDTH="100%">
<TR><TD ALIGN="Center"><INPUT TYPE="Submit" VALUE="Send tilmelding">
<INPUT TYPE="Reset" VALUE="Slet alle felter"></TD><TR>
</FORM>
</TABLE>
</FIELDSET>
</BODY>
</HTML>
Avatar billede Slettet bruger
24. januar 2004 - 13:29 #3
det kan sættes ind sådanne:

<%
If Request.Querystring("mode") = opret
    navn = Request.Form("navn")
    SQL = "select * from brugere where navn = '" & navn & "'"
    Set rs = Conn.Execute(SQL)
    if rs.EOF then
      'Indsæt data
      SQL = "insert into  brugere (navn, ....) values ('" & navn & "',......)"
      Conn.Execute(SQL)
   
    else
      Fejl = 1
    end if
End If
%>
<HTML>
<HEAD>
<TITLE>Tilmelding</TITLE>
<LINK REL="StyleSheet" HREF="Stylesheet.css" STYLE="Text/css">
</HEAD>
<BODY>
<FIELDSET>
<LEGEND ALIGN="Center"><H5>Tilmelding</H5></LEGEND>
<TABLE WIDTH="60%" Border="0">
<BR>
<% If Fejl = 1 Then %>
    Navn findes i databasen, du må vælge et andet.
<% End If %>
<BR>
<FORM ACTION="siden.asp?mode=opret" Method="post" ENCTYPE="text/plain">
<BASE TARGET="Hovedramme">
<TR><TD ALIGN="Center"><H4>Fornavn</H4></TD>
<TD ALIGN="Center"><H4>Tilmeldings type</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Fornavn"></TD></TR>
<TR><TD ALIGN="Center"><H4>Efternavn</H4></TD>
<TD ALIGN="Center"><H4>Nyt klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Efternavn"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Nyt klubmedlem" Checked></TR>
<TR><TD ALIGN="Center"><H4>Adresse</H4></TD>
<TD ALIGN="Center"><H4>Gammel klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Adresse"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Gammel klubmedlem"></TD></TR>
<TR><TD ALIGN="Center"><H4>Postnummer og by</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Postnummer"></TD></TR>
<TR><TD ALIGN="Center"><H4>E-mail adresse</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE= "Text" Name="Email adresse"></TD></TR>
<TR><TD ALIGN="Center"><H4>Telefon nummer</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Telefon nummer"></TD></TR>
</TABLE>
<TABLE WIDTH="100%">
<TR><TD ALIGN="Center"><INPUT TYPE="Submit" VALUE="Send tilmelding">
<INPUT TYPE="Reset" VALUE="Slet alle felter"></TD><TR>
</FORM>
</TABLE>
</FIELDSET>
</BODY>
</HTML>
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 13:46 #4
Okay det er jeg med på... Men øverst på siden skal jeg vel lige lave en connection så den forbinder til mysql databasen??

jeg har prøvet med følgende:

<%
Set conn = Server.CreateObject("ADODB.Connection")
strConn = "DRIVER=SQL Server;UID=klubhua_test;PWD=test;Server=mydb1.surftown.dk;Database=klubhua_tilmelding"
conn.open strConn
%>

men jeg for så en fejl meddelelse på linie 4, det skal lige siges at det er en database på surftown.dk
Avatar billede Slettet bruger
24. januar 2004 - 13:49 #5
denne er lidt mere uoverskuelig:

<%
SQLserveradr="xxx"
SQLdatabase="xxx"
SQLlogin="xxx"
SQLpassword="xxx"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

Conn.Open conStr
%>
Avatar billede Slettet bruger
24. januar 2004 - 13:49 #6
mindre uoverskuelig ;O)
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 14:02 #7
Okay nu har jeg fået den til at connecte, og det virker fint... men når jeg sætter alt den andet ind for jeg en fejl meddelelse

<%
SQLserveradr="mydb1.surftown.dk"
SQLdatabase="klubhua_Tilmelding"
SQLlogin="klubhua_test"
SQLpassword="test123"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

Conn.Open conStr
%>

<%
If Request.Querystring("mode") = opret
    navn = Request.Form("navn")
    SQL = "select * from brugere where navn = '" & navn & "'"
    Set rs = Conn.Execute(SQL)
    if rs.EOF then
      'Indsæt data
      SQL = "insert into  brugere (navn, ....) values ('" & navn & "',......)"
      Conn.Execute(SQL)
   
    else
      Fejl = 1
    end if
End If
%>
<HTML>
<HEAD>
<TITLE>Tilmelding</TITLE>
<LINK REL="StyleSheet" HREF="Stylesheet.css" STYLE="Text/css">
</HEAD>
<BODY>
<FIELDSET>
<LEGEND ALIGN="Center"><H5>Tilmelding</H5></LEGEND>
<TABLE WIDTH="60%" Border="0">
<BR>
<% If Fejl = 1 Then %>
    Navn findes i databasen, du må vælge et andet.
<% End If %>
<BR>
<FORM ACTION="siden.asp?mode=opret" Method="post" ENCTYPE="text/plain">
<BASE TARGET="Hovedramme">
<TR><TD ALIGN="Center"><H4>Fornavn</H4></TD>
<TD ALIGN="Center"><H4>Tilmeldings type</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Fornavn"></TD></TR>
<TR><TD ALIGN="Center"><H4>Efternavn</H4></TD>
<TD ALIGN="Center"><H4>Nyt klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Efternavn"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Nyt klubmedlem" Checked></TR>
<TR><TD ALIGN="Center"><H4>Adresse</H4></TD>
<TD ALIGN="Center"><H4>Gammel klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Adresse"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Gammel klubmedlem"></TD></TR>
<TR><TD ALIGN="Center"><H4>Postnummer og by</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Postnummer"></TD></TR>
<TR><TD ALIGN="Center"><H4>E-mail adresse</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE= "Text" Name="Email adresse"></TD></TR>
<TR><TD ALIGN="Center"><H4>Telefon nummer</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Telefon nummer"></TD></TR>
</TABLE>
<TABLE WIDTH="100%">
<TR><TD ALIGN="Center"><INPUT TYPE="Submit" VALUE="Send tilmelding">
<INPUT TYPE="Reset" VALUE="Slet alle felter"></TD><TR>
</FORM>
</TABLE>
</FIELDSET>
</BODY>
</HTML>

Feljmeddelelse:


Error Type:
Sun ONE ASP VBScript compilation (0x800A03F9)
Syntax error, unexpected "new line", expecting "Then" or "Then "
/asptest.asp, line 16, column 39
Avatar billede Slettet bruger
24. januar 2004 - 14:06 #8
SQL = "insert into  brugere (navn, ....) values ('" & navn & "',......)"

skal jo udfyldes med følgede:
brugere (Databasecellenavn1,Databasecellenavn2,....osv)

values ('" & Request.Form("DitInputFelt1")& "','" & Request.Form("DitInputFelt2")& "'...... osv)
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 14:22 #9
Okay synes også at det så lidt underligt ud... Men jeg har oprettet et cellenavn der hedder "brugere"..

Også er ide´en at den skal gå ind og tjekke om det der er indtastet i feltet Fornavn allerede står i cellen brugere kan man det?
Avatar billede Slettet bruger
24. januar 2004 - 14:26 #10
det gør den jo allerede, hvis du nu satte dig en lillesmule ind i asp og databaser via: www.html.dk/tutorials/asp ville du også se dette.

det er denne linie: SQL = "select * from brugere where navn = '" & navn & "'"

den skal hedde:
SQL = "select * from brugere where fornavn= '" & request.form("Fornavn") & "'"
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 16:18 #11
Nu har jeg næsten fået det til at virke... Den udføre det hele, men jeg kan bare ikke få den til at skrive noget i databasen?? det er sikkert bare en lille fejl!

<%
SQLserveradr="mydb1.surftown.dk"
SQLdatabase="klubhua_Tilmelding"
SQLlogin="klubhua_test"
SQLpassword="test123"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

Conn.Open conStr
%>

<%
Fornavn = Request.Form("Fornavn")

SQL = "SELECT * from brugere where Fornavn='" & Request.Form("Fornavn")& "'"

Set rs = Conn.Execute(SQL)

If rs.EOF then
SQL = "Insert into brugere (Fornavn) values ('" & Request.Form("Fornavn")& "'"

else
Fejl = 1
End If
%>

<HTML>
<HEAD>
<TITLE>Tilmelding</TITLE>
<LINK REL="StyleSheet" HREF="Stylesheet.css" STYLE="Text/css">
</HEAD>
<BODY>
<FIELDSET>
<LEGEND ALIGN="Center"><H5>Tilmelding</H5></LEGEND>
<TABLE WIDTH="60%" Border="0">
<BR>
<% If Fejl = 1 Then %>
    Navn findes i databasen, du må vælge et andet.
<% End If %>
<BR>
<FORM ACTION="Samlet.asp?mode=opret" Method="post" ENCTYPE="text/plain">
<BASE TARGET="Hovedramme">
<TR><TD ALIGN="Center"><H4>Fornavn</H4></TD>
<TD ALIGN="Center"><H4>Tilmeldings type</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Fornavn"></TD></TR>
<TR><TD ALIGN="Center"><H4>Efternavn</H4></TD>
<TD ALIGN="Center"><H4>Nyt klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Efternavn"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Nyt klubmedlem" Checked></TR>
<TR><TD ALIGN="Center"><H4>Adresse</H4></TD>
<TD ALIGN="Center"><H4>Gammel klubmedlem</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Adresse"></TD>
<TD ALIGN="Center"><INPUT TYPE="Radio" NAME="Abonnement" VALUE="Gammel klubmedlem"></TD></TR>
<TR><TD ALIGN="Center"><H4>Postnummer og by</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Postnummer"></TD></TR>
<TR><TD ALIGN="Center"><H4>E-mail adresse</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE= "Text" Name="Email adresse"></TD></TR>
<TR><TD ALIGN="Center"><H4>Telefon nummer</H4></TD></TR>
<TR><TD ALIGN="Center"><INPUT TYPE="Text" NAME="Telefon nummer"></TD></TR>
</TABLE>
<TABLE WIDTH="100%">
<TR><TD ALIGN="Center"><INPUT TYPE="Submit" VALUE="Send tilmelding">
<INPUT TYPE="Reset" VALUE="Slet alle felter"></TD><TR>
</FORM>
</TABLE>
</FIELDSET>
</BODY>
</HTML>
Avatar billede Slettet bruger
24. januar 2004 - 17:09 #12
jeps du mangler at få den til at exekverer din SQL

under: SQL = "Insert into brugere (Fornavn) values ('" & Request.Form("Fornavn")& "'"
skriver du Conn.Ececute(SQL)
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 19:59 #13
Så nu er det tæt på at det lykkedes, men den indsætter bare et tomt felt i databasen??

<%

Fornavn = Request.Form("Fornavn")

SQL = "select * From brugere where Fornavn = '" & Request.Form("Fornavn") & "'"

Set rs = Conn.Execute(SQL)

if rs.EOF then

SQL = "Insert into brugere (Fornavn) values ('" & Request.Form("Fornavn") & "')"

Conn.Execute(SQL)

End if

%>
Avatar billede Slettet bruger
24. januar 2004 - 20:30 #14
det er fordi det inpu med navn fornavn er tomt
Avatar billede henrik2055 Nybegynder
24. januar 2004 - 21:08 #15
Nej det er ej... selv om jeg skriver noget i det så laver den bare et tomt felt i databasen! Har det noget at gøre med den her linie
If Request.Querystring("mode") = opret

Kan ikke rigtig se hvad den gør...
Avatar billede eagleeye Praktikant
24. januar 2004 - 21:35 #16
Bruger du koden som vist i kommentar:  24/01-2004 16:18:05
Avatar billede eagleeye Praktikant
24. januar 2004 - 21:40 #17
Prøv lige at fjerne dette :  ENCTYPE="text/plain"
Fra form tagen.
Avatar billede henrik2055 Nybegynder
25. januar 2004 - 17:07 #18
Så nu virker det, jeg siger mange tak for hjælpen.... Questis og eagleeye i må lige lave nogle svar så i kan få point!!
Avatar billede Slettet bruger
25. januar 2004 - 17:50 #19
var så lidt
Avatar billede henrik2055 Nybegynder
25. januar 2004 - 20:56 #20
Har lige et spørgsmål til... Hvad nu hvis jeg gerne vil indsætte flere input hvordan gør jeg så det??
Jeg har prøvet med følgende, hvilket den ikke vil godtage

<%




Fornavn = Request.Form("Fornavn")

Efternavn = Request.Form("Efternavn")

SQL = "Select * From brugere where Fornavn = '" & Request.Form("Fornavn") & "'"

Set rs = Conn.Execute(SQL)

if rs.EOF then

SQL = "Insert into brugere (Fornavn) values ('" & Request.Form("Fornavn") & "', '" & Request.Form("Fornavn") & "')"

Conn.Execute(SQL)

else
Fejl = 1
End If

%>
Avatar billede henrik2055 Nybegynder
25. januar 2004 - 21:32 #21
Så har jeg fået det til at virke...!!!'
Avatar billede eagleeye Praktikant
25. januar 2004 - 21:53 #22
ok ;)
her et svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester