Avatar billede thue Nybegynder
05. november 2006 - 20:57 Der er 36 kommentarer og
1 løsning

Formuler: Tilmelding til nyhedsbrev

Kære Eksperter.

Jeg vil gerne have en funktion på min hjemmeside, hvor man kan til-/framelde sig et nyhedsbrev. Man skal kunne indtaste 1) NAVN og 2) E-mail i formularen. Desuden skal man kunne vælge mellem knapperne tilmeld/frameld.

Jeg vil gerne kunne opsamle navnene og mailadresserne i fx en accesdatabase.

Jeg har sådan set lavet formularen til at tilmelde sig. Nu aner jeg bare ikke hvordan jeg får opsamlet de navne og adresser brugerne tager ind. Please help!

På mit webhotel understøttes ASP - PHP5 - MySQL.

Håber I kan hjælpe mig.

Venligst
Thue

PS: Jeg har tidligere stillet et lignende spørgsmål og blev henvist til nedenstående to links. De hjalp mig desværre ikke.

http://www.html.dk/tutorials/asp/lektion11.asp
http://www.html.dk/tutorials/asp/
Avatar billede ellebaek Nybegynder
05. november 2006 - 22:05 #1
når du har formen, så skal du benytte request.form på den side hvor du kommer hen til at få værdierne ud.

lad os sige du har en database, som du allerede har en forbindelse til. i denne database har du en tabel ved navn nyhedsbrev med felterne, id (autonummer), navn (tekst), email (tekst).

så lad os sige du arbejder i kun en side der hedder fx. nyhedsbrev.asp

så skal du have følgende kode:
<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?
  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&request.form("navn")&"' AND email = '"&request.form("email")&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&request.form("navn")&"','"&request.form("email")&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&request.form("navn")&"' AND email = '"&request.form("email")&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
%>
<form method="post" action="nyhedsbrev.asp">
navn:<br>
<input type="text" name="navn"><br><br>
email:<br>
<input type="text" name="email"><br><br>
<input type="submit" name="tilmeld" value="Tilmeld"><input type="submit" name="afmeld" value="Afmeld">
</form>
<%
end if
%>

Dette skulle kunne klare det for dig. så skal du bare afhængigt af database, og tabelnavn, feltnavne mm. selv rette det til... det burde være rimelig lige til...
Avatar billede thesurfer Nybegynder
05. november 2006 - 23:17 #2
ellebaek> En mere korrekt metode er:

if request.servervariables("request_method") = "POST" then
' der er submittet data
else
' der er IKKE submittet data
end if

Og en et godt råd ang. sikkerhed: Valider altid brugerinput!

Eksempel:
navn = replace(request.form("navn"), "'", "''")  --- > erstatt et enkelt ' med 2x '
email = replace(request.form("email"), "'", "") --- > erstatter ' med ingenting

Derefter bruges:

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '" & navn &"' AND email = '" & email & "'"

osv..
Avatar billede thesurfer Nybegynder
05. november 2006 - 23:19 #3
PS: Da det er "personlige" data (ikke ifølge persondata-loven, men generelt), brug method="post" i stedet for method="get"..

På den måde huskes navnet og email adressen ikke i urlen..
Hvis man bruger method="get" og brugeren sad ved en offentlig pc, vil den næste bruge se navn og email-adresse på den forrige bruger..

Det er ikke særligt smart, hvis man spørger mig.. :-)
Avatar billede thue Nybegynder
06. november 2006 - 08:54 #4
Dr. ellebaek.

Det er vel ikke sådan, at du har en mail jeg kan sende til. Så kan jeg lige prøve at sende dig det, som jeg har lavet...

Venligst
Thue
Avatar billede ellebaek Nybegynder
06. november 2006 - 09:44 #5
hej thue -> jeg er ikke meget for at svare på mails om eksperten. jeg vil helst kun deltage herinde når jeg har tiden til det :-)

Men smid det herinde som du har lavet, så kan det nemt tilpasses.
Og så som surfer så rigtigt siger -> Så skal der altid valideres på bruger inputs... ellers kommer der højst sandsyneligt fejl før eller siden...
Avatar billede thue Nybegynder
06. november 2006 - 11:15 #6
Hej igen.

