Avatar billede zombien Juniormester
23. december 2007 - 10:26 Der er 15 kommentarer og
1 løsning

Problemering med sortering data-udtræk fra mysql databasen

Hejsa

Jeg sidder med et problem her, jeg arbejder lidt på en chat, hvor alle beskeder bliver gemt i en MySQL database, i denne tabel er der id, dato, klokken, afsender og besked...

jeg fremkalder data'en med denne sql-syntax
set chatmain = conn.execute("select * from heroes_chatbeskeder order by id desc, klokken desc limit 15")

men lige p.t. optræder det nyeste id øverst, så dvs. man skal læse oppe fra og ned, og jeg ønsker dette skal forgå sådan de nyeste kommer nederst...

men hvis jeg laver order by id asc, viser den kun de første 15 i databasen, så dvs. den ikke skifter :-S

derfor prøver jeg, den også skal forsøge at order by klokken, men det virker ikke som om den har en effekt, nogen der kan give mig et evt. råd for dette???

samt, jeg køre dette for at refreshe vinduet
<script>
setTimeout('window.location="main.asp"',7000);
</script>

hvilket gør, der til tider kommer en hvid skærm i 0,7 sekund, er der en metode til at undgå dette???
Avatar billede jansangill Nybegynder
23. december 2007 - 10:44 #1
order by id,klokken desc limit 15
Avatar billede hundevennen Nybegynder
23. december 2007 - 11:57 #2
du kan refreshe siden ved at sætte denne ind i <head<META HTTP-EQUIV="Refresh" CONTENT="10">
Avatar billede hundevennen Nybegynder
23. december 2007 - 11:58 #3
den order by skal være id asc, klokken limit 15
Avatar billede zombien Juniormester
23. december 2007 - 12:14 #4
Hundevennen < ved at gøre sådan "order by id asc, klokken limit 15" får jeg det samme resultat med de første 15 indlæg i databasen (dvs. nogle 3 dage gamle, hvilket ikke er optimalt for en chat ;))

Jansangill < dette retunere det samme, som hundevennen's forslag :(
Avatar billede zombien Juniormester
23. december 2007 - 12:24 #5
okay, nu har jeg fået den til at stille op korrekt :-S men så kommer problemet, nu viser den kun de 18 første lisom hundevennen og jansangill eksempler..

jeg har en limit på 18, hvis der så er 19 post, viser den jo kun de 18 første, kan man få den til at variere så det altid er de nyeste id's den bruger... og de nyeste dukker op for neden

min sql-syntax ser sådan her ud nu
set chatmain = conn.execute("select * from heroes_chatbeskeder where dato = '"&FormatDateTime(now,vbshortdate)&"' order by klokken asc, id desc  limit 18")
Avatar billede hundevennen Nybegynder
23. december 2007 - 12:26 #6
så skal du nok ha sorteret med din dato
noget med select top 15 from database order by dato desc og derefter klikken
Avatar billede hundevennen Nybegynder
23. december 2007 - 12:26 #7
:-)) klikken = klokken
Avatar billede hundevennen Nybegynder
23. december 2007 - 12:29 #8
select top 15 dato from database order by dato desc og derefter klokken
Avatar billede zombien Juniormester
23. december 2007 - 12:50 #9
set chatmain = conn.execute("select top 15 dato *  from heroes_chatbeskeder order by dato desc, klokken asc")

får jeg følgende fejl ved

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
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 '* from heroes_chatbeskeder order by dato desc, klokken asc' at line 1
/Kunder/VIS/files/members/chatten/main.asp, line 37

du har husket det er mysql og ikke access
Avatar billede hundevennen Nybegynder
23. december 2007 - 12:56 #10
du skall ikke ha**** med
Avatar billede hundevennen Nybegynder
23. december 2007 - 12:57 #11
set chatmain = conn.execute("select top 15 dato from heroes_chatbeskeder order by dato desc, klokken asc")
Avatar billede zombien Juniormester
23. december 2007 - 13:00 #12
okay, jeg fatter ikke dette her :-S

set chatmain = conn.execute("select * from heroes_chatbeskeder where dato = '"&FormatDateTime(now,vbshortdate)&"' order by klokken desc, id desc  limit 18")
           
if chatmain.eof = false and chatmain.bof = false then
chatmain.movelast
do until chatmain.bof
  response.write "<tr>"
  response.write "<td class='brodtext' width='40px' valign='top'>" &chatmain("klokken")& "</td>"
  response.write "<td width='5px'> </td>"
  response.write "<td class='brodtext' width='100px' valign='top'>" &chatmain("afsender")& "</td>"
  response.write "<td width='10px'> </td>"
  response.write "<td class='brodtext' width='260px' valign='top'>" &chatmain("beskeden")& "</td>"
  response.write "</tr>"
               
  response.write "<tr>"
  response.write "<td colspan='7' height='5px'> </td>"
  response.write "</tr>"
chatmain.moveprevious
LOOP
end if

får følgende fejlbeskrivelse:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E24)
Rækkesættet understøtter ikke baglæns hentning.
/Kunder/VIS/files/members/chatten/main.asp, line 38

den direkte linje 38 = chatmain.movelast
Avatar billede hundevennen Nybegynder
23. december 2007 - 13:20 #13
prøv at søge på eksperten på fejlsætning
Rækkesættet understøtter ikke baglæns hentning

der kommer nogle muligheder
Avatar billede zombien Juniormester
23. december 2007 - 13:30 #14
ja der kom nogle fine eksempler :S med access, og nu har jeg jo fået at vide man på ingenmåde må sammenligne disse 2 database metoder, da nogle ting virker på access og andre virker på mysql

så evt. bud på hvad der er galt???
Avatar billede cpufan Juniormester
23. december 2007 - 13:48 #15
Avatar billede zombien Juniormester
16. august 2010 - 18:07 #16
lukket
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