Jump to content
php.lv forumi

Iegūt nākamo ierakstu


Gacha

Recommended Posts

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

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

@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

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

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

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

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

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

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 by bubu
Link to comment
Share on other sites

×
×
  • Create New...