![]() |
Om man vill göra en sökning i mySQL, säg tex.
SELECT * FROM databas WHERE intvariabel = '5' Nu får man ut alla resultat där intvariabel = '5', låt oss säga runt 150 poster.. Om det finns ett id-fält i databasen, kan man på något sätt i sökningen ovan få reda på vilket plats ett speciellt id-nummer har i just denna sökning? Någon som förstår vad jag menar? :) |
Vilken plats i sökningen...? Alltså om posten med ID-numret 23 finns som resultat 50? Beror ju helt på vad du sorterar efter också och hur vet du att ett visst ID-nummer finns med i resultatet öht? Det går nog bara att ordna till i scriptet med php eller asp eller vad du nu kör med.
|
Citat:
|
Hmm, jag är alltså nyfiken på varför du vill veta på vilken plats i resultatet ditt id förekommer. Som föregående sa så beror det på hur det är sorterat alt i vilken ordning det är inlagt i databasen, men det är inget jag skulle lita på...
Vill du inte specifikt selectera ut ditt id-nummer så får du ju helt enkelt snurra igenom hela resultatet på klienten. |
Citat:
Hehe, uttrycker mig väldigt oklart & luddigt.. Jag vill alltså veta vart någonstans i den "stora" sökningen mitt id-nr finns, jag vill inte ha ut det... jag vill bara veta på vilket plats av tex. 100.000 sökningar (där varje rad har olika id-nr) just mitt id-nr på tex. 345234 ligger... Citat:
|
Citat:
...Och när du väl sorterar, VAD ska du sortera på? Det måste finnas någon liten vurpa i ditt tankesätt här. Kan du inte berätta varför positionen är av intresse? |
Ok vi skriver om varandra lite här... :)
Sortera efter datum då och låt koden som ritar ut paging-navigeringen sätta exempelvis det sista datumet för den nedersta posten som ritas ut på skärmen. Därmed vet nästa sql fråga vilket datum den ska köra nästa fråga fr.o.m |
Citat:
|
Hm, vet inte riktigt om det är det jag eftersträvar...
Problemet kan alltid lösas med PHP, men då måste resultatet sparas och hela sökningen med resultat måste gås genom. Nedanstående exempel visar en sökning i en topplista, sökningen sorteras efter totscore (=totala antalet röster) och votes (=summan vid varje röstning tillagd 1-10, så vid tex. två röstningar där två 10:or röstas ger votes = 20). Nu får man en sorterad lista där den med mest poäng kommer överst och så vidare.. För att få reda på vart en medlem med id-numret $id ligger i denna sorterade lista måste reslutatet gås genom med PHP som exemplet nedan visas.. Kod:
<? |
Ja, om ditt problem med pagingen är att du ska plocka ut delar av hiscorelistan så behöver du ju i din paging-kanpp/länk veta nästa ofset, vilket borde vara poängen, dvs första sidan visar de med 10 högsta poäng + lagrar poängen för den sista raden (10:e platsen). När du klickar på knappen så skriver du en ny sql fråga där du sätter ett WHERE vilkor att poängen måste vara mindre än X. Du kan använda typ limit för att slippa dra ner hela tabellen....
|
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 :) |
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. |
Citat:
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 :) |
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.
|
Citat:
|
Är det de här du är ute efter?
Kod:
SELECT * FROM tabell ORDER BY id LIMIT 10, 20; |
Citat:
|
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 17:02. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson