MALUMOTLAR BAZASI
Mavzu: MA LUMOTLA R BA ZA SI 1. MB bilan ulanishni o‘rnatish; 2. MB ishini tanlash; 3. Jadval maydonlari ro‘yxatini olish; 3. html-formada maydonlarni tasvirlash
Bundan keyin formaga kiritilgan ma’lumotlarni ma’lumotlar bazasiga kiritish mumkin. Ma’lumotlar bazasi bilan bog‘lanish (MySQL dasturi misolida) Aloqa o‘rnatish Ma’lumotlar bazasi bilan aloqa o‘rnatish uchun mysql_connect funksiyasidan foydalaniladi. mysql_connect sintaksisi mysql_connect resursi (“server qatori”, “username”, “password”) bu funksiya MySQL serveri bilan aloqa o‘rnatadi va bu aloqaga ko‘rsatkich qaytaradi yoki muvaffaqiyatsiz chiqqanda FALSE ko‘rsatadi. Odatda quyidagi parametrlar qiymati e’lon qilinadi: server = 'localhost:3306' username = server jarayoni egasidan foydalanuvchi ismi password = bo‘sh parol Server bilan ulanish, agar u bungacha mysql_close() yordamida yopilmagan bo‘lsa, skriptni amalga oshirish tugallanishida baza bilan aloqa yopiladi. Misol : <? $conn = mysql_connect("localhost", "admin","12345") or die("Ulanishni amalga oshirib bo‘lmaydi: ". mysql_error()); echo "Ulanish amalga oshdi"; mysql_close($conn); ?> mysql_connect amali shell>mysql -u nina -p123 buyrug‘i bilan teng kuchli. Ma’lumotlar bazasi ustida amallar Ma’lumotlar bazalarini tanlash MySQL da ma’lumotlar bazasini tanlash use buyrug‘i yordamida amalga oshiriladi: mysql>use book; PHP da buning uchun mysql_select_db funksiyasi mavjud. mysql_select_db: sintaksisi mantiqiy mysql_select_db (database_name qatori); Bu funksiya TRUE qiymatni ma’lumotlar bazasini muvaffaqiyatli tanlanganda qaytaradi va FALSE ni esa – aksincha bo‘lganda. Misol : Book ma’lumotlar bazasini tanlash <? $conn = mysql_connect("localhost","admin","12345") or die("Ulanishni amalga oshirib bo‘lmaydi: ". mysql_error()); echo "Ulanish amalga oshdi"; mysql_select_db ("book");
?> Jadval maydonlari ro‘yxatini olish PHP da ma’lumotlar bazasi bilan bog‘lanilgandan so‘ng, undagi jadvallar ro‘yxatini olish mumkin. Bu funksiya - mysql_list_fields. mysql_list_fields sintaksisi mysql_list_fields (database_name qatori, table_name qatori) mysql_field_name funksiyasi so‘rov amalga oshirilishi natijasida olingan maydon nomini qaytaradi. mysql_field_len funksiyasi maydon uzunligini qaytaradi. mysql_field_type funksiyasi maydon tipini qaytaradi, mysql_field_flags funksiyasi esa probel bilan yozilgan maydon bayroqlari ro‘yxatini qaytaradi. Maydon tiplari int, real, string, blob va h. bo‘lishi mumkin. Bayroqlar not_null, primary_key, unique_key, blob, auto_increment va h. bo‘lishi mumkin. Bu barcha buyruqlar sintaksisi bir xil: mysql_field_name (result qatori, butun field_offset) resursi; mysql_field_type (result qatori, butun field_offset) resursi; mysql_field_flags (result qatori, butun field_offset) resursi; mysql_field_len ( result qatori, butun field_offset) Bu erda result – bu so‘rov natijasi identifikatori (masalan, mysql_list_fields yoki mysql_query funksiyalar bilan jo‘natilgan so‘rov), field_offset esa – natijadagi maydonning tartib raqami. mysql_num_rows(result resursi) buyrug‘i result ning ko‘pgina natijalari qatorlari miqdorini qaytaradi. Misol : Artifacts (eksponatlar kolleksiyasi) jadvali maydonlari ro‘yxatini olish. <? $conn = mysql_connect("localhost","root","parol yozmang") or die("Aloqa o‘rnatib bo‘lmaydi: ". mysql_error()); echo "Aloqa o‘rnatildi"; mysql_select_db("book"); $list_f = mysql_list_fields ("book","Artifacts",$conn); $n = mysql_num_fields($list_f); for($i=0;$i<$n; $i++){ $type = mysql_field_type($list_f, $i); $name_f = mysql_field_name($list_f,$i); $len = mysql_field_len($list_f, $i); $flags_str = mysql_field_flags ($list_f, $i); echo "<br>Maydon nomi: ". $name_f; echo "<br>Maydon turi: ". $type; echo "<br>Maydon uzunligi: ". $len; echo "<br>Maydon bayroqlari qatori: " . $flags_str . "<hr>"; } ?>
Natija sifatida taxminan quyidagilarni olish mumkin (albatta, jadvalda ikkita maydon bo‘lganda): 1. Maydon nomi: id 1.2. Maydon turi: int 1.3. Maydon uzunligi: 11 1.4. Maydon bayroqlari qatori: not_null primary_key auto_increment 2. Maydon nomi: title 2.1. Maydon turi: string 2.2. Maydon uzunligi: 255 2.3 Maydon bayroqlari qatori: Html-formada maydonlar ro‘yxatining aks etishi Maydon haqidagi ma’lumotni html-forma elementida aks ettiramiz. BLOB turidagi elementlarni textarea ga o‘tkazamiz (TEXT turida biz tuzgan description maydoni BLOB tipiga ega), raqamlar va qatorlarni <input type=text> matnli qatorlarida aks ettiramiz, avtoinkrement belgisiga ega elementni esa umuman aks ettirmaymiz, chunki uning ma’nosi o‘z-o‘zidan o‘rnatiladi. Buning uchun explode funksiyasidan foydalaniladi: explode: sintaksisi explode massivi (separator qatori, string qatori , int limit) Bu funksiya string qatorini separator taqsimlagichi yordamida qismlarga bo‘ladi va olingan qatorlar massivini qaytaradi. Bizning holatda taqsimlagich sifatida probel “ ” ni olish kera, bo‘lish uchun boshlang‘ich qator sifatida esa – maydon bayroqlari qatorini. Misol . Artifacts jadvaliga ma’lumot kiritish uchun forma (index.php) <?php $dblocation = "localhost"; $dbname = "book"; $dbuser = "root"; $dbpasswd = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); @mysql_select_db($dbname,$dbcnx); if(isset($_POST['save_hide'])) { $title=($_POST['title']); $query = "INSERT INTO Artifacts (title) VALUES ('$title')"; if(@mysql_query($query)) {echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></HTML>"; } else { print mysql_error(); error("Ma’lumotni bazaga ezishda xatolik");} } else { ?> <TABLE width="100%" align=center border=0><TR><TD> <form method="POST" name="save" action="" enctype="multipart/form-data" > <input type=hidden name=save_hide value=save_hide>
<TABLE width="100%" align=center border=0><TR> <TD>Eksponat nomini kiriting </TD> <TD><INPUT class="input" size=“35” name=“title” value=""></TD> </TR></TABLE> <input type="submit" value="Saqlash" class="batton" /> </form></TD></TR></TABLE> <? } ?> Ma’lumotlar bazasiga ma’lumotlar yozish Ma’lumki, ma’lumotlarni jadvalga yozish uchun SQL tilidagi INSERT buyrug‘i ishlatiladi: mysql> INSERT INTO Artifacts SET title='Eksponat nomi'; PHP skriptda bunday buyruqdan foydalanish uchun mysql_query() funksiyasi mavjud. mysql_query sintaksisi mysql_query resursi (query qatori) mysql_query() SQL-so‘rovni MySQL ma’lumotlar bazasining ma’lumotlar bazasiga jo‘natadi. Agar ochiq aloqa bo‘lmasa, funksiya parametrsiz mysql_connect() funksiyasiga o‘xshash holda MBBT bilan bog‘lanishga urinadi. So‘rov natijasi buferlanadi. HTML ning konstruktsiyasi TEG lar d е yiladi. Brauz е r TEG larni oddiy matnlardan farqlashi uchun ular burchak qavslarga olinadilar. TEG tasvirlash jarayoni hatti harakatlarining boshlanishini bildiradi. Agar bu harakat butun hujjatga talluqli bo’lsa, bunday teg o’zining yopiluvchi juftiga ega bo’lmaydi. Juft teglarning ikkinchisi birinchisining harakatini yakunlaydi. Masalan, har bir Web sahifa <html> tegi bilan boshlanib </html> tegi bilan yopilishi k е rak. Etibor b е rgan bo’lsangiz yopiluvchi teg ochiluvchidan « / » b е lgisi bilan farq qiladi. Teg nomlari katta yoki kichik harflar bilan yozilishi mumkin, bularni brauz е r bir xil qabul qiladi. HTML tilida boshqa kompyut е r tillaridagi kabi izoh b е rish imkoniyati mavjud. Izoh quyidagi «<- - » va «- ->» b е lgilar orasiga yoziladi. Masalan: <-- Bu izoh --> Har qanday Web sahifa ikkita qismdan tashkil topadi. Bular sarlavha qismi va asosiy qism . Sarlavha qismida Web sahifa haqidagi malumot joylashadi, asosiy qismda esa Web sahifaning mazmuni bilan tasvirlanish qoidalari joylashadi. Sarlavha qismi quyidagi ochiluvchi <head> va yopiluvchi </head> teglari orasida joylashadi. Asosiy qism esa <body> va </body> teglari orasida joylashadi. Odatda sarlavha qismi oldidan qo’llanilayotgan HTML standartlari haqida malumot yoziladi. Har qanday Web sahifaning umumiy ko’rinishi quyidagicha bo’ladi: