Avatar billede plato Juniormester
03. december 2002 - 01:06 Der er 21 kommentarer og
1 løsning

ASP Gentagelse af struktur

Hejsa...

På min filmside har jeg delt filmene op i a,b,c osv. Når man f.eks trykker på "A" kommer siden frem med alle film der starter med "A". Derefter trykker man så på den film man vil se. Jeg har lavet en database, hvor jeg godt kunne tænke mig at når der trykkes på alfabetet "A" kommer denne her side frem:

<%

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("trailerabc.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM a WHERE id LIKE '"  & Request.QueryString("id") & "'"
Set rs = objConn.Execute(strSQL)

If Not rs.EOF Then
    titel = rs("titel")
    pic = rs("pic")
    omtale = rs("omtale")
    link = rs("link")
    sektion = rs("sektion")
    tilbage = rs("tilbage")
    tilbaget = rs("tilbaget")
Else
    Response.Write "<b>Der er noget galt med id'et</b><br /><br />"
End If

%>


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


</head>
<body bgcolor="#efefef" text="#000000" leftmargin="5" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0" style="overflow:auto">
<span id="font">Trailers » <%=sektion%>
<br>  <br>    

<center>
<table cellpadding="0" cellspacing="0" width="634" height="100">
               
                        <tr >
                    <td class="font" colspan="2" height="20"><a class="link" href="<%=link%>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%=titel%></a><br></td>
                </tr>
                <tr>
                    <td class="font2" width="60"  align="right" valign="top"><a href="<%=link%>"><img src="../pics/<%=pic%>" height="70" width="55" border="0"></a></td>
                    <td class="font3" height="83"><span id="font2"><%=omtale%>...<br><br><i>Klik på billede for at læse mere</i></span></td>
                </tr>
            </table>
</body>
</html>   

Så er det jeg gerne vil have den skal gentage strukturen indtil der ikke er flere film i "A - tabellen", på samme side.
Så i stedet for som den gør nu, hvor den kun viser efter hvilket ID man giver, skal den  helst vise alle.
Er det til at forstå?

Mvh Plato
Avatar billede cygnet Praktikant
03. december 2002 - 02:02 #1
:-)

Okay - du er lige nødtil at oprette en ekstra kolonne i din database du kalder kategori - hvor du lige skriver forbogstavet på filmen - f.eks. A

<%

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("trailerabc.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM a WHERE kategori LIKE '"  & Request.QueryString("kategori") & "'"
Set rs = objConn.Execute(strSQL)

      If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF


    titel = rs("titel")
    pic = rs("pic")
    omtale = rs("omtale")
    link = rs("link")
    sektion = rs("sektion")
    tilbage = rs("tilbage")
    tilbaget = rs("tilbaget")
Else
    Response.Write "<b>Der er noget galt med id'et</b><br /><br />"
End If

%>


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


</head>
<body bgcolor="#efefef" text="#000000" leftmargin="5" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0" style="overflow:auto">
<span id="font">Trailers » <%=sektion%>
<br>  <br>   

<center>
<table cellpadding="0" cellspacing="0" width="634" height="100">
               
                        <tr >
                    <td class="font" colspan="2" height="20"><a class="link" href="<%=link%>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%=titel%></a><br></td>
                </tr>
                <tr>
                    <td class="font2" width="60"  align="right" valign="top"><a href="<%=link%>"><img src="../pics/<%=pic%>" height="70" width="55" border="0"></a></td>
                    <td class="font3" height="83"><span id="font2"><%=omtale%>...<br><br><i>Klik på billede for at læse mere</i></span></td>
                </tr>
            </table>
<hr>
<%
rs.movenext
loop
else
%>
der er ikke nogen film med dette forbogstav
<% end if %>
</body>
</html>   

Du kalder så denne side ved hjælp af filnavn.asp?kategori=A

Ikke helt sikker på det virker - men ellers må du sige til.

/cygnet
Avatar billede plato Juniormester
03. december 2002 - 02:03 #2
Jeg regner med jeg opretter tabeller a,b,c,d,e i databasen?
Avatar billede plato Juniormester
03. december 2002 - 02:04 #3
Åhh og i disse tabeller skal der også være en kolonne kategori..Er med. ;o)
Avatar billede plato Juniormester
03. december 2002 - 02:09 #4
Det virker ikke. Kan jeg sende de to filer?
Avatar billede cygnet Praktikant
03. december 2002 - 02:09 #5
Nej bare en ekstra kolonne i selve der hvor du også har titel, pic osv.
Avatar billede cygnet Praktikant
03. december 2002 - 02:09 #6
jepper ks@cygnet.dk
Avatar billede plato Juniormester
03. december 2002 - 02:13 #7
Tusind tak..De er sendt.
Avatar billede cygnet Praktikant
03. december 2002 - 02:15 #8
Også brug for databasen ...
Avatar billede eagleeye Praktikant
03. december 2002 - 08:48 #9
Du kan bruge LIKE næsten som du gør uden at lave en ny kolonne. Hvis du skriver LIKE 'A%' finder den alle fil som startre med A.



Eks på din side:

<%
karakter = Request.Querystring("karakter")
%>
<html>
<head>
<title>Film med <%=karakter%></title>
<link rel="stylesheet" type="text/css" href="../style.css">
</head>
<body bgcolor="#efefef" text="#000000" leftmargin="5" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0" style="overflow:auto">
<span id="font">Trailers » Film med <%=karakter%>
<br>  <br>   