Helt OK. Vi tager den her. Nedenfor kan I se den form jeg har lavet. Hvordan ser den ud? Den virker fint på skærmen men jeg ved ikke om den er lavet hensigtsmæssigt. Alle råd modtages med kyshånd.

Som jeg forstår det skal jeg (ud over at have selve formen)
1) Oprette en access-database
2) oprette en .asp-fil

Er det rigtigt? Og hvor placerer jeg dem så de ikke er tilgængelige for andre end mig.

På forhånd mange tak - det er yderst velfortjente point.

Venligst
Thue

Min form:

<div class="leftmain">

<div class="overskrift2">Nyhedsbrev</div></p>
Vi udsender et nyhedsbrev hver måned. Du kan tilmelde dig her.
<form action="" method="post">
<fieldset>
<div>
<label for="t1">Navn:</label><input type="text" name="navn" id="t1"></p>
<label for="t2">E-mail:</label><input type="text" name="mail" id="t2"></p>
</div>
<div>
<label for="t3">Vælg:</label>
<input type="submit" value="Tilmeld" id="submit">&nbsp;
<input type="submit" value="Afmeld" id="submit">
</div>
</fieldset>
</form>

</div></br>
Avatar billede ellebaek Nybegynder
06. november 2006 - 11:51 #7
<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?

  navn = replace(request.form("navn"), "'", "")
  email = replace(request.form("email"), "'", "")

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&navn&"','"&email&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  navn = replace(request.form("navn"), "'", "''")
  email = replace(request.form("email"), "'", "")
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
%>
<div class="leftmain">

<div class="overskrift2">Nyhedsbrev</div></p>
Vi udsender et nyhedsbrev hver måned. Du kan tilmelde dig her.
<form action="nyhedsbrev.asp" method="post">
<fieldset>
<div>
<label for="t1">Navn:</label><input type="text" name="navn" id="t1"></p>
<label for="t2">E-mail:</label><input type="text" name="email" id="t2"></p>
</div>
<div>
<label for="t3">Vælg:</label>
<input type="submit" value="Tilmeld" id="submit" name="tilmeld">&nbsp;
<input type="submit" value="Afmeld" id="submit" name="afmeld">
</div>
</fieldset>
</form>

</div></br>
<%
end if
%>

Nu har jeg rettet lidt til i din form (sat nogle navne på submit, og ellers sat en action på. Envidere har jeg rettet en smule til i selve kodedelen. Så nu burde det funge...

Så skal du blot oprette en database med de oplysninger jeg skrev tidligere...
Avatar billede thue Nybegynder
06. november 2006 - 12:57 #8
Verdensklasse. Drop lige et svar.

Jeg skal bare lige være helt sikker - derfor tre spørgsmål:

1) Det kode du har skrevet ovenfor, skal jeg bare indsætte i den html-fil jeg allerede har lavet (altså min default.html-fil). Eller hvad?

2) Hvor skal jeg fysisk ligge databasen (database.mdb). Jeg vil jo gerne undgå, at andre kan hente oplysningerne i databasen.

3) Din kode indeholder sætningen <form action="nyhedsbrev.asp" method="post">. Skal jeg ikke have en fil med navnet nyhedsbrev.asp? Og hvis ja - hvor skal jeg ligge den?

Mange tak for glimrende hjælp.

/Thue
Avatar billede thesurfer Nybegynder
06. november 2006 - 14:13 #9
thue> Det ser ud til at din viden indenfor ASP er meget begrænset.

Jeg vil derfor STÆRKT anbefale at du læser alle lektionerne på http://www.html.dk/tutorials/asp/ !

Hvis du gjorde det, vil du selv kunne besvare over 95% af de spørgsmål du selv stiller!

Så vidt jeg kan se, er det kun 1 af dine spørgsmål, der ikke kan besvares af http://www.html.dk/tutorials/asp/ .. og det er mht placering af database-filen.

Jeg henviste også til http://www.html.dk/tutorials/asp/ i dit tidligere spørgsmål ( http://www.eksperten.dk/spm/741968 ), hvor du skrev at det ikke hjalp.

Tutorialen er på dansk, og meget simpel. Tag lektionerne én ad gangen, og fortsæt kun når du forstår lektionen. Er du i tvivl mht til en lektion, kan du stille spørgsmål her på Eksperten.


Jeg ville f.eks. heller ikke hoppe ud i et projekt, hvor jeg skal bygge en bil, uden at sætte mig ind i hvad en bil består af, og hvordan den virker. Det er jo bare nytteløs.


Det kan godt være at jeg fremstår som en dum skid, ved at skrive dette indlæg, men jeg gør det for at hjælpe dig.


Et ordsprog der passer fint ind her:
"Giv en mand en fisk,
og han har mad til 1 dag.
Lær en mand at fiske,
og han har mad til hele livet"
Avatar billede ellebaek Nybegynder
06. november 2006 - 14:33 #10
gode råd fra surfer... Jeg kan ikke være mere enig.

Med hensyn til dine spørgsmål:

1. du skal smide koden ind i en fil der hedder nyhedsbrev.asp
2. databasen kan skjules på mange måder. det kan enten være ved at give den et navn der "ikke kan gættes" dette er dog ikke den optimale løsning. de fleste hjemmesideudbydere tilbyder ofte at få lagt databasen i en mappe som er med skjult adgang, altså som kun kan tilgås på serveren, så man ikke kan kalde den med: www.domæne.dk/database.mdb
Men det er mest hvad du selv har lyst til. det er dog vigtigt at der er skriveadgang til brugeren i den mappe hvor du lægger databasen. som koden er nu, så skal databasen ligge i samme mappe som nyhedsbrev.asp.

det kan du rette i denne linie:
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

3. se svaret på 1 :-)

Mvh. Jens
Avatar billede thue Nybegynder
06. november 2006 - 15:08 #11
Mange mange tak.

Og så lige det aller aller sidste ja/nej spørgsmål:

Kan jeg nøjes med at smide "din del" af koden ind i nyhedsbrev.asp og lade resten stå i html-filen?

Altså lade denne del stå i html-filen (og smide resten over i en asp-fil):
<div class="overskrift2">Nyhedsbrev</div></p>
Vi udsender et nyhedsbrev hver måned. Du kan tilmelde dig her.
<form action="nyhedsbrev.asp" method="post">
<fieldset>
<div>
<label for="t1">Navn:</label><input type="text" name="navn" id="t1"></p>
<label for="t2">E-mail:</label><input type="text" name="email" id="t2"></p>
</div>
<div>
<label for="t3">Vælg:</label>
<input type="submit" value="Tilmeld" id="submit" name="tilmeld">&nbsp;
<input type="submit" value="Afmeld" id="submit" name="afmeld">
</div>
</fieldset>
</form>

Tak for svaret.

Alt godt
Thue
Avatar billede ellebaek Nybegynder
06. november 2006 - 15:30 #12
det kan du sagtens...

så skal du nøjes med denne del af koden:

<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?

  navn = replace(request.form("navn"), "'", "")
  email = replace(request.form("email"), "'", "")

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&navn&"','"&email&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  navn = replace(request.form("navn"), "'", "''")
  email = replace(request.form("email"), "'", "")
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
response.write "Der skete en fejl"
end if
%>

du kan så hvis du vil have en anden side vist i stedet for det siden skriver nu, benytte: response.redirect("index.html") eller tilsvarende i stedet for de steder hvor der står response.write "et eller andet"
Avatar billede thue Nybegynder
06. november 2006 - 20:38 #13
Hmmm - jeg kan sgu ikke få det til at virke. Får følgende fejlmeddelelse når jeg har uploadet det hele til webserveren og prøver tilmeldingen til nyhedsbrevet af:

The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.

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

Please try the following:

Click the Refresh button, or try again later.

Open the www.kommuneanalyse.dk home page, and then look for links to the information you want.
HTTP 500.100 - Internal Server Error - ASP error
Apache

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

Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript compilation (0x800A03F6)
Expected 'End'
/nyhedsbrev.asp, line 34, column 1


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

