Prenumeruok RSS

Straipsniai sukurti 2005.05

Kur bus įrašas po tam tikro MySql rikiavimo

Įsivaizduokime įprastą situaciją. Ya kažkoks sąrašas pateiktas svetainėje. Jei jis bus nedidelis, jį galima paprastai atvaizduoti. Jei sąrašas gali ilgėti vadinasi prireiks puslapiavimo kurį galima lengvai padaryti.

Tarkim seniau buvo tarkim prekių kainų sąrašas nepuslapiuotas. Jis patogus buvo dėlto, kad iš prekės aprašymo galima lengvai nušokti į to sąrašo tam tikrą vietą. Galima ir pasinaudoti anhoru:

 <a href=”su:su:/linkas.php#preke12″>šok čia</a>

Galima ne tik nušokti, bet ir pažymėti :)

<a href=”su:su:/linkas.php?zymek=12#preke12″>šok čia</a>

Viskas gražu ir t.t. Didėjant kiekiui neaoptimalu viską pateikti vienoje vietoje, tikrai naudinga ir puslapiuoti. Va ir iškilo klausimas: Turiu sąlygas kaip atrenkamas sąrašas, žinau rikiavimo sąlygas, o kaip sužinoti kur bus pagal tuos parametrus įrašas kurio id=12. Jis gali būti ir pradžioje ir gale. Taigi va ir kankinausi ieškodamas sprendimo. Taigi sužinojus vietą (eiliškumą) galima lengvai surasti ir puslapį kuriame bus. O kaip tai praktiškai įgyvendinti?

Vienas variantas. Tempiam į PHP visą lentelę, ir ieškom (sukam ciklą) kur tas įrašas bus. Žinoma surasim, gal ir patogu, bet!. Dideliam kiekiui duomenų reiks viską tempti, tai vadinasi ilgiau užtruks, be to duomenys parsiųsti bus talpinami į RAM, taigi didėjant duomenų kiekiui bei lankytojų kiekiui gali atsirasti situacija “Ramo trūksta”. Tad vadinasi sprendimas blogas.

Gal yra galimybė tai atlikti kažkaip kitaip? Logiškiausia paduoti gudrią užklausą ir taip sužinojus vietą, jau tempti tik duos duomenis kurie reikalingi. Paeksperimentavęs radau vieną iš galimų sprendimų:


set @a:=0;<br />select @a as nr, r.id from&nbsp;LENTELE as r<br />where @a:=IF((r.id=19),(@a+1),(@a+1)) having r.id=19 order by id

Kodėl tokia įdomi sąlyga @a:=IF((r.id=19),(@a+1),(@a+1))  nežinau net pats, realiai reikia @a+1 tiktai, o be IF neveikia :(

Ką gi gavu numeriuką reikiamą, viskas gražu, na beveik gražu. Truputį lėtoks sprendimas, net nežinau ar jis tinkamas ant didelių lentelių.  va norėtusi kažkokio optimalesnio varianto.

Gal kokių idėjų pasiūlytumėte?

2005-05-16 papildymas:

Šiektie pasikapstęs ir pan gavau ir tokį sprendimą

set @i=0;
CREATE TEMPORARY TABLE `findrownumber` Select (@i:=@i+1) as rownumber, `id`, `title` FROM table where `active`=1 order by `title` asc;
SELECT * FROM `findrownumber` WHERE `id` = 23

Ant kiek jis geras spręskite patys :)

Remote programming

Video transliaciją visos konferencijos galima pažiūrėti:


 http://distance.ktu.lt/vips/session-records.php?id=175 (Reikalingas IE, kad matyti dar is skaidres)

Arba galima pažiūrėti tik video be skaidrių:


  • mms://video.liedm.lt/irasai/vips/175/1751.wmv – PHP sesijos
  • mms://video.liedm.lt/irasai/vips/175/1752.wmv – Paprasčiausias PHP framework´as
  • mms://video.liedm.lt/irasai/vips/175/1753.wmv – Hierarchinės duomenų struktūros reliacinėse duomenų bazėse
  • mms://video.liedm.lt/irasai/vips/175/1754.wmv – Remote programming

Kam reikia mano skaidrės maloniai prašom žiūrėti parsisiuntus.

Naudingi linkai, kurie padės pasinaudoti šia technologija:

Na tiesa pasakius ne per stipriausiai pasiruošiau temai, organizatoriai biški lėtai viską organizavo :(, Ir laiko buvo minimumas. O be to skaudančia galva teko pasakoti, tad sorry už kokybė (tiesa negėriau).

PHP konferencija KTU festivalyje

Rengiama PHP konferencija, skirta visiems ja besidomintiems. Pernai ši konferencija susilaukė nemažo susidomėjimo, todėl šiemet ji organizuojama antą kartą.

Pilna auditorija dalyvių, puikūs vedėjai, ir įdomios temos pritraukė daug programavimo kalba besidominčių internetinių tinklapių fanų ir tik pradedančių, kurię nori išmokti šios plačiai paplitusios programavimo kalbos

Diskusija php.lt

http://www.festivalis.lt/lt/programa/it_konferencija/

http://www.infosa.lt/infoshow/index.php?PageID=62

Beje bus įmanoma stebėti viską internetu :)

> home
  • Apie mane
  • Apklausos
  • Blogas
  • Lietblogs Search
  • Nuorodos
  • Reklama mano bloge
  • Search
  • Tags
  • Testas
  • Projektai
  • Kontaktuok
  • Archyvas