Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 18:33 Der er 26 kommentarer og
3 løsninger

Skriv data, opdatér i db og vis med kriterie

Hejsa alle.

Jeg har en formular på følgende side: http://www.bowling-aalborg.dk/bbkl/travian/indtastning.asp

Her skal jeg have det personen skriver i de 4 felter til at opdatere 4 felter i min db, som hedder det samme som felterne.
I min db har jeg så en forespørgsel, som laver nogle beregninger på de tal man skriver. Her skal der så være en side som viser resultaterne. Denner er på denne adresse (feks): http://www.bowling-aalborg.dk/bbkl/travian/udregning.asp?folkeslag=romere

Denne side skal så åbnes med det kriterie som man vælger i afkrydsningsfelterne nedenunder, altså om det er romere, gallere eller germanere.

Jeg kan ikke lige få det til at fungere. Vil nogle lave et overslag om hvordan mine 2 filer skal se ud. Min formular side ser nu således ud:

<html>
<head>
<title>Indtast data</title>
</head>
<body>

<form method="post" action="udregning.asp">

<p>Træ:
<input type="text" name="Træ"></p>
<p>Ler:
<input type="text" name="Træ"></p>
<p>Jern:
<input type="text" name="Træ"></p>
<p>Korn:
<input type="text" name="Træ"></p>

<p>Vælg dit folkeslag:
<input type="radio" name="folkeslag" value="romere"> Romere
<input type="radio" name="folkeslag" value="gallere"> Gallere
<input type="radio" name="folkeslag" value="germanere"> Germanere</p>

<input type="submit" value="Udregn">

</form>

</body>
</html>
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 18:33 #1
tabellen til de indtastede værdier hedder forresten tblIndtastning
Avatar billede w13 Novice
02. januar 2008 - 18:54 #2
Prøv at skrive her, hvad du har forsøgt, så skal jeg prøve at finde fejlen.
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 18:59 #3
Jeg har ikke rigtig forsøgt så meget. Er rimelig ny indenfor ASP, så tror ikke det jeg har prøvet er rigtigt. Altså jeg kan godt få siden til at returnere værdier fra db, som du ser, det er blot med at få flyttet kriterierne med fra formularen til siden hvor data skal vises
Avatar billede w13 Novice
02. januar 2008 - 19:59 #4
Ok. Du kan på siden udregning.asp skrive:
-----------------------------------------
<%Set rs=Server.CreateObject("ADODB.RecordSet")
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/database.mdb")

Set rs=Conn.Execute("INSERT INTO tblIndtastning (materiale,folkeslag) VALUES ('"&Request.Form("materiale")&"','"&Request.Form("folkeslag")&"')")

Response.Redirect "vis.asp"%>
-----------------------------------------
Her opretter jeg først forbindelse til databasen "database.mdb" som ligger i mappen "db" i hovedmappen.

Dernæst indsætter vi i tabellen "tblIndtastning" henholdsvis "materiale" (som jeg har omdøbt det til - i din kode har du kaldt alle for "træ") og "folkeslag".
Det kræver så, at felterne i databasen også hedder "materiale" og "folkeslag"

Til sidst redirectes der til siden "vis.asp".

Kan du få noget ud af det? :)
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 21:07 #5
Jeg har allerede databaseforbindelsen, som include i toppen af filen.
Felterne skal hedde træ, Ler, Jern og Korn.

Husk at den skal opdatere ned i tabellen, hvor felterne også hedder Træ, Ler, Jern og Korn.
Derefter skal den åbne siden udregning.asp, hvor den skal returnere data hvor folkeslag = enten Romere, Gallere eller Germanere - Alt efter hvilken man vælger på indtastning.asp
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 21:08 #6
Koden ser altså sådan ud:

<html>
<head>
<title>Indtast data</title>
</head>
<body>

<form method="post" action="udregning.asp">

<p>Træ:
<input type="text" name="Træ"></p>
<p>Ler:
<input type="text" name="Ler"></p>
<p>Jern:
<input type="text" name="Jern"></p>
<p>Korn:
<input type="text" name="Korn"></p>

<p>Vælg dit folkeslag:
<input type="radio" name="folkeslag" value="romere"> Romere
<input type="radio" name="folkeslag" value="gallere"> Gallere
<input type="radio" name="folkeslag" value="germanere"> Germanere</p>

<input type="submit" value="Udregn">

</form>

</body>
</html>
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 21:12 #7
Altså, for lige at opsummere - Man skriver f.eks 1000 i Træ - 1000 i Ler - 1000 i Jern - 1000 i Korn. Når man trykke udregn skal disse værdier opdateres ned til tabellen tblIndtastning i felterne Træ, Ler, Jern og Korn. Herefter skal den nye side åbnes med select * from tblIndtastning med et kriterie, hvor folkeslag = det valg man laver på formularen (Romere, Gallere, Germanere)
Avatar billede w13 Novice
02. januar 2008 - 21:18 #8
Det var jo derfor jeg spurgte, om du ikke kunne vise mig noget af din kode. =)
Jeg sku' gerne programmere noget, der kan arbejde sammen med din forbindelse.

