Gacha Posted August 24, 2004 Report Share Posted August 24, 2004 Vēlos ar next podziņu iegūt nākamo ierakstu no DB. Pieņemot, ka id var arī nebūt pēc kārtas, bet gan 1,2,6,9... Mēģināju šādu variantu: $next = mysql_query("Select id from table where id<'$id' order by id desc Limit 1"); $back = mysql_query("Select id from table where id>'$id' order by id desc Limit 1"); Bet ar šo variantu ne vienmēr dabū nākamo, bet gan kādu citu ierakstu! Vēl man ienāci ideja, ka varētu ielasīt tos visus id vienā masīvā un tad paņemt nākamo masīva elementu. Bet gribēju zināt, vai to nevar tikai ar mysql paveikt? Link to comment Share on other sites More sharing options...
bubu Posted August 24, 2004 Report Share Posted August 24, 2004 Ko nozīmē "Bet ar šo variantu ne vienmēr dabū nākamo, bet gan kādu citu ierakstu!" Nākamais ieraksts taču nebūs šis pats ieraksts, tātad labi, ka dabū citu ierakstu, nevis šo pašu. Ne? Un ja tu gribi iepriekšējo ierakstu dabūt tad vajag sakārtot dilstošā, nevis augošā secībā: "ORDER BY id DESC" Link to comment Share on other sites More sharing options...
Venom Posted August 24, 2004 Report Share Posted August 24, 2004 SELECT ... ORDER BY ... LIMIT $which,1 $which+1 next $which-1 prev Link to comment Share on other sites More sharing options...
Gacha Posted August 24, 2004 Author Report Share Posted August 24, 2004 @bubu - nu to es biju domājis tā, ka man ir vajadzīgs nākamais vai arī iepriekšējais, nevis kāds cits. un es nevaru kārtot savādāk, nekā man ir sakārtots. Vārdusakot tas ir nepieciešams galerijai, kur ir nepieciešams slēgt nākamo bildi un iepriekšējo. @venom - hmm, šis man liekas varētu nostrādāt, būs jaiemēģina! Link to comment Share on other sites More sharing options...
Gacha Posted August 24, 2004 Author Report Share Posted August 24, 2004 laikam nenostrādās, jo man ir zināms tikai esošā ieraksta id, nevis esošā ieraksta kārtas nummurs. Šis variants derētu, ja sāktu no pirmā ieraksta un tad ietu uz priekšu un atpakaļ! Vēl padomāju par to, ka varētu ievietot masīvā, bet tad izsecināju, ka tie ieraksti var būt milzum daudz un tad tas varētu bik bremzēt! Link to comment Share on other sites More sharing options...
bubu Posted August 24, 2004 Report Share Posted August 24, 2004 Es nesapratu! Tev ir tekošais raksts, ar id = 4. Tu gribi dabūt nākamo pēc kārtas? Piemēram, pieņemsim, ka tam id = 10. Tad "SELECT * FROM tabula WHERE id>'$id' ORDER BY id LIMIT 1" taču dabū to, ne? Link to comment Share on other sites More sharing options...
Gacha Posted August 24, 2004 Author Report Share Posted August 24, 2004 Tieši tā, tad es to dabūju. Bet ja tagad man ir 5 un slēdzu to 10 un tad nākamo 25 un tagad spiežu BACK tad viņš man uzslēdz nevis 10, bet gan 5! Te slēpjas tā problēma. Link to comment Share on other sites More sharing options...
bubu Posted August 24, 2004 Report Share Posted August 24, 2004 (edited) Lai meklētu atpakaļgaitā vajag šādu selektu: "SELECT * FROM tabula WHERE id < '$id' ORDER BY id DESC LIMIT 1" Edited August 24, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted August 24, 2004 Author Report Share Posted August 24, 2004 Nav gan! vajag šādu: "SELECT * FROM tabula WHERE id > '$id' ORDER BY id DESC LIMIT 1", jo visi ieraksti uz atpakaļ ir ar lielāku id. Bet viņš izvēlas nevis vienu uz atpakaļ, bet pašu pēdējo uz atpakaļ! Link to comment Share on other sites More sharing options...
Venom Posted August 24, 2004 Report Share Posted August 24, 2004 hint: līdzās id < vai > $id jāpagrozā arī ASC un DESC Link to comment Share on other sites More sharing options...
Gacha Posted August 24, 2004 Author Report Share Posted August 24, 2004 Beidzot, tā arī bija :) kjipa: "SELECT * FROM tabula WHERE id > '$id' ORDER BY id LIMIT 1" šis ir tas īstais, tik nesaprotu, kapēc nepieciešams tas ASC ja jau standartā viņš jau ir ASC ? Link to comment Share on other sites More sharing options...
bubu Posted August 24, 2004 Report Share Posted August 24, 2004 (edited) Nekā nesapratu. Ja id tabulā ir šādi (mazāks - vecāks): 1,4,6,10. Tad, pie $id='6': SELECT * FROM tabula WHERE id < '$id' ORDER BY id DESC LIMIT 1 dos 4 un SELECT * FROM tabula WHERE id > '$id' ORDER BY id ASC LIMIT 1 dos 10. Tātad pirmais ir back, un otrais ir next, vai arī es maldos? Es takš pamēģjinājo šitos selektus un strādā! Nesaprotu, kamdēļ tev mans neiet? Edit: Sapratu :) Tev id ir lielāks - vecāks :) Nu jā tad next un back tev ir otrādi nekā man. Edited August 24, 2004 by bubu Link to comment Share on other sites More sharing options...
Recommended Posts