Hej
undrar om någon skulle ha ork att hjälpa mig. Jag skriver om filmer som spelats in på olika slott runt om i Europa. Jag listar dem efter filmnamn men skulle vilja ha dem så att om t.ex. en film har spelats in på flera ställen, att filmnamnet endast står en gång, fast slottsnamnet och landets namn skall stå... gjorde en bild så att det är enklare att förstå. http://slottsguiden.info/bilder/filmer.jpg
Blir det typ någon union, eller joins eller något? Jag har inte en aning. Gärna lite kod om någon har tråkigt i regnet :)
och du måste ALLTID se till att värden som skickas till databasen är säkra!
Set RecSet = Connect.Execute("SELECT filmer.filmid, filmer.filmnamn, filmer.slottsnamn, filmer.slottsid, filmer.land FROM filmer WHERE filmer.filmnamn LIKE '" & Replace(Request.QueryString("bokstav"),"'","''") & "%' order by filmer.filmnamn, filmer.filmid asc")
Tack för svaret... men nu blir det ett fel. Nu slås de ihop med de filmerna som kommer efter syns dock inte?
Sen skulle jag vilja ha att om det t.ex. är 4 filmer som heter samma, att de har samma färg på raden - grå - och de som kommer efter vit, varannan rad skall alltså skifta...
Den koden jag har nu ser ut så här.
<%
'************* Databaskoppling ***********
Set Connect = server.createobject("ADODB.connection")
Connect.Open Session("Connection_String")
Set RecSet = Connect.Execute("SELECT filmer.filmid, filmer.filmnamn, filmer.slottsnamn, filmer.slottsid, filmer.land FROM filmer WHERE filmer.filmnamn LIKE '" & Replace(Request.QueryString("bokstav"),"'","''") & "%' order by filmer.filmnamn, filmer.filmid asc")
'*****************************************
%>
<CENTER>
<TABLE CLASS="vtext" width="500" border="0" CELLSPACING="0" cellpadding="0">
<% If RecSet.EOF = True Then %>
<TR><TD HEIGHT="30"></TD></TR>
<tr><td class="fel"><nobr>Ingen film med den bokstaven i databasen</nobr></td></tr>
<% Else %>
<tr valign="top"><td height="33" colspan="3"><img src="bilder/divider500.jpg"></td></tr>
<tr class="yrkenlista"><td>Film</td> <td>Slott</td> <td>Land</td></tr>
<% Do While Not RecSet.EOF
if intRowColor = 0 Then
Response.Write "<TR class=""tabell1"">"
intRowColor = 1
Else
Response.Write "<TR class=""tabell2"">"
intRowColor = 0
End if
%>
<td valign="top">
<%if lastfilmid<>RecSet("filmid") then%>
<a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%> </nobr>
<%end if
lastfilmid=RecSet("filmid")
%>
</td>
<td valign="top"><a href="slottdetalj.asp?id=<%=RecSet("slottsid")%>"><%=RecSet("slottsnamn")%></A></td>
<td valign="top"><%=RecSet("land")%></td></tr>
<%
'*** Loop samt DB-close *****
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
End if
'****************************
%>
Prova denna kod. Kan inte garantera att den fungerar då jag inte har tillgång till databasen och kan test-köra den. Möjligtvis är där något enkelt kompileringsfel du måste debugga:
<%
'************* Databaskoppling ***********
Set Connect = server.createobject("ADODB.connection")
Connect.Open Session("Connection_String")
Set RecSet = Connect.Execute("SELECT filmer.filmid, filmer.filmnamn, filmer.slottsnamn, filmer.slottsid, filmer.land FROM filmer WHERE filmer.filmnamn LIKE '" & Replace(Request.QueryString("bokstav"),"'","''") & "%' order by filmer.filmnamn, filmer.filmid asc")
'*****************************************
%>
<CENTER>
<TABLE CLASS="vtext" width="500" border="0" CELLSPACING="0" cellpadding="0">
<% If RecSet.EOF = True Then %>
<TR><TD HEIGHT="30"></TD></TR>
<tr><td class="fel"><nobr>Ingen film med den bokstaven i databasen</nobr></td></tr>
<% Else %>
<tr valign="top"><td height="33" colspan="3"><img src="bilder/divider500.jpg"></td></tr>
<tr class="yrkenlista"><td>Film</td> <td>Slott</td> <td>Land</td></tr>
<%if lastfilmid<>RecSet("filmid") then%>
<% Do While Not RecSet.EOF
if intRowColor = 0 Then
Response.Write "<TR class=""tabell1"">"
intRowColor = 1
Else
Response.Write "<TR class=""tabell2"">"
intRowColor = 0
End if
%>
<td valign="top">
<a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%> </nobr></td>
<% else
if intRowColor = 1 Then
Response.Write "<TR class=""tabell1""><td valign="top"></td>"
Else
Response.Write "<TR class=""tabell2""><td valign="top"></td>"
End if
end if
lastfilmid=RecSet("filmid")
%>
<td valign="top"><a href="slottdetalj.asp?id=<%=RecSet("slottsid")%>"><%=RecSet("slottsnamn")%></A></td>
<td valign="top"><%=RecSet("land")%></td></tr>
<%
'*** Loop samt DB-close *****
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
End if
'****************************
%>
</TABLE>
</CENTER>
Testa följande kod. Jag kan fortfarande inte köra det tyvärr då jag inte har databasen. Nu har jag dock debuggat det lite i blindo då jag såg att en if-sats hade hamnat snett redan tidigare.
<%
'************* Databaskoppling ***********
Set Connect = server.createobject("ADODB.connection")
Connect.Open Session("Connection_String")
Set RecSet = Connect.Execute("SELECT filmer.filmid, filmer.filmnamn, filmer.slottsnamn, filmer.slottsid, filmer.land FROM filmer WHERE filmer.filmnamn LIKE '" & Replace(Request.QueryString("bokstav"),"'","''") & "%' order by filmer.filmnamn, filmer.filmid asc")
'*****************************************
%>
<CENTER>
<TABLE CLASS="vtext" width="500" border="0" CELLSPACING="0" cellpadding="0">
<% If RecSet.EOF = True Then %>
<TR><TD HEIGHT="30"></TD></TR>
<tr><td class="fel"><nobr>Ingen film med den bokstaven i databasen</nobr></td></tr>
<% Else %>
<tr valign="top"><td height="33" colspan="3"><img src="bilder/divider500.jpg"></td></tr>
<tr class="yrkenlista"><td>Film</td> <td>Slott</td> <td>Land</td></tr>
<%
Do While Not RecSet.EOF
If lastfilmid<>RecSet("filmid") then
' new film, print new colour row and title of film
if intRowColor = 0 Then
Response.Write "<TR class=""tabell1"">"
intRowColor = 1
Else
Response.Write "<TR class=""tabell2"">"
intRowColor = 0
End if
%>
<td valign="top">
<a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%> </nobr></td>
<%
Else
' this film is the same as last film, show same colour
If intRowColor = 1 Then
Response.Write "<TR class=""tabell1""><td valign="top"></td>"
Else
Response.Write "<TR class=""tabell2""><td valign="top"></td>"
End if
End If
lastfilmid=RecSet("filmid")
' always print
%>
<td valign="top"><a href="slottdetalj.asp?id=<%=RecSet("slottsid")%>"><%=RecSet("slottsnamn")%></A></td>
<td valign="top"><%=RecSet("land")%></td></tr>
<%
'*** Loop samt DB-close *****
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
End if
'****************************
%>
</TABLE>
</CENTER>
hej och tack för att du försöker hjälpa mig :)
Det blir dock ännu fel, de filmerna som kommer efter en film som förekommer fler gånger syns inte. Jag fixade en bild så du kan se, blir lättare än att förklara... http://slottsguiden.info/bilder/filmer2.jpg
Efter "a royal family" skall det komma två andra filmer http://slottsguiden.info/bilder/filmer3.jpg
Hm, jag skulle nog ta och skriva ut allt möjligt som skulle kunna vara av intresse med hjälp av response.write. Dvs. skriva ut lite variabler för att kunna debugga det hela. Ex:
Sedan tittar du i html-koden på klienten (webbläsaren, visa källa) och ser vad som står där. Om du lägger in lämpliga sådana utskrivningar i koden (skriv ut allt som du tror kan vara av intresse) så kommer du säkert att se något mönster någonstans sedan. (Det är bara att följa utskriften uppifrån och ner, parallellt med att du följer utskriften så följer du koden. Kolla att alla variabler stämmer, villkor för loopar, if-satser osv. Någonstans kommer du troligtvis hitta ett tankefel, fel i databasen, fel i koden eller liknande.)
Då får jag följande kod, och man ser att i de två sista står det tre tomma
<!-- lastfilmid = -->
och det är väl där felet är, det skall ju innehålla siffror och hur/varför de inte syns är det jag inte kan komma på :(
Kan du även lägga till en rad som skriver ut vad motsvarande recset() innehåller? (Jag misstänker att filmid inte är ifyllt i databasen för en del rader..)
Alla poster/rader i databasen är ifyllda. Det är ju jag själv som fyller i den och alla filmid har siffror som hänvisar till IMDB.
Så här ser de filmerna ut som finns under A som ligger ute på nätet http://slottsguiden.info/filmer2.asp?bokstav=a
Godmorgon :)
Nu börjar det likna något, har endast ett problem kvar som jag tror ni hittar hur lätt som helst, själv har jag stirrat mig blind.. Nu finns alla filmer med även de som kommer efter en dubbelrad...
<CENTER>
<TABLE CLASS="vtext" width="500" border="0" CELLSPACING="0" cellpadding="0">
<% If RecSet.EOF = True Then %>
<TR><TD HEIGHT="30"></TD></TR>
<tr><td class="fel"><nobr>Ingen film med den bokstaven i databasen</nobr></td></tr>
<% Else %>
<tr valign="top"><td height="33" colspan="3"><img src="bilder/divider500.jpg"></td></tr>
<tr class="yrkenlista"><td>Film</td> <td>Slott</td> <td>Land</td></tr>
<%
Do While Not RecSet.EOF
If lastfilmid<>RecSet("filmid") then
' new film, print new colour row and title of film
if intRowColor = 0 Then
Response.Write "<TR class=""tabell1"">"
intRowColor = 1
Else
Response.Write "<TR class=""tabell2"">"
intRowColor = 0
End if
%>
<td valign="top">
<a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%> </nobr>
</td>
<%
Else
' this film is the same as last film, show same colour
If intRowColor = 1 Then
Response.Write "<TR class=""tabell1""><td valign=""top""></td>"
Else
Response.Write "<TR class=""tabell2""><td valign=""top""></td>"
End if
%>
<a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%> </nobr></td>
<%
End If
lastfilmid=RecSet("filmid")
' always print
%>
<td valign="top"><a href="slottdetalj.asp?id=<%=RecSet("slottsid")%>"><%=RecSet("slottsnamn")%></A></td>
<td valign="top"><%=RecSet("land")%></td></tr>
<%
response.write vbcrlf & "<!-- lastfilmid = " & lastfilmid & " -->" & vbcrlf
'*** Loop samt DB-close *****
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
End if
'****************************
%>
</TABLE>
</CENTER>
jag har försökt sätta lite td-taggar där jag tycker de borde vara men får inte till det i alla fall :r
Men just nu är det största problemet att filmnamnen plötsligt inte länkar till IMDB. Det gör det ju på det som ligger ute här http://slottsguiden.info/filmer2.asp?bokstav=a
och just den koden är samma som den jag har hemma på stationära...
fattar ingenting, tror jag får ge upp för jag verkar inte kunna fixa detta :(