Thursday, September 19, 2013

PHP : Database Tutorial

Chapter 12 က Database ပုဒ္စာတစ္ပုဒ္ပါ။ Lab Test ေမးမယ့္ ေမးခြန္းပံုစံထဲမွာ Database လဲပါပါတယ္။
ေမးခြန္းပံုစံက
Form with Database (or)  Form with include and Function/Form with File.

Database ပိုင္းမွာ ပါတဲ့အဆင့္ေတြကို ေအာက္ကအတိုင္း အလြယ္နည္းနဲ့ မွတ္ထားလိုက္ေပါ့...

1.  Database Create
2.  DBLink (use Database)
3.  Table Create
4.  Functions (Insert, Select, Specific Select, Update, Delete)

စာေမးပြဲမွာ ေမးခဲ့ရင္ေတာ့ Functions ေတြထဲက ၂ မ်ိဳး (အမ်ားဆံုး ၃ မ်ိဳးေလာက္) ပဲေမးမွာပါ။ 
DBMS ကိုလဲေတာ္ေတာ္ေလး ရထားတယ္ဆိုရင္ေတာ့  ဒီအပိုင္းမွာ ေတာ္ေတာ္ေလးလြယ္ေနမွာပါ။
ပထမဆံုး Database Create လုပ္ပါမယ္။
DBMS(04) မွာလိုဆိုရင္ေတာ့   Create Database dbname; အဲလိုမ်ိဳးေပါ့။
PHP မွာကေတာ့ ေအာက္ကပံုစံပါ။ အလြတ္မွတ္မိေနေအာင္ ႀကည့္ထားရပါမယ္။

<!-- DBCreate-->
<?php

$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
if (mysql_query("CREATE DATABASE firstDB",$con))
  {   echo "Database created";   }
else
  {
  echo "Error creating database: " . mysql_error();
  }
mysql_close($con);
?>


dbcreate.php ဆိုျပီး Save လုပ္ထားလိုက္ပါ။
$con ဆိုတာက mysql connection တစ္ခုအေနနဲ့ variable သတ္မွတ္ေပးတာ..။ သူ ့မွာထည့္ရမွာက
mysql_connect( " ", " " , " ")  ကြင္းစ ကြင္းပိတ္ထဲမွာ db host (localhost), username(root), password( ) အဲဒီ Format နဲ့ထည့္ရမွာပါ။ password ထဲမွာေတာ့ ေမးခြန္းကိုႀကည့္ျပီး ထည့္ရလိမ့္မယ္။ ေမးခြန္းမွာ password ေပးခိုင္းရင္ေတာ့ထည့္ေပးလိုက္ေပါ့။

if(!$con) ဆိုျပီး စစ္တာက error ကိုစစ္တာပါ။ $con ရဲ ့ေရွ ့မွာ not sign(!) ေလးပါတဲ့အတြက္.. connection မျဖစ္ဖူးဆိုရင္ mysql_error() ဆိုတဲ့ method ကိုေခၚလိုက္တာပါ။

mysql_query ဆိုတဲ့ method ကေတာ့ SQL query ေတြထည့္ရင္ သံုးတာပါ။ ဥပမာ.... Create Database တို ့
Create Table တို ့ ဘာတို ့ေပါ့။ ေနာက္က်ရင္ေတြ ့ရဦးမွာပါ။ အဲဒီ Query ထဲကို $con ကိုထည့္ေပးရတယ္။ Query ကိုလဲ error တက္ရင္ error message ျပဖို ့condition စစ္တယ္ေပါ့။

Sql Connection ကို ေခၚသံုးျပီးရင္ အျမဲတမ္း ျပန္ပိတ္ေပးရတယ္။
mysql_close($con) ဆိုတ့ဲ့ method နဲ့ ျပန္ပိတ္ေပးရတယ္။ (ျပန္ပိတ္တာအျမဲတမ္းေမ့ က်န္တတ္တယ္)

ေနာက္တစ္ခု DBLink ပါ။ သူကေတာ့ DBMS(04) မွာတူတာက  DB use လုပ္တာနဲ့တူပါတယ္။
> Use Dataabase dbname;

<!-- dblink.php -->
<?php
$con = mysql_connect("localhost","root","");

if(!$con)
{
  die('Could not connect: ' . mysql_error());
}
else
{
  //echo "Connected <br/>";
}

$databasename="firstDB";  

$db_selected     = mysql_select_db($databasename, $con) ;

if(!$db_selected)
{
    Die("Can't use $databasename:".mysql_error());
}
?>


