Showing posts with label MySQL. Show all posts
Showing posts with label MySQL. Show all posts

Saturday, April 3, 2010

PHP: Unicode тексттэй ажиллах

Өнөө үеийн бүхий л програм хангамжуудад юникод дэмждэг болсон нь маш өргөн боломжийг хэрэглэгчдэд олгодог. Unicode хэрэглээнд төдийлөн нэвтрээгүй үед Arial Mon фонт, Monkey гарын драйвер, RealMon аппликэйшнуудыг бүгдийг нь байнга тээж авч явах төвөгтэй гэмээр үе байв.

Үйлдлийн систем, цахим хөтөчүүд (web browser)-ууд юникод дэмжихгүй байсан нь вэб урлаачдад багагүй төвөг удаж байсан нь тодорхой. Багахан хэсэг хэсэг нь Arial Мон гэх мэт фонтоор бичээд бусад хэрэглэгчдэд(гадаадад байгаа дээр дурдсан хэрэглүүрүүийг хэрэглэх боломжгүй) уншихад төвөгтэй байдал үүсч арзайж гүйцсэн "Мотомборо хэл"-ээр бичсэн мөрүүд л харагддаг байж :D

Харин тухайн үеийн эх хэлээр нийтлэхэд хэрэглэгдэж байсан цорын ганц боломж нь local тэмдэгтүүдийг html код руу нь хөрвүүлж ашиглах явдал байв. Жишээ нь Гансүх гэсэн текстийг
Гансүх
гэсэн html код руу хөрвүүлж хэрэглэдэг байв. Dreamweaver гэх мэт хүчирхэг хөгжүүлэтийн багажуудад энэ код руу хөрвүүлэх боломж нь байсан ба вэб аппликэйшндаа энэ код руу хөрвүүлэх скрипт бичиж ашигладаг байсан болов уу.
Миний өмнө бичиж байсан хичээлүүдийг дагаж хийж байхдаа магадгүй unicode тэмдэгтийг хэрхэн дүрслэх талаар сонирхож үзэж байсан болов уу гэж бодож байна.
<?php
    echo "Сайн уу?";
?>

Хэрэв дээрхи кодыг ажиллуулж үзэхэд түрүү үеийн Apache PHP server дээр алдаатай арзайсан текст харагдаж болно. Үүнийг шийдэж болох эхний шийдэл нь
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
метатагийг
<head> </head>
тагын завсар оруулж өгөх хэрэгтэй. Жишээлбэл:
<html>
<head>
<title>PHP work with Unicode example</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<body>
<?php
        $s = "Сайн уу?";
         echo $s.'<br />';
    ?>
</body>
</head>

Өөр нэгэн арга нь

header( 'Content-Type: text/html; charset=utf-8' );

функцийг php скриктийхээ толгой хэсэг оруулж өгөх нь үр дүнтэй.

<?php
 header( 'Content-Type: text/html; charset=utf-8' );
 $s = "Сайн уу?";
 echo $s.'<br />';
?>

MySQL database-тай ажиллахдаа

@mysql_set_charset('utf8',$database_connection_name);

функцийг дуудахад хангалттай.
<?php
    $db_host='localhost';
    $db_database='blog_db';
    $db_username='root';
    $db_password='';
    
    $db_conn = mysql_connect($db_host, $db_username, $db_password);
    if (!$db_conn){
        die ("Could not connect to the database: <br />". mysql_error());
    }
    @mysql_set_charset('utf8',$db_conn);
    $db_select = mysql_select_db($db_database);
    if(!$db_select){
        die ("Could not select the database: <br />". mysql_error());
    }
?>

Monday, March 8, 2010

MySQL: PhpMyAdmin ашиглан database үүсгэх, query бичих

LAMP/WAMP server-ийг суулгахад хамт суудаг нэгэн "мундаг" хэрэгсэл бол phpmyadmin юм. Ихэнхи Server-үүдэд web application-аа байрлуулахад database үүсгэх, тохиргоо хийх зэрэгт phpmyadmin багажыг ашигладаг. LAMP/WAMP server ажиллаж байгаа үед цахим хөтөчийхөө хаягийн мөрөн дээр http://localhost/phpmyadmin/ бичихэд дараах байдалтай цонх гарч ирнэ.

Зүүн талын багананд database-ууд харагдаж байна. Database шинээр үүсгэхдээ MySQL localhost дотор Create new database хэсэгт өгөгдлийн сангийхаа нэрийг бичээд Create товчин дээр дарна. Жишээлбэл: example_db

