Avatar billede Slettet bruger
06. december 2006 - 05:39 Der er 10 kommentarer og
1 løsning

Vis opskrifter i den rigtige kategori

Jeg er ved at lave et opskrift script, men er løbet ind i et problem.... jeg vil gerne have mit script til, at når man klikker på en kategori, at der kun vise de opskrifter, der er i den valgte kategori, som man klikker på.
Er der en, der kan hjælpe mig?
min opskrift.asp ser således ud:
<%
set conn = server.CreateObject("adodb.connection")
set rs = server.CreateObject("adodb.recordset")
conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
sql="SELECT * FROM opskrift"
set rs = conn.execute(sql)
Do
response.write "<a href=""view.asp?id="&rs("id")&""">"& rs("overskrift") & "</a><br>"
rs.MoveNext
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing
%>
default.asp
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "Select * From cat Order by cat ASC"
Set rs = Conn.Execute(strSQL)

Do

Response.Write "<center><table BORDER=0 CELLSPACING=0 COLS=1 WIDTH='200'>"
Response.Write "<tr>"
Response.Write "<a href=""opskrift.asp?id="&rs("id")&""">"& rs("cat") & "</a>"
Response.Write "</TD>"
Response.Write "</TR>"
Response.Write "</TABLE>"
rs.MoveNext
Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing
%>
i min DB har jeg en tabel der hedde cat hvor der er
ID cat
i opskrifter er der
ID navn email personer overskrift ingred recipe categori
Avatar billede madeindk Nybegynder
06. december 2006 - 07:37 #1
Opskrift.asp skal se sådan herud:

<%
' Sikrer mod SQL injection
If isNumeric(Request.QueryString("ID")) Then

    set conn = server.CreateObject("adodb.connection")
    set rs = server.CreateObject("adodb.recordset")
    conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
   
    SQL = "SELECT * FROM opskrift WHERE categori=" & Request.QueryString("ID")
    set rs = conn.execute(sql)
    Do While Not rs.EOF
   
    response.write "<a href=""view.asp?id=" & rs("id") & """>"& rs("overskrift") & "</a><br>"
   
    ' Løber posterne i gennem
    rs.MoveNext
    Loop
   
    ' Lukker forbindelse
    Conn.Close
    Set Conn = Nothing

Else
  Response.Write("Kategori ID er ikke et tal.")
End If
%>
Avatar billede Slettet bruger
06. december 2006 - 19:48 #2
jeg får denne fejl, når jeg prøvet at bruge dit ex :-)

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

opskrift.asp, line 62

line 62 set rs = conn.execute(sql)
Avatar billede madeindk Nybegynder
06. december 2006 - 22:27 #3
Feltet categori ikke et tal felt?
Avatar billede madeindk Nybegynder
06. december 2006 - 22:32 #4
Hov, det kan man da ikke sige.

Er feltet 'categori' ikke et talfelt?
Avatar billede Slettet bruger
06. december 2006 - 22:51 #5
feltet 'categori' ikke et talfelt, der er et tekstfelt
Avatar billede madeindk Nybegynder
06. december 2006 - 23:32 #6
Ok, det er klart at foretrække du laver det om til talfelt. Men ellers skal din SQL streng se sådan her ud:

SQL = "SELECT * FROM opskrift WHERE categori='" & Request.QueryString("ID") & "'"
Avatar billede Slettet bruger
07. december 2006 - 00:26 #7
jeg har lavt det om til et talfelt, og er ved at lave min side, hvor opskriften tilføjes om.
Jeg får denne fejl på opskrift.asp

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

opskrift.asp, line 62

line 62 set rs = conn.execute(sql)

Jeg har bygget min side med tilføjelserne af opskrifter om, men får denne fejl
Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.

gem.asp, line 25

line 25  con.Execute sql_insert

------------------------
til.asp
<form method="POST" action="gem.asp">
  <input type="hidden" name="Mode" value="opskrift">
  <input type="hidden" name="Id" value="<%= Request("Id") %>">
  <div align="center">
    <center>
    <table border="0" cellpadding="0" cellspacing="0" width="420">
      <tr>
        <td width="81"><FONT FACE="VERDANA" SIZE="2">Navn:</FONT></td>
        <td width="465"><input type="text" name="name" size="44" maxlength="255"></td>
      </tr>
      <tr>
        <td width="81"><FONT FACE="VERDANA" SIZE="2">E-Mail:</FONT></td>
        <td width="465"><input type="text" name="email" size="44" maxlength="255"></td>
      </tr>
      <tr>
        <td width="81" valign="top"><FONT FACE="VERDANA" SIZE="2">Navn på opskrift:</FONT></td>
        <td width="465"><textarea class="area" rows="4" name="overskrift" cols="33"></textarea></td>
      </tr>
      <tr>
        <td width="81" valign="top"><FONT FACE="VERDANA" SIZE="2">Ingredienser:</FONT></td>
        <td width="465"><textarea class="area" rows="4" name="ingred" cols="33"></textarea></td>
      </tr>
<tr>
        <td width="81" valign="top"><FONT FACE="VERDANA" SIZE="2">Fremgangsmåde:</FONT></td>
        <td width="465"><textarea class="area" rows="4" name="recipe" cols="33"></textarea></td>
      </tr>
<tr>
<td>
Antal personer:</td>
<td>
<select size="1" name="personer">
<option>Vælg</option>
<option value="1 pers">1 pers.</option>
<option value="2 pers">2 pers.</option>
<option value="4 pers">4 pers.</option>
<option value="6 pers">6 pers.</option>
<option value="8 pers">8 pers.</option>
<option value="10 pers">10 pers.</option>
<option value="12 pers">12 pers.</option>
</select>
</td>
</tr>
    </table>
    </center>
  </div>
  <p align="center"><input type="submit" value="Gem Kommentar" name="Send" class="button"></p>
</p>
</form>
-------------
gem.asp
<%
  ' Declaring variables
  Dim name, email, overskrift,ingred,recipe, personer, data_source, con, sql_insert

  ' A Function to check if some field entered by user is empty
  Function ChkString(string)
  If string = "" Then string = " "
  ChkString = Replace(string, "'", "''")
  End Function

  ' Receiving values from Form
  overskrift = ChkString(Request.Form("overskrift"))
  ingred = ChkString(Request.Form("ingred"))
  recipe = ChkString(Request.Form("recipe"))
  navn = ChkString(Request.Form("navn"))
  personer = ChkString(Request.Form("personer"))
  Id = ChkString(Request.Form("Id"))

  data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("database.mdb")
    sql_insert = "insert into opskrift (Id, name, email, personer, overskrift, ingred, recipe) (" & Id & ", '" & name & "', '" & email & "'& personer & '" & overskrift & "' & ingred & "''" & recipe & "' )"
       
  ' Creating Connection Object and opening the database
  Set con = Server.CreateObject("ADODB.Connection")
  con.Open data_source
  con.Execute sql_insert
  ' Done. Close the connection
  con.Close
  Set con = Nothing
  Response.Write "Tak for din opskrift."
%>
Avatar billede madeindk Nybegynder
07. december 2006 - 01:12 #8
Prøv evt. at udskrive din SQL streng, response.write SQL

Denne her skal du bruge når dit felt 'categori' er talfelt i databasen:
SQL = "SELECT * FROM opskrift WHERE categori=" & Request.QueryString("ID")

Men på din side hvor man tilføjer opskrifter, har du da intet sted hvor mange vælger hvilken kategori den skal være i?
Avatar billede Slettet bruger
07. december 2006 - 01:23 #9
Jeg har fået det til at virke nu...
gem.asp
<%
  ' Declaring variables
  Dim name, email, personer,overskrift,ingred,recipe, data_source, con, sql_insert

  ' A Function to check if some field entered by user is empty
  Function ChkString(string)
  If string = "" Then string = " "
  ChkString = Replace(string, "'", "''")
  End Function

  ' Receiving values from Form
  overskrift = ChkString(Request.Form("overskrift"))
  email = ChkString(Request.Form("email"))
  ingred = ChkString(Request.Form("ingred"))
  recipe = ChkString(Request.Form("recipe"))
  navn = ChkString(Request.Form("navn"))
  personer = ChkString(Request.Form("personer"))
  Id = ChkString(Request.Form("Id"))

  data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("database.mdb")
sql_insert = "insert into opskrift (Id, navn, email, personer, overskrift, ingred, recipe, dato) values (" & Id & ", '" & navn & "', '" & email & "','" & personer & "', '" & overskrift & "','" & ingred & "','" & recipe & "', Date() )"
       
  ' Creating Connection Object and opening the database
  Set con = Server.CreateObject("ADODB.Connection")
  con.Open data_source
  con.Execute sql_insert
  ' Done. Close the connection
  con.Close
  Set con = Nothing
  Response.Write "Tak for din opskrift."
%>
opskrift.asp
<%
' Sikrer mod SQL injection
If isNumeric(Request.QueryString("Id")) Then

    set conn = server.CreateObject("adodb.connection")
    set rs = server.CreateObject("adodb.recordset")
    conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
   
    SQL = "SELECT * FROM opskrift WHERE (Id = " & Request.QueryString("Id") & ")"
    set rs = conn.execute(sql)
    Do While Not rs.EOF
   
    response.write "<a href=""view.asp?id=" & rs("id") & """>"& rs("overskrift") & "</a><br>"
   
    ' Løber posterne i gennem
    rs.MoveNext
    Loop
   
    ' Lukker forbindelse
    Conn.Close
    Set Conn = Nothing

Else
  Response.Write("Kategori ID er ikke et tal.")
End If
%>
<center><a href="java script:window.open('til.asp?Id=<%= Request("id") %>','Detaljer','toolbar=0,status=0,scrollbars=yes,resizable=no,width=500,height=400,top=50,left=50').focus();void(0)">Skriv en kommentar</a></center>
Avatar billede Slettet bruger
07. december 2006 - 01:23 #10
Mange tak for hjælpen :)
Avatar billede madeindk Nybegynder
07. december 2006 - 01:30 #11
Det var så lidt, mange tak 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