Mit eksempel skal, med dine nye oplysninger, være:
------------------------------------------
<%Set rs=Server.CreateObject("ADODB.RecordSet")
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/database.mdb")

Conn.Execute("INSERT INTO tblIndtastning (træ,ler,jern,korn,folkeslag) VALUES ('"&Request.Form("træ")&"','"&Request.Form("ler")&"','"&Request.Form("jern")&"','"&Request.Form("korn")&"','"&Request.Form("folkeslag")&"')")

Response.Write "<h2>"&Request.Form("folkeslag")&"</h2>"&vbCrLf
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Do While Not rs.EOF
  Response.Write "Træ: "&rs("træ")&", ler: "&rs("ler")&", jern: "&rs("jern")&", korn: "&rs("korn")&"<br>"&vbCrLf
  rs.MoveNext
Loop
rs.Close%>
------------------------------------------
Men jeg ved jo ikke præcis, hvilke data du vil have vist.
Avatar billede w13 Novice
02. januar 2008 - 21:19 #9
Men skal det opdateres i en tabel, hvor posten allerede findes? For så skal vi jo arbejde med et brugernavn/brugerid så vi kan finde den rigtige række, og det fremgår jo ikke af dit oprindelige indlæg.
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 21:26 #10
Der findes kun 1 række i tabellen, så det er blot denne der skal opdateres hver gang. Gammel data overskrives bare.
Og forresten, på intet tidspunkt skal feltet Folkeslag opdateres. Det eneste dette skal bruges til er i kriteriet, da dette ligger i andre tabeller.

Kan du lave et eksempel til mig med dette, samt uden db connection, da jeg har denne i en anden fil?

På forhånd tak for din hjælp
Avatar billede w13 Novice
02. januar 2008 - 21:31 #11
Jeg kan ikke udelade dbconnection, da din kan være anderledes og så vil det ikke fungere. Hvis du skriver din dbconnection her, kan jeg lave det, så det virker sammen. Men det skal kodes, så de matcher hinanden.

Med dbconnection:
-----------------------------------
<%Set rs=Server.CreateObject("ADODB.RecordSet")
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/database.mdb")

Conn.Execute("UPDATE tblIndtastning SET træ='"&Request.Form("træ")&"',ler='"&Request.Form("ler")&"',jern='"&Request.Form("jern")&"',korn='"&Request.Form("korn")&"',folkeslag='"&Request.Form("folkeslag")&"')")

Response.Write "<h2>"&Request.Form("folkeslag")&"</h2>"&vbCrLf
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Response.Write "Træ: "&rs("træ")&", ler: "&rs("ler")&", jern: "&rs("jern")&", korn: "&rs("korn")&"<br>"&vbCrLf
rs.Close%>
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 22:37 #12
Min db connection:

<%
dim conn
function OpenConn( DBPath )
Set Conn = Server.CreateObject("ADODB.Connection")
On error resume next '<-- Start fejlhåndtering
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath
if err.number <> 0 then
  response.redirect ("fejl.asp")
  response.end
end if
on error goto 0 '<-- Reset til default fejlhåndtering
end function
OpenConn("DB STI")
%>

I toppen af udregning.asp skriver jeg blot
<!--#include file="database_con.asp"-->
Avatar billede w13 Novice
02. januar 2008 - 22:47 #13
Så må det blive:
------------------------------------------
<!--#include file="database_con.asp"-->
<%Conn.Execute("UPDATE tblIndtastning SET træ='"&Request.Form("træ")&"',ler='"&Request.Form("ler")&"',jern='"&Request.Form("jern")&"',korn='"&Request.Form("korn")&"',folkeslag='"&Request.Form("folkeslag")&"')")

