22. september 2002 - 02:23Der er
82 kommentarer og 1 løsning
SQL forespørgsel
Jeg kan ikke finde ud af hvordan jeg får vist 2 rækker samtidigt fra en database
Nedenstående fortsætter til sidste og stopper. Men hvis jeg har 10 rækker (ID) og kun vil ha' vist de første 2 hvad er variablen så?
Og hvor findes der en liste over alle de forskellige variabler?
' SQL forespørgsel strSQL = "Select * From personer Order by Foedselsdato Desc" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
' Gennemløb Recordset (rs) med en løkke Do
' Udskriv værdien af kolonnen Fornavn og fødselsdato Response.Write rs("Fornavn") & " " & rs("Foedselsdato") & "<br>"
' Gå til næste Record i rs rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF
' Luk databaseforbindelse Conn.Close Set Conn = Nothing %>
RBL=> Problemet er at det er nyheder jeg trækker ind på siden.. Selv om der er 10 i databasen skal det altid være de 2 nyeste der trækkes ind og vises på forsiden.. (hvordan jeg så lige styrer det) Plus at jeg skal kunne styrer det med stylesheet som det ses nedenfor...
Med det du skrev virker, men her blir de 2 news jo bare smidt ind på siden. Jeg har faktisk også 3 kolonner til nyheder i databasen: 1 til dato, 1 til News (UK) og 1 til Nydeder (DK)
Derfor kan jeg ikke bruge det du skrev med at vises kolonner...
HJÆLP!
<% ' SQL forespørgsel strSQL = "Select top 2 * From NEWS" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL) %>
jeg kan ikke rigtig se problemet. Næsten lige meget hvordan du viser det og hvor mange informationer du skal vise, kan du altid begrænse antallet af rækker ved at tælle antallet af viste rækker.
Jeg forstår ikke helt dit problem, men prøv med det her:
<% ' SQL forespørgsel strSQL = "Select top 2 * From NEWS ORDER BY Date" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL) %>
Jeg skal bare ha' den til at vise 2 rækker på siden, selv om der måske er 10 rækker i databasen.. Det må der være muligt at sætte en variable for det i denne linie alene
strSQL = "Select top 2 * From NEWS ORDER BY Date"
(hvordan ser de mulige variabler ud)
Jeg vil også gerne vide om den KAN vise alle rækker på en gang med en: strSQL = "Select ALL* From NEWS"
<% Session.TimeOut = 40 IF request.querystring("sprog") = "UK" THEN Session("sprog") = "UK" sprogid = "DK" ELSE Session("sprog") = "DK" sprogid = "UK" END IF %>
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/theselfimages.mdb") Conn.Open DSN %>
<% ' SQL forespørgsel strSQL = "Select top 2 * From NEWS ORDER BY Date" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL) %>
<html>
Og her trækkes nyhederne ind fra DB på forsiden alt efter sprog. Som det er NU trækkes kun den første række ud af 3 ind på siden, Hvorfor? Jeg vil gerne kunne se 2 nyheder (altså 2 rækker fra DB)
Faktisk skulle det gerne være de 2 nyeste efter dato der vises...
Men hvordan bruger jeg Respone.write record med nedenstående, som er mit stylesheet der placerer teksten det rigtige sted på siden og med diverse styles?
<% ' SQL forespørgsel strSQL = "Select top 2 * From NEWS ORDER BY Date DESC" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
Værsgo.. du må meget gerne checke for andre genrelle fejl...
<% Randomize tal = int(rnd*2)+1 %>
<% Session.TimeOut = 40 IF request.querystring("sprog") = "UK" THEN Session("sprog") = "UK" sprogid = "DK" ELSE Session("sprog") = "DK" sprogid = "UK" END IF %>
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/theselfimages.mdb") Conn.Open DSN %>
<% ' SQL forespørgsel strSQL = "Select top 2 * From NEWS ORDER BY Date DESC" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL) %>
' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/theselfimages.mdb") Conn.Open DSN
' SQL forespørgsel strSQL = "Select top 2 * From NEWS ORDER BY Date DESC" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
Do While Not rs.EOF
if sprogid="UK" then
%> <tr> <td><%if not rs.eof then%> <p class="tekst"><span class="overskrift"><%=rs("date")%></span><br><%=rs("news")%></p> <%else%><p class="tekst">No news...</p><%end if%> </td> <%elseif sprogid="DK" then%> <td><%if not rs.eof then%> <p class="tekst"><span class="overskrift"><%=rs("date")%></span><br><%=rs("nyhed")%></p> <%else%><p class="tekst">Ingen nyheder...</p><%end if%> </td> </tr> <% end if
' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/theselfimages.mdb") Conn.Open DSN
' SQL forespørgsel strSQL = "SELECT TOP 2 * FROM NEWS ORDER BY Date DESC" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
Do While Not rs.EOF %> <tr> <td> <p class="tekst"><span class="overskrift"><%=rs("date")%></span><br><%=rs("news")%></p> </td> </tr> <% Loop %> </table>
Hvis overstående resulterer i, at serveren igen hænger, så genstart serveren (evt. computeren) og prøv igen. Hvis det ikke hjælper, er det nok databasen, der er problemet.
Det er ikke et eller andet firewall pis, vel? Det er mærkeligt det har jo virket fint og hurtigt med at trække de ene nyhed ind på siden.. Hvad er det TBL for noget?
strSQL = "SELECT * FROM tblNews" Set rs = Conn.Execute(strSQL)
Do While Not rs.EOF Response.Write "<tr><td>" Response.Write "<p class=""tekst""><span class=""overskrift"">" & rs("dato") & "</span><br>" & rs("news") & "</p>" Response.Write "</tr></td>" rs.MoveNext Loop
Conn.Close Set Conn = Nothing
%> </table>
</html>
Jeg glemte, at tilføje et rs.MoveNext på dit script. Da jeg prøvede, at køre dit script begyndte serveren, at hænge. Problemet var, at scriptet loopede på den samme record, fordi rs.EOF hele tiden var False.
Prøv lige det her nu:
<% Randomize tal = int(rnd*2)+1
Session.TimeOut = 40 IF request.querystring("sprog") = "UK" THEN Session("sprog") = "UK" sprogid = "DK" ELSE Session("sprog") = "DK" sprogid = "UK" END IF
' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/theselfimages.mdb") Conn.Open DSN
' SQL forespørgsel strSQL = "Select top 2 * From tblNews ORDER BY Dato DESC" ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
Do While Not rs.EOF
if sprogid="UK" then
%> <tr> <td><%if not rs.eof then%> <p class="tekst"><span class="overskrift"><%=rs("dato")%></span><br><%=rs("news")%></p> <%else%><p class="tekst">No news...</p><%end if%> </td> <%elseif sprogid="DK" then%> <td><%if not rs.eof then%> <p class="tekst"><span class="overskrift"><%=rs("dato")%></span><br><%=rs("nyhed")%></p> <%else%><p class="tekst">Ingen nyheder...</p><%end if%> </td> </tr> <% end if rs.movenext Loop %>
Scriptet skulle i hvert fald gerne vise de seneste 2 nyheder fra databasen. Ellers kan du bare oprette nye nyheder for at kontrollere om den viser de seneste to. Og du kan godt hive fat i mig, hvis der opstår problemer med sitet. Jeg elsker udfordringer!!
Takker for points.
PS. Jeg kan godt forstå din begejstring over, at det hele virker for dig. Dejlig oplevelse ik'?
Kan man sætte et STYLE på datoen i databasen så den ikke skriver 1/1/2002 Men i stedet: 01.01.2002 -- man kan åbenbart ikke skrive punktum i dato kolonnen i DB..
Eller kan jeg styrer dette med et STYLESHEET på selve siden?
<% Function DatoFunk(Dato) As String Dim Aar, Maaned, Dag, Temp Aar = DatePart("YYYY", Dato) Maaned = DatePart("M", Dato) Dag = DatePart("D", Dato)
If Dag < 9 Then Temp = "0" & Trim(Str(Dag)) End If Temp = Temp & "." If Maaned < 9 Then Temp = Temp & "0" & Trim(Str(Dag)) End If Temp = Temp & "." & Aar
DatoFunk = Temp End Function %>
Derefter kan du kalde funktionen Response.Write(DatoFunk(rs("dato")))
Du kan tjene 60 point mere for at modificerer en preloader. Jeg har den liggene. Den bruger layers, men tror du den kan centreres på en side alt efter opløsning? (Uden brug af frames til at skubbe den på plads med)
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.