Ïîëîâèíà âòîðîãî íî÷è, íåñêîëüêî äíåé íåäîñûïà... È âäðóã
îçàðåíèå - íàêîíåö-òî ÿ ïîíÿë, êàêîé-òàêîé ñóïåð-ïóïåð ñêðèïò ìíå
íóæåí äëÿ ðàñêðóòêè ìîåãî íîâîãî ñàéòà. Ñêàçàíî - ñäåëàíî, ñàæóñü...
íåò íå ïèñàòü ýòîò ñóïåð-ïóïåð ñêðèïò :) Ïðîãðàììèñòû íàðîä ëåíèâûé,
ñïåöû ïî ðàñêðóòêå òåì áîëåå (îòñþäà è áàííåðîîáìåííûå ñåòè,
àâòîðåãèñòðàòîðû â êàòàëîãàõ è ïð. ëåíòÿéñêèå øòó÷êè).  îáùåì ëåçó
íà Google è íà÷èíàþ ìåòîäè÷íî îáøàðèâàòü Ðóíåò â ïîèñêàõ òðåáóåìîãî.
Ïðîõîäèò ÷àñ, äâà...  äóøó çàêðàäûâàþòñÿ ñìóòíûå ïîäîçðåíèÿ, ïëàâíî
ïåðåðàñòàþùèå â óâåðåííîñòü, ÷òî òðåáóåìûé ìíå ñêðèïò â ïðèðîäå ëèáî
íå ñóùåñòâóåò, ëèáî ñïðÿòàí íà ÷üåì-òî çàïîâåäíîì ëîêàëõîñòå ñ
ïðàâàìè äîñòóïà 000.
Ðàçáèâàþ ñòîÿùóþ ïåðåä ñêðèïòîì çàäà÷ó íà íåñêîëüêî ñîñòàâíûõ è
ìèíóò çà 15 ïèøó ðåàëèçàöèþ áîëüøèíñòâà åãî (ñêðèïòà) ôóíêöèé :)
Ðàäîñòíî áåðóñü çà ñëåäóþùóþ ôè÷ó... Â îáùåì, íåîáõîäèìî âñåãî-òî
íàâñåãî îáåñïå÷èòü ïîñòðàíè÷íûé âûâîä êîíòåíòà. Òî åñòü, íàïðèìåð,
èìååòñÿ 60 ñòàòåé è íóæíî ýòè ñòàòüè âûâîäèòü ïî 10 íà ñòðàíèöó è
ïîñòðîèòü ìåíþ äëÿ îíîãî âûâîäà â âèäå "1 2 3 ..."
×åòûðå óòðà, îêðîìÿ çàâåòíîãî "LIMIT" â ãîëîâó íè÷åãî íå
ïðèõîäèò. È äåëî äàæå íå â òîì, ÷òî ÁÄ ê ìîåìó ñêðèïòó íèêàêîãî
îòíîøåíèÿ íå èìååò. Ñ ãîðå÷üþ ïîíèìàþ, ÷òî êâàëèôèêàöèÿ ïîòåðÿíà,
ëó÷øèå ãîäû æèçíè ïðîæèòû âïóñòóþ è... èäó íà Google ;)
Ïîñëå...
â îáùåì óæå íàñòóïèë ðàññâåò. Ê ýòîìó âðåìåíè ÿ ïîçíàêîìèëñÿ ñ êó÷åé
ëèòåðàòóðû ïî äàííîìó âîïðîñó, íî âåçäå ñèòóàöèÿ òàê èëè èíà÷å
ðàññìàòðèâàëàñü â êîíòåêñòå ðàáîòû ñ SQL, ëèáî ÿ ïîñòîÿííî
íàòàëêèâàëñÿ íà êàêóþ-òî ðàñòèðàæèðîâàííî-çàóìíóþ ñòàòüþ ïðî
"îòäåëåíèå àëãîðèòìà ïîñòðàíè÷íîãî âûâîäà îò êîíòåêñòà
èëè-÷òî-òî-â-ýòîì-ðîäå" (ÈÌÕÎ, íèæåïðèâåäåííûå 7 ñòðî÷åê êîäà ýòó
ïðîáëåìó ðåøàþò) â êîòîðîé íè÷åãîøåíüêè íå ïîíÿë... :( È âîò êîãäà ÿ
óæå îò÷àÿëñÿ è ðåøèë ÷òî óòðî âå÷åðà ìóäðåíåå, íà êàêîì-òî äðåìó÷åì,
çàðîñøèì ìõîì ôîðóìå (àäðåñ ê ñîæàëåíèþ êàíóë â Ëåòó - ïî êðàéíåé
ìåðå ó ìåíÿ åãî íåò), íàòêíóëñÿ íà ïåðåïèñêó íåêîåãî âå÷íî
èçâèíÿþøåãîñÿ Ïðîãðàììåðà è áåçóìíîãî è çëîáíîãî Ìîäåðàòîðà - òåìà
ïåðåïèñêè áûëà ïîñâÿùåíà èìåííî ïîñòðîåíèþ ìåíþ äëÿ ïîñòðàíè÷íîãî
âûâîäà. È ýòî áûëî èìåííî òî ÷òî íóæíî!
 îáùåì, íèæå ïî òåêñòó ÿ èñïðàâëÿþ íåñïðàâåäëèâîñòü: òåïåðü â
Èíòåðíåòå åñòü ñòàòüÿ î òîì, êàê îáåñïå÷èòü ïîñòðîåíèå ìåíþ äëÿ
ïîñòðàíè÷íîãî âûâîäà! Ïðîñòîé ðàáî÷èé êîä íà PHP, ñ ïîäðîáíûìè
êîììåíòàðèÿìè. Íèêàêîé èçëèøíåé ôóíêöèîíàëüíîñòè òèïà ññûëîê "next
page". Ñäåëàíî ñèå íàìåðåííî - íè ðàçó â æèçíè íå íàæèìàë íà "next"
åñëè ìîæíî áûëî íàæàòü íà íîìåð ñòðàíèöû - à äàííàÿ ñòàòüÿ íàïèñàíà
ñ öåëüþ äàòü âîçìîæíîñòü ïîíÿòü îñíîâíîé ïðèíöèï, ò.å. ÷åì ìåíüøå
êîäà, òåì ëó÷øå (õîòÿ êíîïêà "next" è äîáàâëÿåòñÿ òðåìÿ ñòðîêàìè
êîäà).
Ñîãëàøåíèÿ î êîììåíòàðèÿõ ê êîäó:
- "Ñòàòüÿ" - ýòî íåêèé öåëîñòíûé áëîê äàííûõ (íå îáÿçàòåëüíî
òåêñòîâûõ) êîòîðûé è âûâîäèòñÿ ïî íåñêîëüêî øòóê íà ñòðàíèöó (ýòî
ìîãóò áûòü ñòàòüè, íîâîñòè, êàðòèíêè è ïð.)
- "Ñòðàíèöà" - ýòî ñòðàíèöà :) íà êîòîðîé ðàñïîëîæåíî íåêîòîðîå
êîëè÷åñòâî "ñòàòåé".
<?
$total_articles_number = 79; //îáùåå êîëè÷åñòâî ñòàòåé
$articles_per_page=10; // êîëè÷åñòâî ñòàòåé íà ñòðàíèöå
//ïîëó÷àåì êîëè÷åñòâî ñòðàíèö
$total_pages = ceil($total_articles_number/$articles_per_page);
// çàïóñêàåì öèêë - êîëè÷åñòâî èòåðàöèé ðàâíî êîëè÷åñòâó ñòðàíèö
for ($i=0; $i<$total_pages; $i++){
// ïîëó÷àåì çíà÷åíèå $from (êàê $page_number) äëÿ èñïîëüçîâàíèÿ â ôîðìèðîâàíèè ññûëêè
$page_number=$i*$articles_per_page;
// åñëè $page_number (ôàêòè÷åñêè ýòî ïðîâåðêà òîãî ÿâëÿåòñÿ ëè $from òåêóùèì) íå ñîîòâåòñòâóåò òåêóùåé ñòðàíèöå,
// âûâîäèì ññûëêó íà ñòðàíèöó ñî çíà÷åíèåì $from ðàâíûì $page_number
if ($page_number!=$from) echo "<a href='".$PHP_SELF."?from=".$page_number."'> ".($i+1)." </a>";
// èíà÷å ïðîñòî âûâîäèì íîìåð ñòðàíèöû - äàííàÿ ñòðîêà íåîáÿçàòåëüíà,
// ïðîïóñòèâ åå âû ïðîñòî ïîëó÷èòå ëèíê íà òåêóùóþ ñòðàíèöó
else echo $i+1; // åñëè page_number - òåêóùàÿ ñòðàíèöà - íè÷åãî íå âûâîäèì (ññûëêó íå äåëàåì)
}
?>
Òàêèì îáðàçîì, íà ýêðàíå áðàóçåðà ìû ïîëó÷èëè ÷òî-òî âðîäå "1
2
3 4 5 6 7 8", ïðè ýòîì URL (íà ìîåì êîìïüþòåðå,
ïðè âûáðàííîé òðåòüåé "ñòðàíèöå") âûãëÿäèò òàê:
https://localhost/ep/ep.php?from=20. Îáðàòèòå
âíèìàíèå, íà òî, ÷òî ñòðàíèöå ïîä íîìåðîì "3" ñîîòâåòñòâóåò çíà÷åíèå
from=20 òî åñòü îòñ÷åò âûâîäèìûõ ñòàòåé áóäåò
âåñòèñü â äàííîì ñëó÷àå ñ 20-é.
Âîîáùå, êàê âû óæå ïîíÿëè, ïåðåìåííàÿ $from èãðàåò çäåñü êëþ÷åâóþ
ðîëü. Îíà ó÷àñòâóåò â ïîñòðîåíèè ññûëîê íà êàæäóþ îòäåëüíóþ ñòðàíèöó
(åñëè, êîíå÷íî, ìîæíî òàê âûðàçèòüñÿ :), è ñàìîå ãëàâíîå - äàåò íàì
òî÷êó îòñ÷åòà äëÿ âûâîäà ñòàòåé. Íàïðèìåð (è íàâåðíÿêà âû ñäåëàåòå
èìåííî òàê) óêàçàòåëè íà ñòàòüè (èëè ñàìè ñòàòüè ;) ìîæíî ïîìåñòèòü
â ìàññèâ, ñ ïîñëåäóþùåé âûáîðêîé è âûâîäîì â áðàóçåð ïî 10 ñòàòåé,
íà÷èíàÿ îò çíà÷åíèÿ $from.
Òî åñòü åùå ðàç èíûìè ñëîâàìè: âåñü îãîðîä ñîáñòâåííî è ãîðîäèëñÿ
ðàäè òîãî, ÷òîáû äàòü ñêðèïòó äàííûå îòíîñèòåëüíî òîãî íà êàêîé
"ñòðàíèöå" ñåé÷àñ íàõîäèòñÿ ïîñåòèòåëü è íà÷èíàÿ ñ êàêîãî íîìåðà
"ñòàòüè" ñëåäóåò âûâåñòè çàäàííîå êîëè÷åñòâî ýòèõ ñòàòåé íà ñòðàíèöó
- à ýòî è åñòü çíà÷åíèå ïåðåìåííîé $from. Ò.å. ïðè $from=20
âûâåäóòñÿ ñòðàíèöû ñ 21 ïî 30 (ýòî òàêæå çàâèñèò îò ðåàëèçàöèè
âûâîäà è çíà÷åíèÿ ïåðåìåííîé $articles_per_page)
Âîò è âñå - ïðåäèñëîâèå äëèííåå ÷åì êîä :) À â Æèçíè âñåãäà òàê -
ïðåëþäèÿ ãîðàçäî äëèííåå ÷åì ôèíàë ;)
Äóõàíèí Ðîìàí as RWinner winner@2winners.com
RWinner® âñå ïðàâà ñîõðàíåíû© Äîïóñêàåòñÿ ñâîáîäíîå
êîïèðîâàíèå è ïóáëèêàöèÿ äàííîé ñòàòüè ïðè óñëîâèè îòñóòñòâèÿ êóïþð
è ñ ñîõðàíåíèåì ñòðóêòóðû ãèïåðññûëîê. À åñëè ïî ïðîñòîìó, òî ïðè
ïåðåïå÷àòêå ëèíêè íà ìîè ñàéòû ââåðõó ñòðàíèöû ÍÅ ÂÛÐÅÇÀÒÜ è ÍÅ
ÏÅÐÅÌÅÙÀÒÜ âíèç ïî òåêñòó (íàïðèìåð â footer). Äàííûé êîïèðàéò,
òàêæå, íåîáõîäèìî îñòàâèòü