11. december 2007 - 14:51Der er
16 kommentarer og 1 løsning
loop m.m.
Hey. sidst jeg havde problemer med dette "loop" var fordi jeg havde flette nogle celler i en tabel der skulle tages højde for..
Nu har jeg lave en ny side (en top 9 chart over musik) der skifter mellem tre forskellige billeder og tekst vha. querystring
## MIN SIDE #### if request.querystring("plads") <> "4-6 or 7-9" then strlink = "<b>plads 1-3</b> plads 4-6 plads 7-9" if request.querystring("plads") <> "4-6 or 7-9" then strimg = "1-3" end if if request.querystring("plads") = "4-6" then strlink = "plads 1-3 <b>plads 4-6</b> plads 7-9" if request.querystring("plads") = "4-6" then strimg = "4-6" end if if request.querystring("plads") = "7-9" then strlink = "plads 1-3 plads 4-6 <b>plads 7-9</b>" if request.querystring("plads") = "7-9" then strimg = "7-9" end if %>
<table style="height:100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" colspan="4"> <p style="margin-left: 5px; margin-right: 5px" align="justify">Som DJ breder jeg mig over mange genre, så der er musik for en hver smag. Men hvis du nu siger <b> electro</b>, <b>house</b> eller <b>dance</b>, skal du ikke hive de store overtalelsesevner frem for at overbevise mig om at det er det vi skal hører ;-) Se charten: <%=strlink%></td> </tr> <tr> <td valign="bottom" width="151.66px"><p style="margin-left: 5px"></p><p style="margin-left: 5px">[plads]<b>. [KUNSTNER]</b></p><p style="margin-left: 5px">[TITEL]</p></td> <td valign="bottom" width="1px"></td> <td valign="bottom" width="151.66px"><p style="margin-left: 2px">[plads]<b>. [KUNSTNER]</b></p><p style="margin-left: 2px">[TITEL]</p></td> <td valign="bottom" width="152"><p>[plads]<b>. [KUNSTNER]</b></p><p>[TITEL]</p></td> </tr> <tr> <td valign="bottom" colspan="4" height="152"><img border="0" src="../grafik/01/<%=strimg%>.png" width="457" height="152"></td> </tr> </table>
Det er så meningen at hvis ?plads er tom vises plads 1-3, hvis ?plads=4-6 vises 4-6 og 7-9 vises 7-9...
hvordan laver jeg så nemmest noget kode der virker med databasen for i første omgang begyndte jeg at lave en masse if sætninger (dog uden det kom til at virke) så fordi det ikke virker og fordi det kom til at fylde vildt meget (der må være et lettere og mere overskuelig måde at gøre det på) derfor spørg jeg nu her??
og så har jeg rodet lidt videre... har prøvet at afgrænse det lidt - men det virker ikke helt efter hensigten mit billeder skifter ganske rigtigt alt efter hvad querystring er, men ikke SQL'en der gerne også skulle ændres så tekst passer til de billeder der vises:
Jeg har fået denne kode stykket sammen:
## KODE ###
<% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/kristhedj.mdb") Conn.Open DSN if request.querystring("plads") <> "4-6 or 7-9" then SQL = "select * from chart where 1 <= id <= 3 order by id asc" if request.querystring("plads") <> "4-6 or 7-9" then strimg = "1-3" if request.querystring("plads") <> "4-6 or 7-9" then strlink = "<b>plads 1-3</b> plads 4-6 plads 7-9" if request.querystring("plads") = "4-6" then SQL = "select * from chart where 4 <= id <= 6 order by id asc" if request.querystring("plads") = "4-6" then strimg = "4-6" if request.querystring("plads") = "4-6" then strlink = "plads 1-3 <b>plads 4-6</b> plads 7-9" if request.querystring("plads") = "7-9" then SQL = "select * from chart where 7 <= id <= 9 order by id asc" if request.querystring("plads") = "7-9" then strimg = "7-9" if request.querystring("plads") = "7-9" then strlink = "plads 1-3 plads 4-6 <b>plads 7-9</b>" end if Set rs = Conn.Execute(SQL) %> <table style="height:100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" colspan="4"> <p style="margin-left: 5px; margin-right: 5px" align="justify">Som DJ breder jeg mig over mange genre, så der er musik for en hver smag. Men hvis du nu siger <b> electro</b>, <b>house</b> eller <b>dance</b>, skal du ikke hive de store overtalelsesevner frem for at overbevise mig om at det er det vi skal hører ;-) Se charten: <%=strlink%></td> </tr> <tr> <td valign="bottom" width="151.66px"><p style="margin-left: 5px"></p><p style="margin-left: 5px"><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p style="margin-left: 5px"><%=rs("titel")%><%rs.movenext%></p></td> <td valign="bottom" width="1px"></td> <td valign="bottom" width="151.66px"><p style="margin-left: 2px"><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p style="margin-left: 2px"><%=rs("titel")%><%rs.movenext%></p></td> <td valign="bottom" width="152"><p><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p><%=rs("titel")%><%rs.movenext%></p></td> </tr> <tr> <td valign="bottom" colspan="4" height="152"><img border="0" src="../grafik/01/<%=strimg%>.png" width="457" height="152"></td> </tr> </table> <% Conn.Close Set Conn = Nothing %>
If plads <> "4-6" And plads <> "7-9" Then SQL = "SELECT * FROM chart WHERE 1 <= id AND id <= 3 ORDER BY id ASC" strimg = "1-3" strlink = "<b>plads 1-3</b> plads 4-6 plads 7-9" ElseIf plads = "4-6" Then SQL = "SELECT * FROM chart WHERE 4 <= id AND id <= 6 ORDER BY id ASC" strimg = "4-6" strlink = "plads 1-3 <b>plads 4-6</b> plads 7-9" ElseIf plads = "7-9" Then SQL = "SELECT * FROM chart WHERE 7 <= id AND id <= 9 ORDER BY id ASC" strimg = "7-9" strlink = "plads 1-3 plads 4-6 <b>plads 7-9</b>" end if End If
Set rs = Conn.Execute(SQL) %> <table style="height:100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" colspan="4"> <p style="margin-left: 5px; margin-right: 5px" align="justify">Som DJ breder jeg mig over mange genre, så der er musik for en hver smag. Men hvis du nu siger <b> electro</b>, <b>house</b> eller <b>dance</b>, skal du ikke hive de store overtalelsesevner frem for at overbevise mig om at det er det vi skal hører ;-) Se charten: <%=strlink%></td> </tr> <tr> <td valign="bottom" width="151.66px"><p style="margin-left: 5px"></p><p style="margin-left: 5px"><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p style="margin-left: 5px"><%=rs("titel")%> <% rs.MoveNext %> </p></td> <td valign="bottom" width="1px"></td> <td valign="bottom" width="151.66px"><p style="margin-left: 2px"><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p style="margin-left: 2px"><%=rs("titel")%> <% rs.MoveNext %> </p></td> <td valign="bottom" width="152"><p><%=rs("id")%><b>. <%=rs("kunstner")%></b></p><p><%=rs("titel")%> <% rs.MoveNext %> </p></td> </tr> <tr> <td valign="bottom" colspan="4" height="152"><img border="0" src="../grafik/01/<%=strimg%>.png" width="457" height="152"></td> </tr> </table> <% Conn.Close Set Conn = Nothing %>
ok inden jeg bare kopier og sætter ind i min kode vil jeg lige prøve at forstå først? (vil jo gerne lære af min fejl) Du har sat det lidt i system og udeladt en masse if'er fordi at de if'er jeg har siger det samme tre gang i træk?
kunne godt huske noget med elseif men jeg har så delt den (else if) derfor det ikke har virket for mig :(
og så er det vel også derfor at SQL ikke er skiftet for det har været true at plads hverken var 4-6 eller 7-9 når siden læses første gang...
> ok inden jeg bare kopier og sætter ind i min kode vil jeg lige prøve at forstå først? (vil jo gerne lære af min fejl)
Cool :^)
> Du har sat det lidt i system og udeladt en masse if'er fordi at de if'er jeg har siger det samme tre gang i træk?
Korrekt.
> kunne godt huske noget med elseif men jeg har så delt den (else if) derfor det ikke har virket for mig :(
"else if" gør noget lidt andet end "elseif" men man kan sagtens lave det på den måde også. Jeg valgte primært at bruge elseif fordi at det er den bedste løsning performance mæssig. Du kunne dog også bare have kode sådan:
If plads <> "4-6" And plads <> "7-9" Then SQL = "SELECT * FROM chart WHERE 1 <= id AND id <= 3 ORDER BY id ASC" strimg = "1-3" strlink = "<b>plads 1-3</b> plads 4-6 plads 7-9" End If
If plads = "4-6" Then SQL = "SELECT * FROM chart WHERE 4 <= id AND id <= 6 ORDER BY id ASC" strimg = "4-6" strlink = "plads 1-3 <b>plads 4-6</b> plads 7-9" End If
If plads = "7-9" Then SQL = "SELECT * FROM chart WHERE 7 <= id AND id <= 9 ORDER BY id ASC" strimg = "7-9" strlink = "plads 1-3 plads 4-6 <b>plads 7-9</b>" end if End If
> og så er det vel også derfor at SQL ikke er skiftet for det har været true at plads hverken var 4-6 eller 7-9 når siden læses første gang...
Faktisk var det ikke det du testede - du sammenlignede plads med teksten "4-6 or 7-9" og det er ikke det samme som at tjekke at denb er forskellig fra "4-6" og "7-9" (prøv at kigge på den første If i koden ovenfor).
Jeg kan ikke helt lige gennemskue hvorfor at din kode fejlede på dne måde den gjorde, men du havde nu også nogle fejl i selve SQL'en og de kunne sagtens have været årsag til at du fik det samme ud hver gang.
sejt! havde slet ikke set du havde rettet i SQL'en også, men jeg brugte bare en ligning som i mat, men kan godt se dit AND ligesom med <>... man er nød til at skrive det to gange så.. jamen takker for at du lige gad at gennemløbe min egen lille tjekliste - smid et svar og der kommer point i din retning --->
kan jeg stille en spm omkring noget andet i dette spm eller skal jeg oprette et nyt? - det er om noget <map> og <area>
Ret beset burde det oprettes som et nyt spørgsmål - på den måde er der også større chance for at andre end mig kigger på dem (det er ikke så tit at folk kigger ind i et spørgsmål som allerede er godt i gang).
Men stil du det bare her. Jeg tør dog ikke garantere for at jeg kan svare på det. :^)
* Det er fordi jeg i stedet for at have 27 billeder på 50 x 50 har valgt at lave det som et stort billedet i stedet for. Så har jeg brugt <map> og en masse <area> med en alt="" så der kommer den lille box med tekst frem når man peger på et lille billede med musen.
Men da jeg så lige skulle se om min side også kan ses i FF, opera og safari støder jeg på problemet... siden vises fint (bortset lige fra safari, da skrifttypen er en anden) og alt virker pånær lige disse area's som jeg har brugt rimlig tit
** sniger lige en forsættelse på loop m.m. ind imellem her ... for hvis jeg nu har sat kriteriet: SQL = "select * from galleri where ((select max(id) from galleri) - 4) <= id AND id <= (select max(id) from galleri) order by id asc" så bliver udtrækket baseret på id mellem 2 og 6 i følgende id-rækkefølge: 2 3 4 5 6 når jeg så bladre side skal id'erne stadig være mellem 2 og seks men i stedet skal rækkefølgen ændres til: 3 4 5 6 2
12/12-2007 13:38:30> Hvad sker der i Safari? Lige nu ved jeg bare at "det ikke fungere". I øvrigt burde du kon overveje at have din tekst i en title-attribut i stedet for i en alt.
12/12-2007 14:16:32> Ja, det er så en anden god grund til at ikke oprette et nyt spørgsmål i et gammelt - nu har vi jo pludseligt to tråde vi skal holde styr på! Nå, men pyt med det ... vi forsøger. :^)
Ja, der er vist ingen grund til at det ikke skulle kunne gøres i ASP. Problemet er blot at sorteringen jo foregår i databasen (i dit sql-kald) og at ASP-scriptet derfor modtager dem i sorteret rækkefølge. Der skal altså en god del ekstra kode til for at få det til at fungere sådan som du vil have det.
* (safari/<map>) Ok vil prøve at lave alt="" til title i stedet for... i safari er teksten en anden type (siden kan vises men den holder ikke helt sin størrelse pga en anden type tekst - det er det eneste (+ fejlen med alt="", som i alle andre browsere utagen IE)
** (id-rækkefølge) hvis jeg kommer med en beskrivelse og/eller kode (evt. link til side) har du måske et bedre forslag til hvordan jeg skal lave mit galleri i stedet for?
Meningen er at det hele er ét billede. Otte store billeder (4x4 tern) og så 4 små billeder i højre side af billedet der er links til fire andre gallerier.
Meningen var at jeg så skulle føje titel i databasen og så et auto id jeg så kunne bruge tilat hente de seneste 5 billedgalleriet med...
<% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/kristhedj.mdb") Conn.Open DSN SQL = "select * from galleri where ((select max(id) from galleri) - 4) <= id AND id <= (select max(id) from galleri) order by id asc" Set rs = Conn.Execute(SQL) if request.querystring("vis") = "" then billed = 2 else billed = request.querystring("vis") end if strbild = billed do while not rs.EOF %> <table style="height:100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top"><p style="margin-left: 5px; margin-right: 5px" align="justify"> Kom med bag i kulisserne hvor jeg arbejder som teknikker og se hvordan det ser ud både før, under og efter SHOWTIME. Lige nu vises de otte billeder fra: <b><%=rs("titel")%></b></p></td> </tr> <tr> <td valign="bottom"><map name="naviger"> <area shape="rect" coords="0, 0, 407, 203" title="billeder fra <%=rs("titel")%><%rs.movenext%>"> <area href="?vis=<%=rs("id")%>" style="cursor: hand" shape="rect" coords="408, 0, 458, 50" title="<%=rs("titel")%><%rs.movenext%>"> <area href="?vis=<%=rs("id")%>" style="cursor: hand" shape="rect" coords="408, 51, 458, 101" title="<%=rs("titel")%><%rs.movenext%>"> <area href="?vis=<%=rs("id")%>" style="cursor: hand" shape="rect" coords="408, 102, 458, 152" title="<%=rs("titel")%><%rs.movenext%>"> <area href="?vis=<%=rs("id")%>" style="cursor: hand" shape="rect" coords="408, 153, 458, 203" title="<%=rs("titel")%><%rs.movenext%>"> </map> <img border="0" src="../grafik/02/galleri/<%=strbild%>.png" width="457px" height="203px" usemap="#naviger"></td> </tr> </table> <% loop Conn.Close Set Conn = Nothing %>
jeg har kun en id og en [tekst] og [id] (autonr.) kan så se at jeg nok også skal lave en et billedfelt med stien til mine billeder evt [pic]
Nu er det 32små eller 8store billeder der ligger - forskellen er at de 'små' skifter plads alt efter hvilket galleri der er tale om... de 'store' er selve galleriet MEN det hele er jo et billede (har jeg brugt det der <map><area> til at lave links med...
X = små billeder der tilsammen giver et større billeder 32små, 8større og + K = små billeder, giver det hele et stort billede.. (lavet i et foto-program)
Synes godt om
Ny brugerNybegynder
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.