Page:
POST 59 bytes to /nyhedsbrev.asp

POST Data:
navn=Test+Nyhedsbrev&email=testmail@mail.dk&tilmeld=Tilmeld

Time:
Monday, November 06, 2006, 8:37:10 PM


More information:
Sun ONE Active Server Pages Support
Avatar billede thue Nybegynder
06. november 2006 - 20:39 #14
Nyhedsbrev.asp ser således ud:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="" content="">
<title>Nyhedsbrev - tilmelding</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link REL="StyleSheet" HREF="style.css" type="text/css">
</head>
<body>
<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ka_database10x.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?

  navn = replace(request.form("navn"), "'", "")
  email = replace(request.form("email"), "'", "")

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&navn&"','"&email&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  navn = replace(request.form("navn"), "'", "''")
  email = replace(request.form("email"), "'", "")
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
response.write "Der skete en fejl"
end if
%>


</body>
</html>
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:53 #15
Sådan:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="" content="">
<title>Nyhedsbrev - tilmelding</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link REL="StyleSheet" HREF="style.css" type="text/css">
</head>
<body>
<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ka_database10x.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?

  navn = replace(request.form("navn"), "'", "")
  email = replace(request.form("email"), "'", "")

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&navn&"','"&email&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
    end if
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  navn = replace(request.form("navn"), "'", "''")
  email = replace(request.form("email"), "'", "")
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
response.write "Der skete en fejl"
end if
%>

</body>
</html>


HUSK: Du skal have afsluttet og lukket dine forbindelser til databasen!
Det kan ellebaek sikkert hjælpe dig med..
Avatar billede thue Nybegynder
06. november 2006 - 20:57 #16
Det lader til, at det er nedenstående linje, som driller. Kan ikke gennemskue hvorfor...

elseif request.form("afmeld") <> "" then
Avatar billede thesurfer Nybegynder
06. november 2006 - 21:08 #17
Hvordan ser din kode ud nu?
Avatar billede thue Nybegynder
06. november 2006 - 21:48 #18
Dette er HTML-delen:
<div class="leftmain">

<div class="overskrift2">Nyhedsbrev</div></p>
Vi udsender et nyhedsbrev hver måned. Du kan tilmelde dig her.
<form action="nyhedsbrev.asp" method="post">
<fieldset>
<div>
<label for="t1">Navn:</label><input type="text" name="navn" id="t1"></p>
<label for="t2">E-mail:</label><input type="text" name="email" id="t2"></p>
</div>
<div>
<label for="t3">Vælg:</label>
<input type="submit" value="Tilmeld" id="submit" name="tilmeld">&nbsp;
<input type="submit" value="Afmeld" id="submit" name="afmeld">
</div>
</fieldset>
</form>

</div></br>

Og her NYHEDSBREV.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<%
'opretter forbindelse til databasen.
Set rs = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ka_database10x.mdb")
rs.open str

if request.form("tilmeld") <> "" then
  'har brugeren trykket på tilmeld?

  navn = replace(request.form("navn"), "'", "")
  email = replace(request.form("email"), "'", "")

  sql = "SELECT * FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  set rsTest = rs.execute(sql)
  'tjekker om brugeren allerede er tilmeldt.
  if not rsTest.eof then
    'brugeren er allerede tilmeldt.
    response.write "Du er allerede tilmeldt."
  else
    'brugeren er ikke tilmeldt, så gemmer hans oplysninger i databasen.
    sql = "INSERT INTO nyhedsbrev(navn, email) VALUES('"&navn&"','"&email&"')"
    rs.execute(sql)
    response.write "Du er nu tilmeldt nyhedsbrevet."
elseif request.form("afmeld") <> "" then
  'er der trykket på afmeld?
  navn = replace(request.form("navn"), "'", "''")
  email = replace(request.form("email"), "'", "")
  sql = "DELETE FROM nyhedsbrev WHERE navn = '"&navn&"' AND email = '"&email&"'"
  rs.execute(sql)
  response.write "Du er nu afmeldt nyhedsbrevet."
else
'der er ikke udfyldt noget i formen, og den vises derfor.
response.write "Der skete en fejl"
end if
%>
</body>
</html>

PS: Er gået i gang med asp-tutorial ;-)
Avatar billede thue Nybegynder
06. november 2006 - 21:49 #19
UPS UPS - nåede slet ikke at se, at du har svaret. Prøver lige om det virker...
Avatar billede thue Nybegynder
06. november 2006 - 21:52 #20
Nå - et eller andet godt er der da sket.

Hvad lavede du om?

Når jeg bruger det svar du sendte 06/11-2006 20:53:31 får jeg nu følgende fejlmeddelelse:

Error Type:
ADODB.Connection.1 (0x800A0BB9)
The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.
/nyhedsbrev.asp, line 15
Avatar billede thue Nybegynder
06. november 2006 - 21:59 #21
Håber virkelig du kan hjælpe - det lader til, at vi er meget tæt på målet. Der er naturligvis 200 point til dig også når skidtet virker ;-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 22:03 #22
Det giver ikke nogen mening..

Linie 15 er den tomme linie lige efter "rs.open str"..

Prøv at lave nogle linieskift, lige efter "rs.open str" så resten bliver skubbet nedad..
Avatar billede thesurfer Nybegynder
06. november 2006 - 22:04 #23
Hvis det ikke ændrer på linienummeret i fejlen, fjern de linieskift du lige har sat ind..

Indsæt derefter nogle linieskift FØR linien "rs.open str".. se om det ændre på linienummeret i fejlmeddelelsen..
Avatar billede thesurfer Nybegynder
06. november 2006 - 22:05 #24
Ifølge Ekspertens regler, er det ikke tilladt at give mere end 200 points..

Dem gav du til ellebaek (06/11-2006 14:33:07), så det er ikke tilladt at give flere points på baggrund af dette spørgsmål..
Avatar billede thue Nybegynder
06. november 2006 - 22:52 #25
Jeg ved godt det med 200p pr. spm. Men dette er et nye spørgsmål som jeg stiller dig. Laver et nyt spm til dig.

Der sker noget når jeg indsætter linjeskift FØR rs.open str.

Så får jeg samme fejlmeddelelse.

Så det er linjen
rs.open str
som laver vrøvl.

Venligst
Thue
Avatar billede thue Nybegynder
06. november 2006 - 22:54 #26
Kan det være fordi jeg har lavet access-databasen forkert?

Har lavet tre felter
1) id (med autonummering)
2) navn (text-felt - 100 karakterer)
3) email (text-felt - 100 karakterer)
Avatar billede ellebaek Nybegynder
06. november 2006 - 23:09 #27
... det kan ikke være opbygningen af databasen der laver fejlen når du allerede har den der...

hvilket webhotel bruger du? For det kan være at connection-strengen ikke accepteres på dit webhotel som den er opbygget nu...
Avatar billede thue Nybegynder
07. november 2006 - 08:30 #28
Mit webhotel er one.com

Omkring databasen: Jeg har selv lavet en access-fil med de tre relevante variable som jeg har uploaded til one's webserver. Men det er vel OK, ik?
Avatar billede ellebaek Nybegynder
07. november 2006 - 09:25 #29
det er derfor.... one.com understøtter ikke access databaser..
https://www.one.com/static/support-faq.do?category=asp&number=2

Men derimod mysql databaser...
så skal du i stedet bruge denne connection string:
str ="Driver={MySQL};SERVER=localhost;DATABASE=xxx;UID=xxx;PASSWORD=xxx"

så skal du så ind og oprette din mysql database direkte på one.com.
du skal have modtaget en mail med info om hvordan du connecter til din database:
https://www.one.com/static/support-faq.do?category=mysql&number=4

Så skal du i phpmyadmin oprette tabellen på samme måde.. så skal felterne bare være af typen
id: int ekstra->auto_increment.
navn: varchar(100)
email: varchar(100)
Avatar billede thue Nybegynder
07. november 2006 - 13:25 #30
Nu er vi virkelig derude hvor min forstand ikke rækker.

