Topic: Puslapiavimas, max rows rodymas ar pan.

Sveiki, iškilo šiokia tokia problema. Turiu tinklapį, su žaidimais, viskas veikia, ir reikėtų pasidaryti, kažką. šiame forume radau temą apie puslapiavimą tai dėkui tam žmogui:), ir galvoju gal galima padaryti taip, su LIMIT funkcija, kad pvz. padaryti input'ą įrašius tiek rodytų kiek buvo įrašyta? ar kažką pan... nes kaip daug žaidimų prisikraus index, faile tai bus ne-kas. Gal kas turit idėjų?


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

2 (edited by DY 2007-11-22 01:09:16)

Re: Puslapiavimas, max rows rodymas ar pan.

Ta prasme, kad duotų žmogui formą, kurioje jis galėtų įrašyti, kiek rezulatų rodyti, ir būtų rodoma tiek razultatų?

Tai reikia padaryti HTML formą, skirtą skaičiaus įrašymui. Ji priskirtų vartotojo įrašytąjį skaičių kažkokiam kintamajam (pvz. $skaicius ) ir perduotų per GET ar POST masyvą. Tada rašyti kreipimąsi į MySQL kur būtų po LIMIT vietoje skaičiaus nurodytas nustatytojo kintamojo pavadinimas (pvz. {$skaicius} ). Tokiu atveju bus parodyta tiek rezultatų, kokia yra to kintamojo reikšmė.

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Puslapiavimas, max rows rodymas ar pan.

Dažniausiai daroma taip, kad vartotojas pasirenka po kiek elementų jam puslapiuotų paieškos (ir ne tik) rezultatus.

Jeigu pas tave vartotojai yra prisiregistravę, tai gali tą reikšmę leisti vartotojui nurodyti prie nustatymų, ir ją visu naudoti, kur tik yra puslapiavimas.

Gera praktika yra leisti vartotojui pasirinkti tik iš kelių variantų, pvz.: 10, 30, 50, 100; o ne leisti įvesti reikšmę, kokią jis nori. Tokiu būdų galima lengviau apsisaugoti nuo visokių netiketumų (taip pat ir apriboti duomenų bazės lauką, kuriame saugoma reikšmė, tik iki nurodytų reikšmių) - paprasčiau validuoti. Taip pat leisti nieko nesuprantančiam vartotojui pasirinkti, kad jam puslapiuotų įrašus po 999999 yra nelogiška.

Jeigu vartotojai yra neprisiregistravę, tai prie kiekvienos paieškos formos galima leisti pasirinkti, po kiek įrašų puslapiuoti (aišku, kad tą pasirinkimą sesijos metu dėl patogumo verta atsiminti).

Taip pat norių pažymėti, kad jeigu paieškos rezultatų yra daug (labai daug, tarkim 10000 ar daugiau), tai reiškias vartotojas įvedė per daug plačią užklausą. LIMIT funkcija MySQL'e pradeda lėtai veikti, kada norima pasiekti tolimus įrašus, nes realiai MySQL'o viduje yra "prasukami" visi prieš tai einantys įrašai. Todėl tolimų puslapių reikia vengti, nes prada "stabdyti".