Tuesday, March 9, 2010

PHP: Using HTML form

Бүхий л dynamic web application-уудад html form хэрэглэгддэг. Жишээлбэл энэ бичлэгийн доор comment бичих талбар, google.com-ээс хайлт хийхэд хайлтыхаа текстийг бичээд Google Search, I'm feeling Lucky товчнуудыг дарах сонголтууд зэргийг дурьдаж болох юм. PHP дээр form боловсруулах тун хялбархан хоёр жишээг сонирхуулъя.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Loop - Form Example</title>
</head>
<body>
<form action="Looped1.php" method="post" name="form">
&#1069;&#1085;&#1101; form
<input name="Text" value="" type="text">
&#1090;&#1077;&#1082;&#1089;&#1090;&#1080;&#1081;&#1075;
<input name="num" value="" type="text">
&#1091;&#1076;&#1072;&#1072;
&#1076;&#1101;&#1083;&#1075;&#1101;&#1094;&#1101;&#1085;&#1076;
&#1093;&#1101;&#1074;&#1083;&#1101;&#1085;&#1101;.
<button value="go" name="go">Go</button>
</form>
</body>
</html>
Харагдах хэлбэр нь:
Энэ form

текстийг

удаа
дэлгэцэнд
хэвлэнэ.
<from> тагд action="Looped1.php" гэж зааж өгсөн байгаа нь энэ form нь submit хийгдэх үед Looped1.php хуудсыг дуудна гэдгийг заана. Харин method="post" бичиглэл нь Looped1.php дээр $_POST[] үйлдлийн тусламжтай боловсруулагдана хэмээн ойлгож болох юм.

Looped1.php нь дараах байдалтай байна.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>

<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Loop</title>
</head><body>
<?php
$text = $_POST['Text'];
$num = $_POST['num'];
for($i = 0; $i < $num; $i++){
echo "$text<br>";
}
?>
</body></html>
Энд $text = $_POST['Text']; $num = $_POST['num']; $_POST[] үйлдлийн тусламжтай $text $num хувьсагчуудад өмнөх source code-ын Text, num хэмээн нэрлэгдсэн text field-үүдэд бичигдсэн утгуудыг оноож байна.

Hello Form, 8 гэсэн утгуудыг бөглөж өгөөд ажилуулбал дараах байдалтай мэдээллийг хэвлэж байна :) Жишээг энд дарж харна уу

Одоо харин Database-д үйлчлүүлэгчдийн мэдээллийг хадгалдаг, тэдний бүх бүртгэлийг дэлгэцэнд хэвлэдэг form бүхий хуудсыг хийе. example_db нэртэй database-д customer нэртэй table-ийн дараад байдалтай үүсгэ.
CREATE TABLE `example_db`.`customer` (
`name` VARCHAR( 50 ) NOT NULL ,
`last_name` VARCHAR( 50 ) NOT NULL ,
`mail` VARCHAR( 50 ) NOT NULL ,
`phone` VARCHAR( 50 ) NOT NULL ,
`age` INT NOT NULL
) ENGINE = MYISAM ;

Reg.php-ийн source code:
<?php
<html>
    <head><TITLE>Registration Form</TITLE></head>
<body>
<a href='show.php'>Show Table</a>

<p>
<FORM action="save.php" method="POST">
<table>
<TR><TD>User name:</TD><TD><INPUT type="text" name="user_name"><br /></TD></tr>
<tr><TD>Last Name:</TD><TD><INPUT type="text" name="last_name"><br /></TD></tr>
<tr><TD>E - mail:</TD><TD><INPUT type="text" name="mail"><br /></TD></TR>
<tr><TD>Phone num:</TD><td><INPUT type="text" name="phone"><br /></td></tr>
<tr><TD>Age:</TD><td><INPUT type="text" name="age"><br /></td></tr>
<tr><TD><input type="submit" value="Save and Show table" /></TD></tr>
</table>

</FORM>
</p>
</body>
</html>
?>

save.php-ийн source code:

<?php
    $db_host='localhost';
    $db_database='example_db';
    $db_username='root';
    $db_password='';

    $db_conn = mysql_connect($db_host, $db_username, $db_password);
    
    if (!$db_conn){
        die ("DB connection not successful <br />". mysql_error());
    }else{
        echo "Connection successful <br />";
    }
    
    $db_select = mysql_select_db($db_database);
    
    if (!$db_select){
        die ("DB selection not successful <br />". mysql_error());
    }else{
        echo "DB selection successful<br />";
    }
    
    $un = $_POST['user_name'];
    $ln = $_POST['last_name'];
    $ml = $_POST['mail'];
    $ph = $_POST['phone'];
    $ag = $_POST['age'];
    
    $q = "INSERT INTO `customer` VALUES ('$un','$ln','$ml','$ph',$ag);";
    

    $r = mysql_query( $q);
    
    if (!$r){
        die ("Could not query the database: <br />". mysql_error());
    }else{
        echo "Query executed <br />";
    }
    echo "<a href='show.php'>Shoe table</a>";
    mysql_close($db_conn);
?>

show.php-ийн source code:

<?php
    $db_host='localhost';
    $db_database='example_db';
    $db_username='root';
    $db_password='';

    $db_conn = mysql_connect($db_host, $db_username, $db_password);
    
    if (!$db_conn){
        die ("DB connection not successful <br />". mysql_error());
    }else{
        echo "Connection successful <br />";
    }
    
    $db_select = mysql_select_db($db_database);
    
    if (!$db_select){
        die ("DB selection not successful <br />". mysql_error());
    }else{
        echo "DB selection successful<br />";
    }
    

    $query2 = "select * from `customer`";
    
    $result = mysql_query( $query2 );
    
    if (!$result){
        die ("Could not query2 the database: <br />". mysql_error());
    }

    while ($row = mysql_fetch_row($result)){
               echo "<br />$row[0]<br />"."$row[1]<br />"
        ."$row[2]<br />"."$row[3]<br />"."$row[4]<br />";
    }
    mysql_close($db_conn);
?>

Ажиллууж байгаа жишээг эндээс үзээрэй :)


Monday, March 8, 2010

PHP: MySQL database холболт үүсгэх, query ажиллуулах

Өмнөх бичлэг дээр PhpMyadmin ашиглан database үүсгэх Query бичиж ажиллуулах талаар бичсэн. Одоо харин PHP source code дээрээс MySQL database-тай connection(холболт) үүсгэх, Query ажиллуулах талаар жаахан тайлбар хийе.

<?php
    $db_host='localhost';
    $db_database='example_db';
    $db_username='root';
    $db_password='';

    $db_conn = mysql_connect($db_host, $db_username, $db_password);
    
    if (!$db_conn){
        die ("DB connection not successful <br />". mysql_error());
    }else{
        echo "Connection successful <br />";
    }
    
    $db_select = mysql_select_db($db_database);
    
    if (!$db_select){
        die ("DB selection not successful <br />". mysql_error());
    }else{
        echo "DB selection successful<br />";
    }
    
    $query1 = "INSERT INTO `user` (user_name,user_last_name,user_pass,user_mail,age)
                    VALUES ( 'newuser', 'new', 'pass', 'newuser@mail.dm',20);";
    
    $r = mysql_query( $query1 );
    
    if (!$r){
        die ("Could not query1 the database: <br />". mysql_error());
    }else{
        echo "Query1 executed <br />";
    }
    
    $query2 = "select * from `user`";
    
    $result = mysql_query( $query2 );
    
    if (!$result){
        die ("Could not query2 the database: <br />". mysql_error());
    }

    while ($row = mysql_fetch_row($result)){
       echo "$row[0] "."$row[1] "."$row[2] "."$row[3] "."$row[4]<br />";
       
    }
    mysql_close($db_conn);
?>
PHP дээр MySQL database-тай mysql_connect() функцийн тусламжтай холбогдоно.
mysql_connect($db_host, $db_username, $db_password);
Харин энэ функцээр эхлээд host name (өөрийн компьютер дээр server ажиллуулж байгаа болохоор localhost нэртэй байна), мөн database-ийн user name(нэвтрэх нэр), password гэсэн гурван аргументийг дамжуулж холбогдоно. XAMPP суулгасан үед username нь root, password нь хоосон default утга авсан байдаг. Холболт амжилтгүй болон тохиолдолд mysql_connect() функц маань false (null, 0) утга буцаадаг. Амжилтай болсон эсэхийг доор нь if() нөхцөл шалгаж
DB connection not successful / Connection successful мэдээллүүдийг хэвлэхээр source code дээр бичлээ.

MySQL database-тай холбогдсон бол mysql_select_db() функцийн тусламжтай үүсгэсэн database-ийг сонгож идэвхижүүлнэ.

Харин query-г execute(гүйцэтгэл) хийлгэхийн тулд mysql_query( ) функцийн дундуур query-ээ argument болгож дамжуулна. Манай жишээнд:
INSERT INTO `user` (user_name,user_last_name,user_pass,user_mail,age)
VALUES ( 'newuser', 'new', 'pass', 'newuser@mail.dm',20);
query-г
user_name = 'newuser',
user_last_name = 'new',
user_pass = 'pass',
user_mail = 'newuser@mail.dm',
age = 20 утгуудыг авахаар бичиж гүйцэтгүүллээ.

Дараа нь
select * from `user`
query-г ажиллуулж, буцаасан утгыг нь mysql_fetch_row() фунцкийн тусламжтай $row массив хувьсагчид утгыг оноож дэлгэцэнд хэвлэх үйлдлийг гүйцэтгүүллээ.

Эцэст нь mysql_close(); функцийн тусламжтой database connection-оо салгаж байна.

Хэд хэдэн удаа refresh хийгээд харвал web browser дээр маань иймэрхүү л үр дүнг харуулж байна даа :)



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-ийг ихэвчлэн хэрэглэдэг.