Avatar billede dennism Nybegynder
21. februar 2003 - 14:51 Der er 8 kommentarer og
1 løsning

Mysql foresp.

Jeg har denne mysql foresp.:

$mysql = mysql_query("SELECT fra, til, tekst, date_format(dato, '%H:%i:%s') AS fdato FROM chat WHERE til = '' || til = '$_SESSION[brugernavn]' ORDER BY dato ASC LIMIT 0,50");

Den sorterer sådan at det den ældste dato er øverst, og datoen bliver nyere og nyere jo længere med kommer ned i dokumenter (dog er der kun 50 stk.).
Dette gør at den jo kun viser de 50 FØRSTE, men det jeg gerne vil have, er de SIDSTE 50 (i tabellen) som bliver sorteret efter dato..
Hvordan kan jeg gøre det?
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 14:54 #1
DESC i stedet for ASC
Avatar billede lauer Nybegynder
21. februar 2003 - 14:55 #2
$mysql = mysql_query("SELECT fra, til, tekst, date_format(dato, '%H:%i:%s') AS fdato FROM chat WHERE til = '' || til = '$_SESSION[brugernavn]' ORDER BY dato DESC LIMIT 0,50");

men så bliver rækkefølgen også byttet om, så de nyeste kommer først.
Ellers er du nødt til at finde ud af hvor mange indlæg der er i alt, og så trække 50 fra og skrive dette

$mysql = mysql_query("SELECT fra, til, tekst, date_format(dato, '%H:%i:%s') AS fdato FROM chat WHERE til = '' || til = '$_SESSION[brugernavn]' ORDER BY dato ASC LIMIT [ANTAL I ALT],50");

Jeg tror ikke at du kan udskifte [ANTAL I ALT] med count(*) med du kan prøve
Avatar billede dennism Nybegynder
21. februar 2003 - 14:59 #3
machomann >>

Hvordan er den simpleste måde at tælle antallet i alt?
Avatar billede dennism Nybegynder
21. februar 2003 - 15:00 #4
Skal jeg iøvrigt ikke sige:

LIMIT [ANTAL I ALT]-50,50
?
Avatar billede twm Nybegynder
21. februar 2003 - 15:05 #5
er det ikke lettere bare at samle dem i en streng
Ex(pseudokode)
While(iterator)
{
  strText = [det næste række] + strText
}

På den måde får du byttet om på rækkefølgen
Du skal selvfølgelig stadig bruge
...ORDER BY dato DESC LIMIT 0,50
Avatar billede lauer Nybegynder
21. februar 2003 - 15:06 #6
jo... :)

$antal = mysql_result(mysql_query("SELECT count(*) FROM chat"),0);
Avatar billede dennism Nybegynder
21. februar 2003 - 15:07 #7
twm >>

Jeg forstår altså ik lige hvad du har gang i!..
Avatar billede twm Nybegynder
21. februar 2003 - 15:07 #8
Metoden med at bruge count(*) koster et ekstra opslag på serveren!
Avatar billede twm Nybegynder
21. februar 2003 - 15:16 #9
Hvis vi tager denne kode:
$mysql = mysql_query("SELECT fra, til, tekst, date_format(dato, '%H:%i:%s') AS fdato FROM chat WHERE til = '' || til = '$_SESSION[brugernavn]' ORDER BY dato ASC LIMIT [ANTAL I ALT],50");

while($thisrow=mysql_fetch_row($mysql))
{

$strDest = "$thisrow[1];$thisrow[2]\n$strDest"

}
Recordset ser således ud
1    2
2    3
3    4

i $strDest vil der derefter ligge
3;4
2;3
1;2
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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

IT-JOB

Capgemini Danmark A/S

AI/Data Engineer

Politiets Efterretningstjeneste

Tech Lead til klientområdet i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Chef for SAP-forretningsspecialister