Response.Write "<h2>"&Request.Form("folkeslag")&"</h2>"&vbCrLf
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Response.Write "Træ: "&rs("træ")&", ler: "&rs("ler")&", jern: "&rs("jern")&", korn: "&rs("korn")&"<br>"&vbCrLf
rs.Close%>
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 23:23 #14
Får bare "Webstedet kan ikke vise siden". Prøv evt selv at indtaste på siden
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 23:24 #15
Vi er enige om at den kode du skriver blot skal ind i filen hvor data skal returneres? Altså udregning.asp
Avatar billede lars_hoeberg Praktikant
02. januar 2008 - 23:30 #16
Extra ) in query expression ''')'.
Avatar billede w13 Novice
02. januar 2008 - 23:33 #17
Jep.

Hvilken linje?
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 00:03 #18
2
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 00:03 #19
Linie 3 i din tekst herinde
Avatar billede w13 Novice
03. januar 2008 - 08:54 #20
Ja hov, det er da også rigtigt:

<!--#include file="database_con.asp"-->
<%Conn.Execute("UPDATE tblIndtastning SET træ='"&Request.Form("træ")&"',ler='"&Request.Form("ler")&"',jern='"&Request.Form("jern")&"',korn='"&Request.Form("korn")&"',folkeslag='"&Request.Form("folkeslag")&"'")

Response.Write "<h2>"&Request.Form("folkeslag")&"</h2>"&vbCrLf
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Response.Write "Træ: "&rs("træ")&", ler: "&rs("ler")&", jern: "&rs("jern")&", korn: "&rs("korn")&"<br>"&vbCrLf
rs.Close%>
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 12:27 #21
Får en lidt mærkelig fejl nu. Får bare afvide at "Siden kan ikke vises", når jeg har indatstet i formularen. Skriver jeg adressen til udregning direkte får jeg "No value given for one or more required parameters". Får altså stadig ikke returnert noget data... Hvad kan dette skyldes?
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 12:31 #22
Forresten har jeg fjernet delen om folkeslag, da denne ikke skal skrives ned i db, så den eltså nu ser således ud:

<!--#include file="database_con.asp"-->
<%Conn.Execute("UPDATE tblIndtastning SET træ='"&Request.Form("træ")&"',ler='"&Request.Form("ler")&"',jern='"&Request.Form("jern")&"',korn='"&Request.Form("korn")&"'")

Response.Write "<h2>"&Request.Form("folkeslag")&"</h2>"&vbCrLf
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Response.Write "Træ: "&rs("træ")&", ler: "&rs("ler")&", jern: "&rs("jern")&", korn: "&rs("korn")&"<br>"&vbCrLf
rs.Close%>

Skriver jeg bare adressen direkte nu får jeg fejl i linie 5, som er:
Set rs=Conn.Execute("SELECT * FROM tblIndtastning WHERE folkeslag='"&Request.Form("folkeslag")&"'")
Avatar billede w13 Novice
03. januar 2008 - 12:38 #23
Prøv at tilføje følgende:

Response.Write "Folkeslag: "&Request.Form("folkeslag")

Du kan bare skrive det lige før den først Conn.Execute
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 13:02 #24
Det ser ud som om jeg har fået det til at virke. Forstår dog ikke hvorfor den nu i "antal" skriver det man indtaster i tallene. Det er nemlig ikke hvad der står i min forespørgsel i dben. Ved du hvorfor den gør det?
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 13:12 #25
Her er min kode som jeg har lavet den nu:

<!--#include file="database_con.asp"-->
<%Conn.Execute("UPDATE tblIndtastning SET træ='"&Request.Form("træ")&"',ler='"&Request.Form("ler")&"',jern='"&Request.Form("jern")&"',korn='"&Request.Form("korn")&"'")

strSQL = "Select * from udregninger WHERE folkeslag='"&Request.Form("folkeslag")&"'"
Set rs = Conn.Execute(strSQL)

if rs.eof = 0 then

  Response.Write "<br><center><b><font face=Verdana size=5>" & rs("Folkeslag") & "<br>"
  Response.Write("<br><br><center><table border=0 cellpadding=3 cellspacing=0 style=border-collapse: collapse bordercolor=#111111")
  Response.Write("<tr><td><FONT FACE=Verdana SIZE=2><b><left>Tropnavn</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Tropper</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Træ</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Ler</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Jern</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Korn</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Forsyning</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Angreb</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Inf. Forsvar</b></td>")
  Response.Write("<td><FONT FACE=Verdana SIZE=2><b><left>Kav. Forsvar</b></td></TR>")

Do

  Response.Write "<TR onMouseOver=this.bgColor='#6699CC' onMouseOut=this.bgColor='white'>"
  Response.Write "<td width=250><FONT FACE=Verdana SIZE=2><left>" &rs("Tropnavn") & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Tropper")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Træ")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Ler")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Jern")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Korn")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Forsyning")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("Angreb")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("InfForsvar")  & "</td>"
  Response.Write "<td width=50><Right><FONT FACE=Verdana SIZE=2>" &rs("KavForsvar")  & "</td></tr>"


  rs.MoveNext
Loop While Not rs.EOF

  Response.Write "</table><br>"

else

  Response.Write ("<br><b><font face=Verdana size=5><p align=center>Der er opstået en fejl</br></div>")
end if


Conn.Close
Set Conn = Nothing

%>
</body>
</html>
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 13:13 #26
Og her påstår den nu at der er fejl i linie 5???
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 13:17 #27
Hovsa. Det problem er løst nu. Det var lige en dummefejl fra mig. Men´har stadig problemer med det der er beskrevet i: 03/01-2008 13:02:50
Avatar billede lars_hoeberg Praktikant
03. januar 2008 - 13:59 #28
Også den har jeg nu efter er godt stykke tid fået løst. Men jeg takker for hjælpen og giver hermed points
Avatar billede w13 Novice
03. januar 2008 - 17:43 #29
Og jeg takker for point! =)
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