anti päewik

Sisaldab Palju Erinewaid Imesid ja Öppetusi Tarkadele.

Lahendus: eelmine/järgmine lingid


Mina lahendasin selle probleemi nii:

SELECT id FROM pictures WHERE parent_album = 4;

Tulemuseks kõigi piltide ID-d, need loen järjendisse sisse. Nüüd, mõnd pilti vaadates toimub järgnev:

// id tuleb url-ist, image_list on eelneva päringu tulemus
// leian küsitud pildi indeksi järjendis
$current_picture = array_search($id,$image_list);

// vaikimisi eeldan, et kumbagi linki pole
$prev_link = $next_link = '';

// kui vaadeldav pilt ei ole esimene, siis teeme lingi eelmisele
if ($current_picture > 0)
    $prev_link = 'http://site/pilt.php?id=' . $image_list[$current_picture-1];

// kui vaadeldav pilt ei ole viimane, siis link järgmisele
if ($current_picture < sizeof($image_list)-1)
    $next_link = 'http://site/pilt.php?id=' . $image_list[$current_picture+1];

Ja ongi kogu moos. Lihtne ja loogiline :)





Comments



1
Author:  Fog | Date:  18.Aug 05 | Time:  14:55

ja kui albumis on 50000 pilti siis saad ka iga kord fetcida seda id’d sealt ;)

id kui selline mille urlilt saad võib olla juba sorteeritud query offset, seega on sul vaja teada tegelikult vaid seda mitu pilti sul albumis on. Kui see number updateda veel omakorda albumi tabelisse, siis pole isegi count()’i vaja, aga oletame et ei update. :)
1. $count = “select count(id) from pildid_albumis where albumi_id=4;”
2. number_ranged id (sec!) 1 ja $coundi vahele.
3. joonistad pildi() “select * from pildid_albumis where albumi_id=4 order by id asc offset 33 limit 1;”
4. joonistad eelmise lingi vastavalt sellele kas pildi nummer on 1 või mitte.
5. joonistad järgmise lingi vastavalt sellele kas id == count või mitte

voila

2
Author:  Fog | Date:  18.Aug 05 | Time:  21:48

Eelmisele jätkuks siis andmebaasi teemat natuke.
Nimelt andmebaasis kus kirjete lisamisi on 100 korda vähem kui sealt küsimisi tuleb andmeid hoida “küsijale” meelepärases vormis. See kas lisamisel tehakse 1, 2 või 5 päringut ei oma seal tähtsust.

Ilmselt on sul see küsimus seoses masendav.com’is oleva teemaga, seega soovitan soojalt kasutada piltide tabelis ka order_nr veergu, mis annab kasutajale eelise pilte edasi-tagasi liigutada ning ka browsimise teeb turvaliseks ning lihtsaks, kuna urlil on vaid pildi ja albumi järjekorranumber.

Vana müskel ja ka postgres ei oska limiteid ja offsette korralikult, s.t. seesmiselt joonistatakse ikkagi kogu tulemuse grid välja, ning alles siis antakse pärijale osa neist. Seega “offset 33 limit 1″ on sama kallis(ressursi mõttes) kui “select id”.

3
Author:  site admin | Date:  19.Aug 05 | Time:  00:22

Jah, nii ta paraku on - ega see minu pakutud lahendus väga kaugele ei skaleeru küll.



Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>