Mavzu: Johncmsni o‘rganamiz!
So'rov natijasi
O‘zgina bo‘lsada bilimga ega bo‘ldingizmi?
Xa (5)
Yo‘q (1)
1. MasterLeo (M) (527) [off] | TXT | 29| 9 Sep 2017, 23:32
Salom do‘stlar. Mana bugun xamma o‘rganaman deb ammo o‘rganaolmayapkan mukammal sodda cms "Johncms" ni o‘rganamiz.

P-S: Bu matnni men yozmaganman. Ammo juda foydali narsalar yozilgan. Men xam asosiy bilimlarni shundan olganman.

Mualliflik xuquqi buzulmagan!
Harry Ali ga rahmat.
[Arxivdan]

Barchangizga salomlar ko'pchilikni taklifiga binoan JohnCMS haqida (ha faqat JohnCMS haqida! Php yoki va hokazo haqida emas!!!) qo'llanma yozishga kirishdim)) Qo'limdan kelganicha bilganimni sizlar bilan o'rtoqlashishga harakat qilaman.


Demak, sizdan talab etiladigan narsalar bu: php va html bo'yicha ko'nikmaga ega bo'lishingiz zarur. Chunki bularni noldan boshlab tushuntirish qo'limdan kelmaydi)) Ingliz tili bo'yicha bilimingiz esa tezroq o'rganishingizga qo'l keladi. Demak, boshladik.


JohnCMS (CMS => Content Managing System) wap-dvijoklar ichida ko'pchilik uchun eng qulayi va eng soddalaridan biri hisoblanadi. Bunga o'zingiz ham amin bo'lasiz.

JohnCMSda ishlashda siz uning bazasidagi jadval (tablitsa) nomlari va undagi ustunlar nomlarini bilishingiz kerak, bilmasangiz, endi bilvolasiz))

Kelinglar, `users` jadvalidan boshlaymiz. MySQL (Structured Query Language) so'rovlarida jadval va undagi ustun nomlarini ikkala tomoniga ham ` belgisi qo'yiladi. `users` jadvalida quyidagi ustunlar mavjud (asosiylarini yozaman): `id` => Bunda foydalanuvchining ID raqamlari yozilib boriladi. `name` => foydalanuvchining "nikneym"i yoziladi. `name_lat` => foydalanuvchining logini. `password` => foydalanuvchu paroli. `rights` => foydalanuvchi mansabi. Oddiy userlarda `rights` 0 (nol)ga teng bo'ladi. O'sib borish tartibi esa quyidagicha:

0 => '',
1 => '(GMod)',
2 => '(CMod)',
3 => '(FMod)',
4 => '(DMod)',
5 => '(LMod)',
6 => '(Smd)',
7 => '(Adm)',
9 => '(SV!)'

Huddi shu tartibda foydalanuvchi mansabi belgilanadi. Agar `rights` 9ga teng bo'lsa, u foydalanuvchi (SV!) (supervayzor) hisoblanadi. Keyingi ustunlar: `imname` => Anketaga kiritiladigan ism. `sex` => jins, bu m (erkak) yoki zh (ayol) ko'rinishida bo'ladi. `komm` => Kommentlari soni, `postforum` => Forumdagi postlari soni, `postguest` => mexmonxonadagi postlari soni. Menimcha hozirchalikka ustunlar yetarli))

Foydalanuvchining o'zini malumotlaridan yuqoridagi ustunlardan birortasini aniqlash uchun $datauser[] ishlatiladi. Masalan userning (biz anketasiga kirib turgan user emas, aynan o'zimizning profil, tushunarli bo'lishi uchun BIZ deb yoziladi endi)) kirish huquqlarini aniqlashtirish uchun $datauser['rights'] yoki kommentlari soni $datauser['komm'] menimcha qolgani shundoq ham tushunarli. Lekin kodlarni hadeb qayta yozavermaslik uchun ayrim malumotlar yadroning o'zidayoq qisqartirilgan, ma'salan $datauser['rights']ni o'rniga $rightsni ishlatish mumkin. Lekin bu jadvaldagi barcha ustunlarga ham tegishli emas, ya'ni $id $komm $postforum kabi kodlar yozib ovora bo'lmang))

