Yangi formatda davom etish uchun: https://uzfor.net/view.php?act=post&id=42386
Postga havola
MrAnonim [143] [off]
JohnCMS 4-Darslik, muallif ashi alish akamiz))
JohnCMS #4darslik (+/-)
Yana bir bor barchaga salom! Mavzuni o'qib hayron bo'lgandirsiz? Bugun php faylni qismlarga bo'lib, har bir qism uchun alohida ish biriktirishni o'rganamiz. Tushuntira oldimmi? Balki ayrom fayllarda index.php?act=*** kabi yozuvlarni ko'rgandirsiz? Bugun biz ham shu ?actni hosil qilishni o'rganamiz. Boshlang'ich ko'nikma uchun menimcha buni ham o'rganish zarur. Demak boshladik.
Avvalo bu ?actlarga bo'lish nega kerak? Bu birgina php faylni o'zida ko'plab amallarni bajarishga, ko'plab bo'limlarga bo'lishga yordam beradi. Qolganini esa keyin bilib olasizlar))
kelinglar, php fayl yaratamiz: tajriba.php
<?php
define('_IN_JOHNCMS', 1);
require('../incfiles/core.php');
require('../incfiles/head.php');
Demak, sahifaga yadro va "shapka"ni yuklab oldik. Bo'limlarga bo'lishda biz switch kodidan foydalanamiz. Bundan keyin esa, qavs ichida switchni nomlaymiz, masalan act yoki o'zizngiz istagan, masalan ali shunda bo'limlar ham tajriba.php?ali=*** bo'lib chiqadi:
switch ($act) {
}
demak, barcha bo'limlar va ularning amallari shu { } belgilari orasiga yoziladi, bulardan tashqarida yozilganlari esa barcha bo'limlarga umumiy ta'sir qiladi. Bo'limlarni chegaralash esa quyidagicha:
case 'bolimnomi':
break;
shu bo'limga yozilishi kerak bo'lgan kodlar, amallar shu oraliqqa yoziladi. Bundan tashqari yana biri ham bor:
default:
break;
default bu tajriba.php qilib kirilganda ochiladigan amallar yoki kodlardir, defaultni ochish uchun ?act=defaultni yozish shart emas. Chunki bu bo'lim sahifa uchun default hisoblanadi. Kelinglar, sinab ko'ramiz:
switch ($act) {
default:
echo '<div class="menu">Salom! Kerakli bo\'limga o\'ting!<br /><a href="tajriba.php?act=bolim1">1-bo\'lim</a><br /><a href="tajriba.php?act=bolim2">2-bo\'lim</a><br /><a href="tajriba.php?act=bolim3">3-bo\'lim</a></div>';
break;
case 'bolim1':
echo '<div class="menu">Salom, buyer 1-bo\'lim!</div>';
break;
case 'bolim2':
echo '<div class="menu">Salom, buyer 2-bo\'lim!</div>';
break;
case 'bolim3':
echo '<div class="menu">Salom, buyer 3-bo\'lim!</div>';
break;
}
Demak, tushunchaga ega bo'lib oldingiz deb o'ylayman. Endi umumiy ta'sir qiladigan kodlar yozib ko'ramiz, yani switchdan oldin yoziladigan kodlar. Masalan aytaylik, bu sahifaga mehmonlarni, ya'ni sayt foydalanuvchisi bo'lmaganlarni kiritishga ta'qiq qo'yamiz. Switchning har bir bo'limi uchun alohida ta'qiq qo'yish albatta noqulaylik qiladi(lekin agar ayrim bo'limlarga mehmonlar uchun ruhsat bermoqchi bo'lsez har bir bo'lim uchun alohida yozasiz). Demak, switchni tepasiga yozamiz:
if (!$user_id) {
echo functions::display_error($lng['access_guest_forbidden']);
require('../incfiles/end.php');
exit();
}
Shu bilan sahifani mehmonlar ochganida xatolik e'lon qilinib, sahifa yopiladi. Shartlarni o'zgartirishni esa 1-darsdan bilsangiz kerak deb o'ylayman. Kelinglar endi bo'limlarni alohida faylga o'rnatishni o'rganamiz. Bunda biz quyidagicha yo'l tutamiz:
$array = array(
'bolim1',
'bolim2',
'bolim3'
);
if ($act && ($key = array_search($act, $array)) !== false && file_exists('includes/' . $array[$key] . '.php')) {
require('includes/' . $array[$key] . '.php');
}
Bu holatda agar ?act=bolim1 qilib kirilsa u holda server brauzerga includes/ papkasi ichidagi bolim1.php faylini uzatadi. Bunda biz bolim1.php fayliga yadro, shapka kodlarini yozishimiz shart bo'lmaydi, barcha umumiy ta'sir doirasidagi kodlar tajriba.php fayliga yozilishi yetarli. Buni qulay tomoni: switchni ichiga kirovchi fayllarni yana switchlarga bo'lish mumkin. Masalan includes/bolim1.php fayliga:
switch ($mod) {
default:
echo '<div class="menu">Salom! Kerakli kategoriyaga o\'ting!<br /><a href="tajriba.php?act=bolim1&mod=cat1">1-kategoriya</a><br /><a href="tajriba.php?act=bolim1&mod=cat2">2-kategoriya</a><br /><a href="tajriba.php?act=bolim1&mod=cat3">3-kategoriya</a></div>';
break;
case 'cat1':
echo '<div class="menu">Salom, buyer 1-kategoriya!</div>';
break;
case 'cat2':
echo '<div class="menu">Salom, buyer 2-kategoriya!</div>';
break;
case 'cat3':
echo '<div class="menu">Salom, buyer 3-kategoriya!</div>';
break;
}
bu holatda ?act=bolim1ning switchlariga ?mod emas, &mod= orqali boramiz. & yozilgani esa bu & belgisining shartli kodi. Url adres yozilayotganida albatta shartli kod orqali kiritilishi zarur (!).
Shu bilan bugungi darsni ham tamomlaymiz. O'rganganlaringiz asosida tajribalar o'tkazishda davom eting!
P/s: iltimos, ushbu qo'llanmani o'z saytingizga ko'chirishda manba sifatida saytimizga link keltirishni unutmang!!!
Avvalo bu ?actlarga bo'lish nega kerak? Bu birgina php faylni o'zida ko'plab amallarni bajarishga, ko'plab bo'limlarga bo'lishga yordam beradi. Qolganini esa keyin bilib olasizlar))
kelinglar, php fayl yaratamiz: tajriba.php
<?php
define('_IN_JOHNCMS', 1);
require('../incfiles/core.php');
require('../incfiles/head.php');
Demak, sahifaga yadro va "shapka"ni yuklab oldik. Bo'limlarga bo'lishda biz switch kodidan foydalanamiz. Bundan keyin esa, qavs ichida switchni nomlaymiz, masalan act yoki o'zizngiz istagan, masalan ali shunda bo'limlar ham tajriba.php?ali=*** bo'lib chiqadi:
switch ($act) {
}
demak, barcha bo'limlar va ularning amallari shu { } belgilari orasiga yoziladi, bulardan tashqarida yozilganlari esa barcha bo'limlarga umumiy ta'sir qiladi. Bo'limlarni chegaralash esa quyidagicha:
case 'bolimnomi':
break;
shu bo'limga yozilishi kerak bo'lgan kodlar, amallar shu oraliqqa yoziladi. Bundan tashqari yana biri ham bor:
default:
break;
default bu tajriba.php qilib kirilganda ochiladigan amallar yoki kodlardir, defaultni ochish uchun ?act=defaultni yozish shart emas. Chunki bu bo'lim sahifa uchun default hisoblanadi. Kelinglar, sinab ko'ramiz:
switch ($act) {
default:
echo '<div class="menu">Salom! Kerakli bo\'limga o\'ting!<br /><a href="tajriba.php?act=bolim1">1-bo\'lim</a><br /><a href="tajriba.php?act=bolim2">2-bo\'lim</a><br /><a href="tajriba.php?act=bolim3">3-bo\'lim</a></div>';
break;
case 'bolim1':
echo '<div class="menu">Salom, buyer 1-bo\'lim!</div>';
break;
case 'bolim2':
echo '<div class="menu">Salom, buyer 2-bo\'lim!</div>';
break;
case 'bolim3':
echo '<div class="menu">Salom, buyer 3-bo\'lim!</div>';
break;
}
Demak, tushunchaga ega bo'lib oldingiz deb o'ylayman. Endi umumiy ta'sir qiladigan kodlar yozib ko'ramiz, yani switchdan oldin yoziladigan kodlar. Masalan aytaylik, bu sahifaga mehmonlarni, ya'ni sayt foydalanuvchisi bo'lmaganlarni kiritishga ta'qiq qo'yamiz. Switchning har bir bo'limi uchun alohida ta'qiq qo'yish albatta noqulaylik qiladi(lekin agar ayrim bo'limlarga mehmonlar uchun ruhsat bermoqchi bo'lsez har bir bo'lim uchun alohida yozasiz). Demak, switchni tepasiga yozamiz:
if (!$user_id) {
echo functions::display_error($lng['access_guest_forbidden']);
require('../incfiles/end.php');
exit();
}
Shu bilan sahifani mehmonlar ochganida xatolik e'lon qilinib, sahifa yopiladi. Shartlarni o'zgartirishni esa 1-darsdan bilsangiz kerak deb o'ylayman. Kelinglar endi bo'limlarni alohida faylga o'rnatishni o'rganamiz. Bunda biz quyidagicha yo'l tutamiz:
$array = array(
'bolim1',
'bolim2',
'bolim3'
);
if ($act && ($key = array_search($act, $array)) !== false && file_exists('includes/' . $array[$key] . '.php')) {
require('includes/' . $array[$key] . '.php');
}
Bu holatda agar ?act=bolim1 qilib kirilsa u holda server brauzerga includes/ papkasi ichidagi bolim1.php faylini uzatadi. Bunda biz bolim1.php fayliga yadro, shapka kodlarini yozishimiz shart bo'lmaydi, barcha umumiy ta'sir doirasidagi kodlar tajriba.php fayliga yozilishi yetarli. Buni qulay tomoni: switchni ichiga kirovchi fayllarni yana switchlarga bo'lish mumkin. Masalan includes/bolim1.php fayliga:
switch ($mod) {
default:
echo '<div class="menu">Salom! Kerakli kategoriyaga o\'ting!<br /><a href="tajriba.php?act=bolim1&mod=cat1">1-kategoriya</a><br /><a href="tajriba.php?act=bolim1&mod=cat2">2-kategoriya</a><br /><a href="tajriba.php?act=bolim1&mod=cat3">3-kategoriya</a></div>';
break;
case 'cat1':
echo '<div class="menu">Salom, buyer 1-kategoriya!</div>';
break;
case 'cat2':
echo '<div class="menu">Salom, buyer 2-kategoriya!</div>';
break;
case 'cat3':
echo '<div class="menu">Salom, buyer 3-kategoriya!</div>';
break;
}
bu holatda ?act=bolim1ning switchlariga ?mod emas, &mod= orqali boramiz. & yozilgani esa bu & belgisining shartli kodi. Url adres yozilayotganida albatta shartli kod orqali kiritilishi zarur (!).
Shu bilan bugungi darsni ham tamomlaymiz. O'rganganlaringiz asosida tajribalar o'tkazishda davom eting!
P/s: iltimos, ushbu qo'llanmani o'z saytingizga ko'chirishda manba sifatida saytimizga link keltirishni unutmang!!!