dblink.php ဆိုျပီး Save လုပ္လိုက္ပါ။
သူကလဲ အေပၚကအတိုင္း Database Connection လုပ္တယ္။ error စစ္တယ္။ ျပီးေတာ့ databasename သတ္မွတ္တယ္။ database ကို select (use) လုပ္တယ္။  Select လုပ္တာမွာ mysql_select_db( ) ဆိုတဲ့ method ကိုေခၚျပီး သံုးတယ္။ method ထဲမွာ dbname နဲ့ connection ထည့္ေပးရပါတယ္။

ေနာက္တစ္ဆင့္က Table Create လုပ္တာပါ။

<!-- tablecreate.php -->
<?php

include("dblink.php");

$sql = "CREATE TABLE Persons
        (FirstName varchar(15),LastName varchar(15), Age int)";

 $ret=mysql_query($sql,$con);

if($ret) {
            echo "<p>Table Persons is created!</p>";
        }
else {
            echo "<p>Something went wrong: ", mysql_error() + "</p>";
      }

mysql_close($con);

?> 


Tablecreate.php ဆိုျပီး Save လုပ္လိုက္ပါ။ Table Create ထဲမွာေတာ့ include(dblink.php) ဆိုျပီး dblink ကို ေခၚထားပါမယ္။ ဘာလို ့လဲဆိုေတာ့ သံုးဖို ့select လုပ္ထားတဲ့ Database ရွိမွ အဲဒီ Database ထဲမွာ Table ကို Create လုပ္ရမွာမို့ပါ။ sql ဆိုျပီး Variable တစ္ခုယူျပီးေတာ့ အဲထဲမွာ query ကိုထည့္ထားပါတယ္။
အဲဒီ $sql နဲ့ connection ကို mysql_query method ထဲ variable တစ္လုံုးယူျပီး ထည့္လိုက္မယ္။ က်န္တာကေတာ့ Table Create လုပ္တာကို error စစ္တာပါပဲ...။

<!-- menu.php -->
 <?php
  echo "<a href ='insertForm.php'> Insertion </a> |
       
        <a href='selectAll.php'>Select ALL</a> |
        <a href='selectForm.php'>Select</a> |
        <a href='updateForm.php'>Update</a> |
        <a href='deleteForm.php'>Delete</a>";

?>

 Menu က သိပ္ေတာ့ ရွင္းစရာ မရွိပါဘူး။ သူ ့ကို run လိုက္ရင္ ေအာက္က ပံုအတိုင္းရမွာပါ။



<!--insertion.php-->
<html>
    <head>
        <title>Insertion Form</title>
    </head>
<body>
<?php

 include('menu.php');
 include("dblink.php");

 if(!isset($_POST['submit']))
 {
    echo "<form action='insertForm.php' method='POST'>
        <p>First Name :
        <input type='text' name='firstname'> </p>
        <p>Last Name :
        <input type='text' name='lastname'>  </p>  
        <p>Age :
        <input type='text' name='age'>  </p>
        <input type='submit' name='submit' value='Insert'> 
        <input type='reset' name='reset' value='Clear'>
        </form> ";
 }
 else
 {            
    
     $firstName=$_POST['firstname'];
     $lastName=$_POST['lastname'];
     $age=$_POST['age'];  
 
  $mysql_query="INSERT INTO Persons(FirstName,LastName, Age)
                 VALUES('$firstName','$lastName', '$age')";
 
  $results=mysql_query($mysql_query,$con);
 
  echo "<br/><br/>";
 if($results>0)
 { 
     echo ("Insert one record successful!");
 }
 else
 {
     echo ("Insert  fail!");
 }

mysql_close($con);

    echo "<br/><br/>"; 
    echo "<a href='insertForm.php'>Back</a>";
 }
          
?>
</body>
</html>


ဒါက insert လုပ္တဲ့ code ပါ။ အဲဒီမွာက အရင္ဆံုး Insert Form ကိုအရင္လုပ္တယ္။ အဲမွာက ပထမဆံုး Insert Form ကိုအရင္လုပ္တယ္။ ေအာက္က ပံုအတိုင္းေပါ့။ (Form ေတြတည္ေဆာက္တာက ရျပီးသားထင္လို ့မရွင္းျပေတာ့ပါ)


Form ကိုတည္ေဆာက္ျပီးမွ insert လုပ္တဲ့ command နဲ့ Sql connection ကို Query ထဲထည့္လိုက္ရံုပါပဲ...။
Query ေတြကလဲ သိပ္မခက္ပါဘူး။
က်န္တဲ့ Selection, Update နဲ့ Delete တို ့ကလဲ သေဘာတရားခ်င္း တူတူပဲ ျဖစ္လို ့.. ကိုယ့္ဘာသာကိုယ္ ျပန္ႀကည့္လို္ ့ရေလာက္ပါျပီ  :D