Kelinglar, endi bitta php sahifa yaratamiz va kichik tajriba qilamiz. Demak, sayt/papka/ ichiga tajriba.php faylini yaratdik:
<?php
1- qatorni albatta shunaqa boshlashni unutmang, aks holda server buni php sahifa emas deb hisoblab, sahifadagi buyruqlarni bajarmaydi!
define('_IN_JOHNCMS', 1);

Bu narsa konstant deyiladi, biz JohnCMSda ishlayotganimiz uchun ham buni yozib qo'yish kerak, aks holda yadro sizga ma'lumotlarni taqdim etmaydi.

require('../incfiles/core.php');

bu kod orqali sahifamizda yadroni talab (require) qilyapmiz.

require('../incfiles/head.php');

bu kod orqali esa, saytning "shapka"sini talab qilamiz. Shapkasiz sahifada ishlab bo'lmaydi, unutmang))

endi yangi bir kodni o'rganamiz: shart qo'yish. Ya'ni if (agar).

if ($rights == 9)
bu "agar BIZning kirish huquqlari 9 bo'lsa (yani SV bo'lsa) degan shartni qo'yadi.

if ($rights != 9)
Bunisi esa, agar 9 bo'lmasa degan shartni qo'yadi. Bunda 9dan tashqari 0-8 sonlarga amal qilinadi.

if ($rights > 0)
Agar kirish huquqlari noldan baland bo'lsa

if ($rights < 9)
Agar kirish huquqlari 9dan kichik bo'lsa. Hozircha shu oddiy shartlarni o'rganish ham yetadi.

Demak, tepadagi birorta o'zizga maqul shartdan foydalaning, yoki men tanlaganni tanlang))
if ($rights < 9) {
echo functions::display_error('Bu sahifa faqat supervayzorlar uchun!');
require('../incfiles/end.php);
exit;
}
Ijobiy (2): Ashurov, Z_e_V_e_R,
Raxmat aytdi (2): Ashurov, Tayotabek,
2. SUHROB (409) [off] | TXT | 29| 9 Sep 2017, 23:35
MasterLeo (9 Sep 2017, 23:32):
[i]Salom do‘stlar. Mana bugun xamma o‘rganaman deb ammo o‘rganaolmayapkan mukammal sodda cms "Johncms" ni o‘rganamiz.

P-S: Bu matnni men yozmaganma• • •
MasterLeo, mualif hary alini qayerdan topsam bo'ladi.
3. MasterLeo (M) (527) [off] | TXT | 29| 9 Sep 2017, 23:36
SUHROB (9 Sep 2017, 23:35):
MasterLeo, mualif hary alini qayerdan topsam bo'ladi.
SUHROB, bilmadim
4. MasterLeo (M) (527) [off] | TXT | 29| 9 Sep 2017, 23:36
Davomi
endi taxlil qilamiz: Agar kirish huquqlari 9dan past bo'lsa, "Bu sahihifa faqat supervayzorlar uchun!" degan xatolik ekranga kelib chiqadi (functions haqida keyinroq batafsil) va sahifaga saytning pastki qismi (end.php) chaqirilib, sahifa tugallanadi (exit). Shartdagi amal { va } belgilari orasida amal qiladi. Bu belgilar qo'yilmagan taqdirda esa, shartdan keyingi faqat bitta buyruq shartga tegishli deb hisoblanadi.

Yana davom etamiz: endi aks holda (else) buyrug'ini ishlatamiz. Bu buyruq qo'yilgan shartga teskari shartni yuklaydi. Agar kirish huquqlari 9 bo'lmasa xatolik kelib chiqsin, aks holsa, "hush kelibsiz!" degan yozuv chiqsin. Endi shuni sinab ko'ramiz. Oxirgi } belgisi yoniga qo'shimcha qilamiz:

} else {
echo '<div class="gmenu">Hush kelibsiz adminboy!</div>';
}

Ko'rib turganizdek, else ham { } belgilari orasiga buyruq kiritadi.

Endi sahifani tugallab qo'yamiz:

require('../incfiles/end.php');
?>

end.php faylida saytning eng pastki qismidagi onlayn userlar, banner, top-reyting hisoblagichlar, kopiraytlar mavjud bo'ladi. ?> buyrug'i esa php sahifaning yakunlanganini bildiradi. Shunday qilib, hozir tajriba.php faylimiz quyidagicha:

<?php

define
('_IN_JOHNCMS'1);

require(
'../incfiles/core.php');

require(
'../incfiles/head.php');

if (
$rights 9) {

echo 
functions::display_error('Bu sahifa faqat supervayzorlar uchun!');

require(
'../incfiles/end.php);

exit;

} else {

echo '
<div class="gmenu">Hush kelibsiz adminboy!</div>';

}

require('
../incfiles/end.php');

?>






Ushbu faylni saqlab, uni brauzerda ochib ko'ramiz va natijadan zavq olamiz

5. MasterLeo (M) (527) [off] | TXT | 29| 17 Sep 2017, 15:14
negadir xamma jim
6. Ashurov(2641) [off] | TXT | 29| 17 Sep 2017, 15:24
MasterLeo (17 Sep 2017, 15:14):
negadir xamma jim
MasterLeo, Davom eting o'qiyapmiz juda ham aniq yozilyapti :)
Raxmat aytdi (1): MasterLeo,
7. MasterLeo (M) (527) [off] | TXT | 29| 17 Sep 2017, 15:26
Endi sizlar bilan yana bir asosiy boshlang'ich ma'lumotlarni o'rganamiz. Bu: MySQL so'rovlari!

SQL => Structured Query Language (Tartiblangan So'rovlar Tili)ning biz uchun ahamiyati juda katta. Har bir xabar qoldirish, ma'lumotni taxrirlash, yoki mana shu kutubxona ma'lumotlarini har biri MySQL orqali amalga oshirilgan.
SQL so'rov mysql_query() buyrug'i orqali amalga oshiriladi. Bu buyruq php tiliga tegishli. ( ) belgilari orasiga esa SQL tilida so'rov yoziladi va qavsdan " bilan ajratiladi:
mysql_query("SELECT COUNT(*) FROM `users`");

ushbu sql so'rov `users` jadvalidagi qatorlar sonini sanaydi. Shu usul orqali saytda qancha foydalanuvchi bor ekanini bilib olish mumkin. Natijasi haqida batafsil keyinroq.

SQL tilida siz uchun hozir bilishingiz kerak bo'lgan buyruqlar quyidagilar:

SELECT => tanlash
UPDATE => mavjud ma'lumotni yangilash
INSERT => Yangi qatorga yangi malumot kiritish
DELETE => Tanlangan qator(lar)ni o'chirish

SQL so'rovda jadval va ustun nomlari ` ` belgilari orasida bo'ladi, ma'lumot (valuega mos o'zbekcha so'z topolmadim) esa ' ' belgilari orasiga yoziladi.

Keling, oddiy sql buyruq yozib ko'ramiz: ID:1dagi userning kirish huquqlarini (`rights`) oddiy user (nol)ga to'g'rilaymiz:
mysql_query("UPDATE `users` SET `rights` = '0' WHERE `id` = '1'");

Diqqat qilsangiz, rostdan ham bu tartibga solingan so'rov ekanini anglaysiz. Yuqoridagi so'rovni taxlil qilamiz:
`users` jadvali yangilansin: `id` 1ga teng bo'lgan qatorning `rights` ustuni 0ga o'zgartirilsin (SET)

Demak, sql buyruqdan keyin birinchi navbatda jadval nomi yozilishi kerak. Yuqoridagi buyruqdan foydalangan holda shu kabi yangilash (UPDATE) buyruqlarini o'zingiz yoza olasiz deb o'ylayman))

Endi keyingi so'rov bilan tanishamiz: o'chirish (DELETE)

Kelinglar, forumdan id:28-postni o'chirib tashlaymiz:

mysql_query("DELETE FROM `forum` WHERE `id` = '28'");

Taxlil qilamiz:
`forum` jadvalidan o'chirilsin: `id` ustuni 28ga teng bo'lgan qator.

Menimcha bu ham oz-moz tushunarli bo'ldi. Endi yana bir sql buyruq: yangi qator kiritish (INSERT).

Kelinglar, id:7 foydalanuvchiga system xabari yuboramiz.
Oldiniga qiynalmaslik uchun xabar matnini o'zgaruvchiga biriktirib olamiz:
$xabar = 'Xurmatli foydalanuvchi, saytimizdan foydalanayotganingiz uchun minnatdormiz!';

Endi esa sql buyruq:

mysql_query("INSERT INTO `cms_mail` SET `user_id` = '0', `from_id` = '7', `text` = '".$xabar."', `time` = '".time()."', `sys` = '1'");

Taxlil: `cms_mail` jadvaliga yangi qator kiritilsin(INSERT) : `user_id` nol deb, `from_id` 7 deb, `matn` $xabar o'zgaruvchisi deb, `time` hozirgi vaqt deb (time() haqida sal keyin), `sys` 1 deb belgilansin.

Menimcha bu ham oz-moz tushunarli bo'ldi. Keling endi time() haqida to'xtalib o'tamiz:

serverlarda vaqtni aniq belgilash uchun Unix Time Stamp ishlatiladi. Bu 1970-yil, 1-yanvar soat 00:00 (GMT London vaqti bilan)dan beri shu vaqtgacha o'tgan soniyalar yig'indisiga teng. Misol uchun bir sutkada 86400 soniya borligini bilsak, 1970-yildan beri ehh-hee. . . Bu bilan ishlashni osonlashtirish uchun esa time() tegi qo'llaniladi. Bu avtomatik tarzda unix time stampdagi hozirgi vaqtni (yani soniyalar yig'indisini) kiritadi.


Shunday qilib, siz endi MySQL haqida yuzaki ma'lumotga egasiz. Kelinglar endi ozgina ichkariroq kiramiz))

mysql_query("SELECT COUNT(*) FROM `users`");

ushu so'rov endi nimani anglatishini bilasiz, bu `users` jadvalidagi qatorlar sonini sanaydi. Faqat. . . Bu sanaydi holos! Sizga hech qanday ma'lumot taqdim etmaydi! Endi biz bu ma'lumotni brauzerga chiqaramiz:

$natija = mysql_result(mysql_query("SELECT COUNT(*) FROM `users`"));
echo $natija;

Bu holatda server brauzerga qatorlar sonini sanab, javobini (mysql_result) brauzerga yuboradi. Endi keyingi qo'shimcha buyruqqa o'tamiz: mysql_fetch_assoc()

Bu buyruq tanlangan qatordagi har bir ustun ma'lumotlarini esda saqlab turadi, foydalanish uchun. Misol uchun, ID:1ning shahsiy malumotlarini olaylik:

$sql = mysql_query("SELECT * FROM `users` WHERE `id` = '1'");

Agar qatordagi ustunlardan faqat bittasi emas, hammasi kerak bo'lsa, *ni tanlash orqali erishamiz.

$admin = mysql_fetch_assoc($sql);

Ko'rib turganingizdek, bu safar sql buyruqni uchuga sql buyruq yozmasdan, boshqacha usulda, o'zgaruvchi ($sql) orqali amalga oshirdim. Lekin hozir qaysi usulni qo'llashni farqi yo'q.

Demak, hozirda $admin o'zgaruvchisi `users` jadvalidagi `id` ustuni 1ga teng bo'lgan qatorga teng. Bu qatordan turli ustun malumotlarini olish uchun esa biz o'zgaruvchidan $admin[] ko'rinishida foydalanamiz. Ya'ni:

echo 'Ismi: '.$admin['imname'];

Yoki:

echo 'O'zi haqida: '.$admin['about'];


Ma'lumotlar
Mavzu id raqami: 1830
Mavzuga oid xabarlar soni: 36 ta
So'ngi faollik vaqti: 5 Aug 2018, 23:49
Mavzuni ko'rishgan: 62 kishi
» txt shaklida yuklab olish
» Mavzudagi yangi xabarlardan xabardor bo'lishni rad etish