Database example_db has been created.
гэсэн бичиг гарч байвал асуудалгүй database маань үүслээ гэсэн үг. Харин одоо database-даа table шинээр үүсгэх хэрэгтэй. Name талбарт table-ийн нэр, Number of fields-т table дэх утгуудын тоо(мэдээллийн төрлийн тоо). Жишээ болгоод user table-ийг 6 field-тэй байхаар бөглөөд Go.

Field багананд field-ийн нэр, Type багананд field-ийн өгөгдлийн төрөл, Length/Values1 тэмдэгт мөрийн уртын хязгаар г.м, Null багананд дахь checkbox нь тухайн field нь null утга авах эсэхийг, A_I (auto increment) багана нь тухайн table-д өгөгдөл оруулах бүрт тоон төрлийн мэдээлэл нь автоматааар өсөх (индекслэх гэх мэт мэдээллийг автоаматаар олгох зэрэгт хэрэглэнэ).

Жишээ болгоод
user_id int auto_increment
user_name varchar(50)
user_last_name varchar(50)
user_pass varchar(50)
user_mail varchar(50)
age int
гэж бөглөөд Save дар. 50 гэсэн утгыг Length/Values1 баганад дахь хэсэг бөглөж өгнө.

Table `example_db`.`user` has been created. бичиг гарч, доорхи query харагдаж байвал асуудалгүй гэсэн үг.
CREATE TABLE `example_db`.`user` (
`user_id` INT NOT NULL AUTO_INCREMENT ,
`user_name` VARCHAR( 50 ) NOT NULL ,
`user_last_name` VARCHAR( 50 ) NOT NULL ,
`user_pass` VARCHAR( 50 ) NOT NULL ,
`user_mail` INT NOT NULL ,
`age` INT NOT NULL ,
PRIMARY KEY ( `user_id` )
) ENGINE = MYISAM ;

Одоо SQL Query ашиглан үүсгэсэн `user` хүснэгтэндээ өгөгдөл оруулъя. Үүний тулд SQL tab дээр дарж, Run SQL query/queries on database-ийн доорхи text aread дараах query-г бичиж Go товчин дээр дарж ажиллуулна.
INSERT INTO `user` 
VALUES (1, 'Gansukh', 'B', 'mypass', 'bganaa2009@gmail.com',18);

Дээд хэсэгт
1 row(s) inserted.
Inserted row id: 1 ( Query took 0.0004 sec ) гэсэн утгатай бичиг гарах ёстой.

Одоо SQL tab дээр дарж
SELECT * FROM `user` WHERE 1
гэсэн Query-г нь ажиллуулж үзвэл `user` хүснэгтэнд бидний оруулсан өгөгдлүүд харагдана. Амжилттай туршсан бол баяр хүргэе :)

SQL Server-ийг тусад нь суулгасан бол энэ хаягаар орж илүү дэлгэрүүлэн судалж болно. Миний бичиж байгаа хичээлийн хувьд бол Apache, MySQL, PHP -ийг нэг дор багтаасан XAMPP(WAMP/LAMP) ашиглаж байгаа учир тэр бүрийг нарийн бичихээс татгалзлаа.



MySQL

MySQL нь холбоост өгөгдлийн санг удирдах систем юм. MySQL хэмээх нэрний хувьд уг системийг санаачлан хөгжүүлэгч Micheal Widenius-ын охины нэр My + SQL(Structed Query Language) гэсэн утгатай ажээ.

Энэ систем нь GNU (General Public License) буюу нээлтэй эхийн систем учир хүссэн хэн бүхэн хөгжүүлэлтэнд оролцож, үнэгүй хэрэглэж болох юм. Эзэмшигч нь алдарт Java-г хөгжүүлсэн Sun MicroSystems компани байсан ба, одоогоор Sun-г Oracle корпораци эзэмших болсон билээ.

Үнэгүй програм хангамжийн өгөгдлийн санг удирдах системд ихэвчлэн MySQL-ийг хэрэглэдэг бөгөөд тэдгээрийн сонгодог жишээ гэвэл Joomla, Drupal, Wordpress, phpBB гэх мэт агуулга удирдах системүүд (CMS-Content Management System), Wikipedia, Facebook, Google гэх мэт гигантууд юм.

Хөгжүүлэлт нь C/C++ хэл дээр хийгдсэн ба AIX, BSDi, FreeBSD, HP-UX, i5/OS, Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, eComStation, OS/2 Warp, QNX, IRIX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, Tru64, Microsoft Windows гэсэн олон үйлдлийн системүүд дээр ажилладаг.

Үнэгүй, вэб програмчлалын тал дээр найдвартай хурдан ажилладаг учир Вэб хөгжүүлэгчид маань MySQL-ийг ихэвчлэн хэрэглэдэг.