WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL-sökning.. (https://www.wn.se/forum/showthread.php?t=15957)

thorsell 2006-09-01 13:49

Förstår vad du menar, men tog exemplet med topplistan här bara som ett exempel eftersom det var lite lättare att förklara samt att jag hade färdig php-kod för den ;)

Gör i själva verket ett forum, och vid sökningar av trådar kan en tråd dyka upp som finns djupt nere från själva startinlägget.. vilket gör att paging får användas..
Alla trådar har givetvis ett unikt id-nr..

För att man inte hela tiden ska behöva börja vid startinlägget (på sida 1, och ligger den eftersökta tråden på sida 10 kan det bli lite jobbigt när man får leta själv efter den), så tänkte jag då att man skulle komma direkt till sida 10 vilket är precis så det ska fungera..

Problemet är då var exakt i söknigen den sökta tråden ligger..
Får man reda på exakt var kan man räkna ut vilken sida det är relativt enkelt, så det är inga problem.. men behöver få reda på vart i den ordnade sökningen den eftersökta tråden finns..

Givetvis kan man göra så att startinlägg bara kan sökas, men det känns lite "fattigt".. sista inlagda tråden är också lätt att finna, det är bara att vända på sökningen och köra "LIMIT 1".. det är ju problemet när tråden finns mitt i smeten så att säga som det blir lite probelm :)

magic 2006-09-01 13:51

jag hittade denna sida länk men fick det inte själv att fiungera när jag testade det.

om det inte är viktigt om svaret kommer i mysql eller om det kommer i php så kan du select * from tabel where id < ditt_id
sen kolla mysql_num_rows så vet du hur många rader som har lägre id än ditt id.

thorsell 2006-09-01 13:57

Citat:

Originally posted by magic@Sep 1 2006, 13:51
jag hittade denna sida http://www.experts-exchange.com/Data..._21669194.html men fick det inte själv att fiungera när jag testade det.
om det inte är viktigt om svaret kommer i mysql eller om det kommer i php så kan du select * from tabel where id ditt_id
sen kolla mysql_num_rows så vet du hur många rader som har lägre id än ditt id.

Har tyvärr inte konto hos experts-exchange, så kunde inte se ;)

Tror faktiskt att ditt tips var precis det jag eftersträvar.. verkar lätt och bra :)
Ibland ser man inte träden för all skog när man stirrar sig blind på ett problem ;)

Får testa om det fungerar, men det gör det säkert :)

Robert 2006-09-01 13:59

Du kan ju lagra sorteringsnumret i en egen kolumn när inlägget sparas så vet du i vilken ordning i tråden en post kommer efter att du läst in den.

thorsell 2006-09-01 14:02

Citat:

Originally posted by Robert@Sep 1 2006, 13:59
Du kan ju lagra sorteringsnumret i en egen kolumn när inlägget sparas så vet du i vilken ordning i tråden en post kommer efter att du läst in den.

Om ett inlägg bort av admin mitt i en tråd kan det bli problem med efterföljande inlägg då dock.. i.o.f. kan man köra en UPDATE på alla efterföljande då..

oller 2006-09-01 14:05

Är det de här du är ute efter?

Kod:

SELECT * FROM tabell ORDER BY id LIMIT 10, 20;
Frågan visar 20 poster, med start från den tionde.

Robert 2006-09-01 14:08

Citat:

Ursprungligen postat av thorsell
Citat:

Ursprungligen postat av Robert
Du kan ju lagra sorteringsnumret i en egen kolumn när inlägget sparas så vet du i vilken ordning i tråden en post kommer efter att du läst in den.


Om ett inlägg bort av admin mitt i en tråd kan det bli problem med efterföljande inlägg då dock.. i.o.f. kan man köra en UPDATE på alla efterföljande då..

Tja, av den anledning som endera hela trådar tas bort eller meddelanden redigeras, ej tas bort. :)

thorsell 2006-09-01 15:12

Har ordnat till det så det funkar nu iallafall .. tack för alla tips ;)
(Körde i slutändan på Roberts tips ändå) :)


Alla tider är GMT +2. Klockan är nu 02:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson