webForumDet fria alternativet

loopar inte ut dom nyaste posterna?

8 svar · 274 visningar · startad av Bosse168

Bosse168Medlem sedan nov. 20031 018 inlägg
#1

Använder SQL-satsen nedan för att loopa ut poster ur min MySQL databas, men problemet är att den inte loopar ut dom nyaste posterna om det har skrivits in mer än 15 poster idag utan den loopar fortfarande ut dom 15 äldsta posterna.
Någon som vet vad det är som är fel?

SQL="SELECT id,slaf,texten,datum,mobil " & _
" FROM mess WHERE DAYOFMONTH(datum) = DAYOFMONTH(CURDATE()) " & _
" AND MONTH(datum) = MONTH(CURDATE()) " & _
" AND YEAR(datum) = YEAR(CURDATE()) ORDER BY datum LIMIT 15"
InsiderMedlem sedan jan. 2000978 inlägg
#2

Testa att lägga in DESC nånstans på slutet. Alternativt testa med FIRST 15 istället för LIMIT 15.
Kanske kan va nåt, chansar lite bara... :h

Bosse168Medlem sedan nov. 20031 018 inlägg
#3

Lägger jag till DESC så skrivs posterna ut åt fel håll och FIRST 15 funkar inte.

Fel meddelandet:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.22-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIRST 15' at line 1

LarsGMedlem sedan dec. 200012 464 inlägg
#4
SQL="select * from (SELECT id,slaf,texten,datum,mobil " & _
" FROM mess WHERE DAYOFMONTH(datum) = DAYOFMONTH(CURDATE()) " & _
" AND MONTH(datum) = MONTH(CURDATE()) " & _
" AND YEAR(datum) = YEAR(CURDATE()) ORDER BY datum desc LIMIT 15 ) dt order by datum"

Om du inte har 4.1 så finns följande alternativ

  1. Uppgradera
  2. Skapa en arbetstabell med den inre selecten och hämta från den sorterat stigande
  3. Hämta in raderna med getrows och skriv ut dom i omvänd ordning
Bosse168Medlem sedan nov. 20031 018 inlägg
#5

Jag använder 4.0.22 så hur gör man för att få alternativ 3 att funka?

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Om man normalt gör (lite schematiskt)

a = rs.getrows 
for i = 0 to ubound(a)
...
next

så gör man istället

a = rs.getrows 
for i = ubound(a) to 0 step -1
...
next

Det finns ett flertal exempel på getrows i ASP-forumet så sök där för att få detaljerna rätt.

Bosse168Medlem sedan nov. 20031 018 inlägg
#7

Använder denna kod men den loopar fortfarande ut fel.

SQL="SELECT id,slaf,texten,datum,mobil " & _
" FROM mess ORDER BY datum DESC LIMIT 15"

Set Rs = Connect.Execute(SQL)

myArray = Rs.GetRows()

Rs.Close : Set Rs = Nothing

for i = ubound(myArray) to 0 step -1

         Response.Write(myArray(3,i))

next
@ndersMedlem sedan juni 200032 969 inlägg
#8

Nu har du ju med DESC i sorteringen i SQL-frågan, plus att du vänder på allt när du skriver ut det. Du hämtar alltså i den ordningen du vill ha det, men du vänder på utskriften. Med den SQL-frågan du har i ditt sista inlägg ska du inte vända på utskriften.

for i = 0 to ubound(myArray, 2)
Bosse168Medlem sedan nov. 20031 018 inlägg
#9

Fick ordning på det tack ska ni ha för hjälpen. :)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)