Pereiti prie turinio

PHP MYSQL teksto puslapiavimas


Rekomenduojami pranešimai

Tam reikalui naudojamas page break kazkoks tai simboliu gabalas pvz "#PAGE_BREAK#" paciam tekste ... tuomet scripte suskaldai teksta i gabalus priklausomai kiek yra tu "#PAGE_BREAK#" su explode parinkdamas ta teksto gabala nuo to koks perduotas url per $_GET parametra arba per segmentus jei frameworkas. Tada nuo turimo urlo nustatai kelinta teksto gabala skaityt ir atvaizduot, jeigu tokio gabalo nera pvz.: (url: ?page_text=5 , o teksto gabalu tik 4 kurie atskirti per #PAGE_BREAK#), redirektini i pagrindini teksto gabalo puslapi. Beje dauguma web teksto editoriu turi toki mygtuka, tik jie iterpia skirtingas simboliu sekas pvz:. (#BREAK# ## ir pan.)

Kitas variantas, jeigu nori automatikos, tai pagal simboliu skaiciu,sakiniu skaiciu,paragrafu skaiciu galima skaldyt dideli teksta i gabalus.

Ar taip supratau?

Redagavo kaunomanas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tam reikalui naudojamas page break kazkoks tai simboliu gabalas pvz "#PAGE_BREAK#" paciam tekste ... tuomet scripte suskaldai teksta i gabalus priklausomai kiek yra tu "#PAGE_BREAK#" su explode parinkdamas ta teksto gabala nuo to koks perduotas url per $_GET parametra arba per segmentus jei frameworkas. Tada nuo turimo urlo nustatai kelinta teksto gabala skaityt ir atvaizduot, jeigu tokio gabalo nera pvz.: (url: ?page_text=5 , o teksto gabalu tik 4 kurie atskirti per #PAGE_BREAK#), redirektini i pagrindini teksto gabalo puslapi. Beje dauguma web teksto editoriu turi toki mygtuka, tik jie iterpia skirtingas simboliu sekas pvz:. (#BREAK# ## ir pan.)

Kitas variantas, jeigu nori automatikos, tai pagal simboliu skaiciu,sakiniu skaiciu,paragrafu skaiciu galima skaldyt dideli teksta i gabalus.

Ar taip supratau?

Supratai tu taip aš irgi teoriškai išmastau praktiškai neišmastau kaip padaryti ar su wordwrap ar su kuo iš tekstinio failo moku iš mysql nemoku už tai iš prašiau pavyzdžių

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Supratai tu taip aš irgi teoriškai išmastau praktiškai neišmastau kaip padaryti ar su wordwrap ar su kuo iš tekstinio failo moku iš mysql nemoku už tai iš prašiau pavyzdžių

Viskas labai paprasta (vienas budas):

  • Idedi i teksta puslapiavimo zymekli pvz.: '||'
  • naudoji GET tipo url (?n=m) tam, kad sekti kuris puslapis
  • naudoji explode su '||' zymekliu ir isspausdini ta dali, kuri nurodyta GET
  • nepamirsti ideti patikru atvejams kai GET>explode, nera get, GET blogas value

Kaskas panasaus i:

$tekstas = "a||b||c";//is mysql istrauktas turinys
$zymeklis = '||';
$puslapiai = explode($zymeklis, $tekstas);
$puslapis = $_GET['p'];
$turinys = '';
if(is_int($puslapis) && $puslapis < count($puslapiai)){
 $turinys = $puslapiai[$puslapis];
}else{
 $turinys = $puslapiai[0];
}

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

deja nei vienas patarimas jūsų nepadėjo susiprogramuoti puslapiavimo irgi neišėjo tiek to ačiū ir už tiek

Daviau beveik veikianti koda, jeigu neiseina jo prisitaikyt sau, vadinasi laikas skirti laiko pasomokyt programavimo, nes tavo problemai isspresti reikia apie 20min (jeigu darant, kad graziai atrodytu su substr)

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atrodo problemą pavyko išspręsti. Pasidalinsiu kodu gal kam pravers

$tekstas = "$turinys";


$masyvas= explode('||', $tekstas);


$dabartinis = trim($_REQUEST[psl]);


$puslapyje = 1;
$isviso = ceil(count($masyvas) / $puslapyje);
if(!$dabartinis || $dabartinis > $isviso)
         $dabartinis = 0;

$pradzia = $dabartinis * $puslapyje;
$pabaiga = ($dabartinis * $puslapyje) + $puslapyje;
$pabaiga2 = ($dabartinis * $puslapyje) - $puslapyje;

foreach($masyvas AS $raktas => $val)
{
         if($raktas >= $pradzia && $raktas < $pabaiga)
                   $duomenys[] = $masyvas[$raktas];
}
foreach($duomenys AS $isvedimas)
         echo $isvedimas. "
";


echo "<br/><br/><center>";
	if($dabartinis > 0 && $dabartinis < $isviso)
         echo "<a href=\"index.php?psl=$pabaiga2\"><font size=\"3\"><b>« Buvęs puslapis</b></font></a><br/>
";

if($isviso > $dabartinis && ($dabartinis + 1) < $isviso)
         echo "<a href=\"index.php?psl=$pabaiga\"><font size=\"3\"><b>Kitas puslapis »</b></font></a><br/>
";	
echo "</center><br/><br/>";

Nuoroda į pranešimą
Dalintis kituose puslapiuose

$tekstas = "a||b||c";//is mysql istrauktas turinys
$zymeklis = '||';
$puslapiai = explode($zymeklis, $tekstas);
$puslapis = $_GET['p'];
$turinys = '';
if(is_int($puslapis) && $puslapis < count($puslapiai)){
 $turinys = $puslapiai[$puslapis];
}else{
 $turinys = $puslapiai[0];
}

 

Siaip tik pastebejimas, kad is $puslapis reik atimt 1 :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Apskritai sprendimą su teksto skirtukais vertinčiau skeptiškai. Dabar įsivaizduok, kad turi projektą, samdaisi naujus redaktorius. Tai ką, visiems sakysi, kad turi dėti stebuklingą skirtuką '||', nes taip veikia puslapiavimas pas tave? Na įdomi asociacija iš tiesų. Tačiau, kas jeigu tekste tau reikės būtent tokius du simbolius panaudoti? Na tokiu atveju gali naudoti kitą skirtuką - pvz '{SUPER_PAGE_BREAK_ABCDEFG12345}'. Ir tokio simbolių rinkinio tekste atsiradimo tikimybė bus beveik nulinė, tačiau vis tiek įmanoma. Ir jeigu yra geresnis būdas tą padaryti, kodėl nepadarius to būdo? Matai, explode() funkcija, jeigu ją naudosi, vis vien eis per visą string'ą, kad surastų tavo norimą skirtuką, todėl jau algoritmiškai gali naudoti ir kitus tiesinius algoritmus, kurie tekstą išskaidytų į puslapius. Pavyzdžiui, kas geram tekstui būdinga? Taigi pastraipos, ar ne? Paprastai gero teksto pastraipa neturėtų užimti labai daug žodžių (na daugiausia 300, manau).

 

Tai tokiu atveju gali dėti kad ir ribą, jog va kažkoks skaičius N žodžių bus riba, ties kuria bus orientuojamas vienas puslapis. Tai pavyzdžiui, jeigu turi tekstą iš 20000 žodžių ir nusprendi, kad štai 2000 žodžių bus viename puslapyje, tai taip gali padaryti, kad viename puslapyje bus 1900 žodžių, kitame - 2100. Bet na tikrai nebus taip, jog viename kokie 500, o kitame - 3500, jeigu tik pastraipos bus apytiksliai panašios pagal savo apimtį (o kai daug pastraipų būna, panašiai ir būna). Tie šimto žodžių skirtumai vizualiai skaitytojui bus nepastebimi. O va pačiai sistemai nauda tokia bus, kad iš esmės toks būdas nepriklausomas nuo kažkokio specialaus formato. Dabar tie skirtukai išeina kaip naujos formatavimo kalbos kūrimas. Bet kam to reikia, jeigu galima išsiversti ir be to nesunkiai? Juo labiau, jeigu ateityje prireiks importuoti kokius MS Word tekstus, tada norimo formato tikrai negali tikėtis. O štai skaidyti pagal pastraipas iš esmės gali bet kokios kalbos tekstą, nes paprastai visi žmonės rašo pastraipomis tekstus. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Apskritai sprendimą su teksto skirtukais vertinčiau skeptiškai...

:D :D Kam tu tiek laiko pragaisai aiskinant tai kas ir taip akivaizdu yra kvaila, juk ne nauja data exchange format kuriam? Su skirtukais pavyzdys buvo duotas tam, kad OP gautu ideja kaip butu galima puslapiavima padaryti paciu paprastciausiu budu (explode ant zenklo), taciau ta skirtuka galima pakeisti i zodziu skaiciu, pastraipu ar tu paciu raidziu skaiciu, cia jau kaip sauna i galva taip galima ji isskaidyt. Pavyzdzio pagrindine mintis, kad GET tureti puslapi ir tada atitinkama dali teksto rodyti.

 

Kas liecia pati teksto skaidyma, tai linijiniu metodu neapsimoka naudoti. Kadangi php string'ai yra paprastciausi char array, galima skaidyma pastraipomis, apytiksliu zodziu skaiciumi ar apytiksliu sakyniu skaiciumi keliasdesimt kartu greiciau atlikti nei linijinis metodas tai atliktu, tereikia but sumaniam.

 

o nenori kažko paprasčiau pasidaryti? :) čia toks lempinis pavyzdys, bet esmę pagausi

http://www.script-tutorials.com/how-to-create-easy-pagination-with-jquery/

 

O kas nutiks, jeigu i svetaine koks apple myletojas uzsuks - juk vargsui irenginys uzkibs nuo per dideles apkrovos :D. Na o jeigu rimciau, tai asmeniskai pries tokio tipo pagination (pre-loaded content) ypac jeigu daznai buna daugiau negu 2 puslapiai teksto. Kas liecia toki mano nusistatyma - tai keliatas neigiamybiu (apie kurias tingiu diskutuoti), kurios mano manymu nusveria teigiamas puses.

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...