linkedin facebook linkedin facebook nod32

PHP vositalaridagi oddiy bulut teglari

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2015-06-13

PHP vositalaridagi oddiy bulut teglari

Ushbu darsda biz materiallar uchun oddiy bulut teglarini joylashtiramiz, shu bilan birga uni bizning bazaga joylashtiramiz. Albatta bu juda ulkan miqdordagi ko’p skriptlardir ammo, uni qo’lda yozib tayyorlagan ma’quldir, buning uchun materiallarni mustahkamlash lozim va qandaydir yangi narsani bilib olish mumkin bo’ladi.

Darsida juda ham ko’p materiallar ma’lumotlar bazasida bo’lib, shuning uchun biz bunga uncha ko’p ahamiyat bermaymiz va birdaniga bulut tegi ishiga kirishamiz. Aytaylikki bizning bazamizda quyidagi jadval bor:

Keyingi kod qismini bazadagi asosiy ma’lumotlarga kiritishdan oldin joylashtirish kerak bo’ladi:

if (isset($_REQUEST["keywords"])) {        
$keywords = $_REQUEST["keywords"];
$chars = explode(",", $keywords); 
$i=0;

Biz bu yerda foydalanuvchining aniq ko’rinishdagi kalit so’zlarini materiallar yaratilgani tekshiriladi, agarda ular bo’lsa, keyin esa ularni explode() funksiyasida selector "," ( vergul, ammo siz xoxlagan boshqa selectorlardan foyfalanishingiz mumkin bo’ladi va u vergul o’rnini bosadi )orqali parchalaymiz va barcha qabul qilingan so’zlarni bitta massiv $chars ga joylashtiramiz. $i o’rgaruvchisini yaratamiz va uni 0 ga tenglashtiramiz.

do {
$result_chars = trim($chars[$i]);
$result_choice_up = mysql_query("SELECT tag_name, count FROM tags WHERE tag_name='$result_chars'");
if(mysql_num_rows($result_choice_up)>0) {
$myrow_choice_up = mysql_fetch_array($result_choice_up);
$new_count = $myrow_choice_up["count"]+1;
$result = mysql_query ("UPDATE tags SET count='$new_count' WHERE tag_name='$result_chars'");
$i++;
}
else {
$result = mysql_query("INSERT INTO tags (tag_name, count) VALUES ('$result_chars', 1)",$db);
$i++;
}}
while ($chars[$i]!="");

Tsiklni ishga tushiramiz va biz bazadagi tags jadvalini qabul qilingan funksiyalarni explode() kalit so’zlarni qo’shamiz

$chars[$i] ning burchagidagi bo’shliqdan xalos etilgan mazmunini $result_chars ga o’tkazamiz va u bizga bazadagi birinchi ko’zga tashlangan ikkitalik teglarni qabul qilmaslikka imkon beradi. Agar xuddi shunday kalit so’zi bizda bo’lsa, biz 1-dagi bazaga count ko’rsatkichini kattalashtiramiz, agar kalit so’zi bo’lmasa, count =1 bazasiga uni qo’shamiz. $i ni o’zgartiramiz 1 taga kattalashtiramiz. Mazkur tsiklni biz $chars[$i] dagi bo’sh yozuvlarni ungacha bajaramiz.
Ichki tsiklni yopamiz:

}else $keywords = "";

Endi bizning bulut teglarini joylashtirish uchun quyidagi kodlarni joylashtiramiz:

$result_tags = mysql_query("SELECT * FROM tags ORDER BY tag_name");
$myrow_tags = mysql_fetch_array($result_tags);
echo "<ul id='cloud_tag'>";
do {
$size_font =  $myrow_tags["count"]/10+11;
printf("
<li style='font-size:%spx'><a title='materiallar miqdori: %s' href='?tag=%s'>%s</a></li>
",$size_font,$myrow_tags["count"],$myrow_tags["tag_name"],$myrow_tags["tag_name"]);
}
while ($myrow_tags = mysql_fetch_array($result_tags));
echo "</ul>";

Biz bu yerda bo’sh ro’yxatni qo’llaymiz, uning uchun har bir elementni font-size uslubida ro’yhatini yaratamiz, tekst o’lchami xisobini uzatamiz va u bizga count izohiga qarab tags jadvaliga bog’liq bo’ladi. O’zimizning ahamiyatimizni joylashtirishga urinib ko’rishimiz mumkin bo’ladi u bizga shriftlarni o’lchamini qulayroq ko’rinishga keltiradi. Men chiquvchi 11 o’lchamda to’xtatdim.
Hammasi oddygina ko’rinishi uchun oz miqdorda css uslubini qo’shamiz:

#cloud_tag {
margin:2px;
width:210px;
}

#cloud_tag li{
float:left;
list-style:none;
font:Arial, Helvetica, sans-serif;
margin-left:5px;
}

Biz har bir elementlarni li uslubida so’zlarni joylashtiramiz, bulutni esa 210 pikselda kengaytiramiz. Juda yaxshi bulut hosil bo’ladi, endi materiallarni bulut elementiga klik bosilish ishlashini yuklatamiz.

if (isset($_REQUEST["tag"])) {
$search_tag = $_REQUEST["tag"];
echo "<p> Siz so’zlarning miqdorini belgilaysiz: <strong>".$search_tag."</strong> | <a href='allmaterials.php'>Barcha materiallar</a></p>";
$result_material = mysql_query("SELECT * FROM materials");
$myrow_mat = mysql_fetch_array($result_material);
do {
$tags = $myrow_mat["keywords"];
$search = "/".$search_tag."/";
if (preg_match_all($search,$tags,$array)) {
$text = strip_tags($myrow_mat["text"]);
$text = substr($myrow_mat["text"],0,150);
printf ("
<div id='news_block'>
<div><a href='material.php?id=%s'>%s</a></div>
<p>%s...</p>
<p align='right'><a href='material.php?id=%s'><span>batafsil...</span></a></p>
</div>
",$myrow_mat["id"],$myrow_mat["title"],$text,$myrow_mat["id"]);
}
}
while ($myrow_mat = mysql_fetch_array($result_material));}
else { barcha materiallarni oddiygina chiqaramiz}

$tag yuborilgan o’zgaruvchini borligini tekshiramiz, bu o’zgaruvchi bizga doimiy funksiya bo’ladi va bizga materials bazasidagi jadval keywords  maydonidagi teglarni script qidirishni boshlaydi. Agar tasodif paydo bo’lsa, materiallarning qisqacha kalit so’zini ko’rsatadi, agar yo’q bo’lsa, material mos ravishda ko’rinmas holatga keladi.

Agar materiallar bazadan o’chirilgan bo’lsa, xuddi shu ko’rinishda teglarni o’chirish ham mumkin bo’ladi. explode()  va boshqa funksiyasiyalarni ham xuddi shu xolatda ishlatishimiz mumkin, yoki 1 ta har bir teg materiallarni ham, yoki to’liqligicha teglarni o’chirish imkonini beradi. Teglarni bazaga qoldirish ham mumkin, ammo uni 0 ga tenglashtirilsa, bulutning o’zi tegga chiqarilmaydi va u 0 ga tenglashib qoladi.

Ushbu variant yetarlicha egiluvchan va uni AJAX saytini ishlab chiqarishda relsga o’girish mumkin bo’ladi.

1610 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений