Avatar billede chris96 Nybegynder
05. august 2004 - 23:40 Der er 22 kommentarer og
1 løsning

Udtræk af eks top 4-10?

Hejsa!
Jeg er ved at lave et nyhedsscript - og det skal fungere på den måde, at der på hjemmesiden bliver vist eks. de tre nyeste nyheder (top 3) - og derefter en liste af nyhedsoverskrifter fra eks. den 4. nyeste til den 13. nyeste!

Er der en simpel og hurtig måde at lave det på?
Avatar billede dj-sejler Praktikant
05. august 2004 - 23:41 #1
SELECT top 4 * FROM
Avatar billede dj-sejler Praktikant
05. august 2004 - 23:41 #2
var vidst lidt hurtig der...
Avatar billede dj-sejler Praktikant
05. august 2004 - 23:44 #3
noget med
SELECT * FROM tabel WHERE id
BETWEEN 4 AND 13 desc

ved ikke om man kan det
Avatar billede chris96 Nybegynder
05. august 2004 - 23:48 #4
Tror jeg ikke helt! F.eks. så har den nyeste nyhed id nummer 821 - næstnyeste 820 - osv... men det ændrer sig jo konstant!

Jeg kan vel gå ind og trække det højeste ID, trække tre fra - og så lave en løkke, der kører 10 gange... eksempelvis! Men kan det ikke gøres lettere?
Avatar billede chris96 Nybegynder
05. august 2004 - 23:57 #5
Men lige for at lave det lidt sjovere - så skal der skal en af kollonerne opfylde et af tre kriterier!
Avatar billede jonas82 Nybegynder
06. august 2004 - 00:05 #6
SELECT * FROM tabel ORDER BY id DESC LIMIT 0,5

Giver dig de 5 nyeste.
Avatar billede jonas82 Nybegynder
06. august 2004 - 00:10 #7
SELECT * FROM tabel ORDER BY id DESC LIMIT 5,5

Giver dig de 5 næste.
Avatar billede chris96 Nybegynder
06. august 2004 - 00:11 #8
strSQL = "Select * FROM nyheder where (art = 'Fodbold' OR 'Generel') ORDER BY id DESC LIMIT 4,13"

Så får jeg følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in ORDER BY clause.
Avatar billede michael_stim Ekspert
06. august 2004 - 00:15 #9
strSQL = "Select * FROM nyheder where art = 'Fodbold' OR art = 'Generel' ORDER BY id DESC LIMIT 4,8"
Avatar billede chris96 Nybegynder
06. august 2004 - 00:20 #10
Nope - samme fejl...

(art = 'Fodbold' OR 'Generel') <- bruger jeg, hvor jeg henter top tre ud! Og den virker, så det er ikke det!
Avatar billede michael_stim Ekspert
06. august 2004 - 00:25 #11
Det er mig der sover, du kan ikke bruge limit i access det er en ren MySQL-syntax
Avatar billede michael_stim Ekspert
06. august 2004 - 00:27 #12
Kan man ikke välge top 13 og så lägge den ind i en loop á la:
while (rs.BOF + 3)
Avatar billede chris96 Nybegynder
06. august 2004 - 00:40 #13
Hvordan???
<%
strSQL = "Select TOP 13 * FROM nyheder where (art = 'Fodbold' OR 'Generel' OR 'AaB-Netavis') ORDER BY id DESC"
Set rs = Conn.Execute(strSQL)

if rs.eof then
response.write "<tr><td align=right bgcolor=#FFFFFF><font face=verdana size=-2><b>Ingen nyheder</b></font></td></tr>"

else

           

Do While (rs.BOF + 3)
Response.write "<font face=Verdana size=-2><b>&nbsp;<img SRC=pics/knap2.gif> " & rs("overskrift") & "</b></font>"
rs.MoveNext
Loop
end if
%>
Avatar billede michael_stim Ekspert
06. august 2004 - 00:41 #14
Ved ikke om det virker, bare et skud i tågen.
Avatar billede chris96 Nybegynder
06. august 2004 - 00:45 #15
Med ovenstående script viser den alle TOP 13 nyheder... og kommer sluttelig med følgende fejl:

error '80020009'
Exception occurred.
/nyside/Default.asp, line 265 (Linie 265 er den nederste response.write linie)
Avatar billede michael_stim Ekspert
06. august 2004 - 00:48 #16
do while not rs.eof or (rs.bof + 3)
Avatar billede michael_stim Ekspert
06. august 2004 - 00:52 #17
Kan ikke tänke klart nu, mine öjne bliver holdt oppe af tändstikker. Men i värste fald kan man lägge den ind i en loop og så lade väre med at udskrive de tre förste. Men kan ikke lige omstille hjernen til ASP lige nu. I'll be back tomorrow ;o)
Avatar billede chris96 Nybegynder
06. august 2004 - 00:53 #18
Der fremkommer samme fejl! Jeg skulle faktisk til at sige det samme... linserne er smidt, så jeg kan ikke engang se skærmen ;)
Avatar billede kimblim Nybegynder
06. august 2004 - 01:06 #19
Tja, jeg havde lavet en sql-statement ala denne:
Select TOP 13 * FROM nyheder where (art = 'Fodbold' OR 'Generel' OR 'AaB-Netavis') ORDER BY id DESC

og så havde jeg lavet sorteringen i ASP'en:

i = 0
do while not rs.eof
{
  if(i>3) then
  {
    udskriv nyheden på en måde
  }
  else
  {
    udskriv nyheden på en anden måde
  }
  i=i+1
}

Mit asp er lidt rustent, men forhåbentlig giver det mening?
Avatar billede chris96 Nybegynder
06. august 2004 - 09:31 #20
<%
strSQL = "Select top 13 * from nyheder where (art = 'Fodbold' OR 'Generel' OR 'AaB-Netavis') order by id desc"
Set rs = Conn.Execute(strSQL)

i = 0

Do While Not rs.EOF
           
if (i<3) then
   
Kortnyhed = Left(rs("nyhed"), 300)
Response.write "<tr><td width=100% BGCOLOR=#DE0029><font face=Verdana color=#FFFFFF size=-2><b>&nbsp;<img SRC=pics/knap2.gif> " & rs("overskrift")& "</b></font></td></tr>"
Response.write "<TR><TD><font face=verdana size=-2><i>Af " & rs("skrevetaf") & " den " & rs("dato") & "</i><br>" & Kortnyhed & "...<br><b><a href=visnyhed.asp?id=" & rs("id") & ">Læs mere...</a><b><p></font></td></TR>"
               
else
               
Response.write "<TR><TD><font face=Verdana size=-2><b>&nbsp;<img SRC=pics/knap2.gif> " & rs("overskrift") & "</b></font></TD></TR>"

i=i+1
end if

rs.MoveNext   
LOOP
%>

Så smider den alle 13 nyheder ud efter det første udsagn - og ingen, hvor det bare er overskriften!
Avatar billede chris96 Nybegynder
06. august 2004 - 09:57 #21
Smed i=i+1 op lige efter If - sætningen, så virker det!

Smid et svar - så får du pointene!
Avatar billede kimblim Nybegynder
06. august 2004 - 10:26 #22
svar ;)
Avatar billede chris96 Nybegynder
06. august 2004 - 10:33 #23
Og mange tak for hjælpen!!!
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