Man jeg har: Oprettet tabellen i phpmyadmin (det virker fint).

Men jeg kan altså ikke se, hvordan jeg skal oprette tabellen to gange (du skriver "oprette din mysgl database direkte på one.com"). Jeg har oprettet tabellen (kaldet 'signups' og lavet de tre felter).

Når jeg prøver at tilmelde en mailadresse får jeg denne fejlmeddelelse:
Error Type:
ADODB.Connection.1 (0x80004005)
SQLState: S Native Error Code: 1044 [TCX][MyODBC]Access denied for user: 'kommuneanalyse_@localhost' to database 'signups'
/nyhedsbrev.asp, line 18

Jeg har fundet følgende på one.com's hjemmeside (skal det mon bruges??).
Hvordan ser ASP connection string ud til min MySQL
<%
Dim objConn
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objConn = Server.CreateObject("ADODB.Connection")

objConn.ConnectionString="DRIVER={MySQL};SERVER=localhost;"_
&"DATABASE=[DATABASE_NAME];UID=[DATABASE_NAME];PWD=[MySQL-PWD];"
objConn.Open

objRS.Open "[PASTE-QUERY-HERE]", objConn, 3,3

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
Avatar billede thue Nybegynder
07. november 2006 - 13:27 #31
Fejlmeddelelsen refererer stadig til linjen:

rs.open str
Avatar billede ellebaek Nybegynder
07. november 2006 - 13:36 #32
hmm... kender ikk lige den fejl.. men vi kan da se om det gør nogen forskel, men det bør det ikk gøre...

Du har styr på det med:
objConn.ConnectionString="DRIVER={MySQL};SERVER=localhost;"_
&"DATABASE=[DATABASE_NAME];UID=[DATABASE_NAME];PWD=[MySQL-PWD];"
objConn.Open navn på database, brugernavn og password ikke?
Avatar billede thue Nybegynder
07. november 2006 - 13:46 #33
Det er så pisse frustrerende det her.

1) Jeg har altså ikke oprettet databasen to gange som du sagde. Skal jeg det??

2) Hvad skal jeg skrive i linjen nedenfor (hvad er min query)?
objRS.Open "[PASTE-QUERY-HERE]", objConn, 3,3

3) Har styr på det med navn på database, brugernavn og password. Men skal jeg bruge hele scriptet som pastet ovenfor af mig (eller kun de tre linjer du pastede)?

Ville ønske du sad ved min side - så var al smerten overstået på 2 minutter ;-)

Bedste hilsener
En frustreret Thue
Avatar billede ellebaek Nybegynder
07. november 2006 - 13:57 #34
du skal bare rette denne linie:

str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ka_database10x.mdb")

Og derefter skal du erstatte den med:
str = "DRIVER={MySQL};SERVER=localhost;DATABASE=[DATABASE_NAME];UID=[DATABASE_NAME];PWD=[MySQL-PWD];"

hvor du så tilpasser de forskellige værdier... der skal ikke være [] omkring de forskellige navne... det skal fx være:
str = "DRIVER={MySQL};SERVER=localhost;DATABASE=database;UID=jens;PWD=password;"

det burde funge...
Avatar billede thue Nybegynder
07. november 2006 - 14:51 #35
Har lige startet et nyt spørgsmål op til dig og thesurfer.

Min connectionstring virker nu. Men jeg får en anden fejl nu...

Håber I kan hjælpe.

Kom forresten til at tænkt på, at jeg har tre felter i tabellen (id, navn og email). Men id omtales slet ikke i koden. Er det OK?
Avatar billede thue Nybegynder
07. november 2006 - 14:52 #36
Avatar billede ellebaek Nybegynder
07. november 2006 - 15:08 #37
med hensyn til det med 3 felter, så er det blot for at der er et eller andet felt som identificere de forskellige rækker i databasen unikt...

det er som sådan ikke nødvendigt, men det er heller ikke noget der laver bøvl hvis den er med, men ikke optræder i koden...
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