webForumDet fria alternativet

join union - slå ihop

ASP

28 svar · 1 731 visningar · startad av snowcat

Medlem sedan feb. 2007220 inlägg
Frågan#1

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 :)

Hur det ser ut nu kan du se här: http://slottsguiden.info/filmer2.asp?bokstav=M

<%
'************* 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 '" & 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></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"><a href="http://www.imdb.com/title/<%=RecSet("filmid")%>" target="_blank"><nobr><%=RecSet("filmnamn")%></nobr></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
'****************************
%>
Medlem sedan dec. 19996 721 inlägg
#2

Det är inget man gör i databasfråan, utan du hanterar det i själva listningen.

	<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>

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")

Medlem sedan feb. 2007220 inlägg
#3

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
'****************************
%>
Medlem sedan feb. 2007220 inlägg
#4

Ingen som har tid eller lust att hjälpa mig? Får inte till det här, har suttit bra länge nu men fixar det inte tyvärr! :/

Medlem sedan juli 2003555 inlägg
#5

Titta på html-koden som den ser ut i webbläsaren, börja _alltid_ i den änden.

Medlem sedan feb. 2007220 inlägg
#6

ja det är ju det jag har gjort - och kan inte komma på vad som är felet att inte de filmerna som kommer efter en film med samma poster visas...

Medlem sedan maj 2010117 inlägg
#7

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>
Medlem sedan feb. 2007220 inlägg
#8

testade din kod men fick då:

Error Type:
Microsoft VBScript compilation (0x800A03FB)
Expected 'Loop'
/nina/palats/filmer2.asp, line 86
else
Medlem sedan maj 2010117 inlägg
#9

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>
Medlem sedan feb. 2007220 inlägg
#10

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

Medlem sedan juli 2003555 inlägg
#11

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:

response.write vbcrlf & "<!-- lastfilmid = " & lastfilmid & " -->" & vbcrlf

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.)

Medlem sedan feb. 2007220 inlägg
#12

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å :(


 <TABLE CLASS="vtext" width="500" border="0" CELLSPACING="0" cellpadding="0">

	<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> 
	
	<TR class="tabell1">    
			<td valign="top">

			<a href="http://www.imdb.com/title/" target="_blank"><nobr>A Cursed Monarchy</A> (2005)  </nobr></td>
			
		<td valign="top"><a href="slottdetalj.asp?id=99">Pierrefonds</A></td>
		<td valign="top">Frankrike</td></tr>
		
<!-- lastfilmid = tt0429046 -->
<TR class="tabell2">    
			<td valign="top">
			<a href="http://www.imdb.com/title/" target="_blank"><nobr>A history of Britain</A> (2000) TV-serie </nobr></td>
			
		<td valign="top"><a href="slottdetalj.asp?id=297">Beaumaris borg</A></td>
		<td valign="top">Wales</td></tr>
		
<!-- lastfilmid = tt0273359 -->
<TR class="tabell1">    
			<td valign="top">
			<a href="http://www.imdb.com/title/" target="_blank"><nobr>A Royal Family</A> (2003) TV-serie </nobr></td>
			
		<td valign="top"><a href="slottdetalj.asp?id=334">Vinterpalatset</A></td>

		<td valign="top">Ryssland</td></tr>
		
<!-- lastfilmid = tt0366045 -->
<TR class="tabell1"><td valign="top"></td>
		<td valign="top"><a href="slottdetalj.asp?id=209">Glücksburg</A></td>
		<td valign="top">Tyskland</td></tr>
		
<!-- lastfilmid =  -->
<TR class="tabell1"><td valign="top"></td>
		<td valign="top"><a href="slottdetalj.asp?id=329">Hampton Court</A></td>

		<td valign="top">England</td></tr>
		
<!-- lastfilmid =  -->
<TR class="tabell1"><td valign="top"></td>
		<td valign="top"><a href="slottdetalj.asp?id=216">Fontainebleau</A></td>
		<td valign="top">Frankrike</td></tr>
		
<!-- lastfilmid =  -->

</TABLE>
Medlem sedan juli 2003555 inlägg
#13

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..)

Medlem sedan feb. 2007220 inlägg
#14

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

och här har du hur det ser ut hemma på stationära under A:
http://slottsguiden.info/bilder/filmer2.jpg

Det är samma databas som jag har kopierat upp från min stationära till Loopia

Medlem sedan feb. 2007220 inlägg
#15

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...

För bäst förklaring se bilden här:
http://slottsguiden.info/bilder/filmer4.jpg

De filmerna som finns mer än en gång lägger sig även uppe precis under A B C osv... se bilden
(kod i inlägg nedanför)

Medlem sedan feb. 2007220 inlägg
#16
<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>
Medlem sedan feb. 2007220 inlägg
#17

Nej det var visst fler fel :(
Nu länkas man inte till någon film på IMDB när man klickar på filmnamnet

Medlem sedan juli 2003555 inlägg
#18

Du saknar <td>-tagg ibland :)

Medlem sedan feb. 2007220 inlägg
#19

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 :(

Medlem sedan juli 2003555 inlägg
#20

Titta i din "Else-sats", kolla väldigt noggrant och metodiskt, du saknar "<td>" där någonstans.. :)

(Hint: Din färdiga html-kod ser ut ungefär såhär: <tr><td></td>häst som blir på fel ställe</td></tr>

278 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
150 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)