<center>
<table cellpadding="0" cellspacing="0" width="634" height="100">

<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("trailerabc.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM a WHERE titel LIKE '"  & karakter & "'%"
Set rs = objConn.Execute(strSQL)

Do While Not rs.EOF
    titel = rs("titel")
    pic = rs("pic")
    omtale = rs("omtale")
    link = rs("link")
    sektion = rs("sektion")
    tilbage = rs("tilbage")
    tilbaget = rs("tilbaget")
%>
  <tr>
    <td class="font" colspan="2" height="20"><a class="link" href="<%=link%>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%=titel%></a><br></td>
  </tr>
  <tr>
    <td class="font2" width="60"  align="right" valign="top"><a href="<%=link%>"><img src="../pics/<%=pic%>" height="70" width="55" border="0"></a></td>
    <td class="font3" height="83"><span id="font2"><%=omtale%>...<br><br><i>Klik på billede for at læse mere</i></span></td>
  </tr>
<%
  rs.movenext
loop
rs.Close
objConn.Close
%>
</table>
</center>
<body>
<html>




Såkan du linke til siden med: enfil.asp?karakter=a
Avatar billede plato Juniormester
03. december 2002 - 11:39 #10
Den skriver:
Microsoft JET Database Engine error '80040e14'
Syntax error in query expression 'titel LIKE ''%'.

/test/test/abctest.asp, line 22
Avatar billede tallens Nybegynder
03. december 2002 - 14:47 #11
Det er fordi at

strSQL = "SELECT * FROM a WHERE titel LIKE '"  & karakter & "'%"
skal være :
strSQL = "SELECT * FROM a WHERE titel LIKE '"  & karakter & "%'"

Så skulle den virke... :)
Avatar billede tallens Nybegynder
03. december 2002 - 14:49 #12
"SELECT * FROM a"

er da et lille navn til en tabel?! der er vel ikke fordi du har alle dine film som starter med A til at være i den?
Avatar billede plato Juniormester
03. december 2002 - 20:03 #13
Okies.. Nu skal jeg lige har noget forklaret..

I tabellen har jeg:


titel
pic
omtale
link
sektion
tilbage
tilbaget

Ydermere har jeg ID som er hovednøglen.. Skal jeg også lave en tabel der hedder karakter?

tallens.. Jeg regnede med jeg skulle lave alle alfabetets bokstaver som tabeller i databasen?
Avatar billede eagleeye Praktikant
03. december 2002 - 20:10 #14
I det elks jeg har lavet er karakter det bogstav man gerne vil finde film som begynder med og det hendter man her, fra linket filnavn.asp?karakter=a

<%
karakter = Request.Querystring("karakter")
%>


Når du skriver man skal finde film som begynder med en bestem karakter (eks a) så regner jeg med at det er kolonnen title du hentyder til derfor denne SQL:

strSQL = "SELECT * FROM a WHERE titel LIKE '"  & karakter & "%'"

Den finder de film hvis title begynder med det bogstav som er angivet i variablen karakter.
Avatar billede eagleeye Praktikant
03. december 2002 - 20:11 #15
Du skal havde alle film i samme tabel..
Avatar billede eagleeye Praktikant
03. december 2002 - 20:15 #16
Der er to måder at løses det på, enten man søger på kolonnen title begyndelses bogstav eller du kan tilføje en ny kolonne i tabelen som cygnet har forslået og i den kolonne angive hvilken bogstav en film tilhøre:

Eks, med kun med title
title
Tarzan
Batman

I dette søger man med denne SQL:
strSQL = "SELECT * FROM tabelnavn WHERE titel LIKE '"  & karakter & "%'"


Eks, med title og kategori
title  kategori
Tarzan    T
Batman    B

I dette søger man med denne SQL:
strSQL = "SELECT * FROM tabelnavn WHERE kategori = '"  & karakter & "'"
Avatar billede plato Juniormester
03. december 2002 - 20:49 #17
Den vil altså ikke accepter det. http://www.trailersiden.dk/test/abctest.asp?karakter=a

eagleeye.. Er det muligt jeg kan sende databasen og ASP filen til dig?
Jeg vil godt give flere point for det, hvis det er.. :-)
Avatar billede plato Juniormester
03. december 2002 - 20:50 #18
Jeg brugte forøvrigt den første metode.
Avatar billede eagleeye Praktikant
03. december 2002 - 20:52 #19
Ja det må du gerne prøve: eagleeye@c.dk
Avatar billede eagleeye Praktikant
03. december 2002 - 20:52 #20
Den står lidt og tykker på det men den lister da fint film med a i det link du har vist.
Avatar billede plato Juniormester
03. december 2002 - 20:53 #21
Jeg er et fjols... Sig det bare ;o)))

Det er da klart det ikke virker når  link = rs("link")
ikke er i tabellen...!... (Slår mig selv) *GG*

Tusind tak for alt hjælp..Ikke nemt når man er en dumpap..
Avatar billede plato Juniormester
03. december 2002 - 20:53 #22
Ja det virker nu...
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

IT-JOB

Capgemini Danmark A/S

Java Engineer

Politiets Efterretningstjeneste

Platform Engineer hos PET