ShoutBox with PHP and MySQL

Basic Shoutbox with PHP and MySQL

LEVEL – Intermediate

Knowledge Required – PHP Intermediate & MySQL Basic

ဒီ Tutorials လေးကတော့ PHP နဲ့ MySQL ကို အသုံးပြုပြီး Shout Box လေး တစ်ခုရေးကြည့်မှာ ဖြစ်ပါတယ်။ လုပ်ငန်းလုပ်ပုံကို ပုံစံချကြည့်မယ်ဆိုရင်

  • MySQL အနေနဲ့ Shoutbox က အချက်အလက်တွေကို သိမ်းမယ်။
  • Embedded HTML နဲ့ CSS ဖိုင်ကို သုံးပြီး ကြည့်လို့ ကောင်းသွားအောင် စီစဉ်မယ်။
  • PHP ကနေ MySQL ကို ချိတ်ဆက်မယ်။ အဲဒီလို ချိတ်ဆက်ပြီး အချက်အလက်တွေ သိမ်းမယ်၊ ပြန်ခေါ်မယ်။
  • Gravatar ကိုသုံးမယ်၊ IP Address တွေကို မှတ်ထားတာတွေ ပါမယ်။

အဆင့် (၁)

Database တည်ဆောက်ခြင်း

Database တည်ဆောက်ဖို့အတွက် ကိုယ့်မှာ XAMPP ရှိပြီး (ဒါမှမဟုတ်) MySQL ရှိပြီး ဖြစ်တယ်လို့ ယူဆပါတယ်။ ဒါကြောင့် ဒါတွေ ရှိပြီးသားလို့ ယူဆပါတယ်။

  • Hostname (eg. localhost)
  • Database name
  • Username for database
  • Password

Database File ထဲမှာ ပါ့မယ် Field တွေကတော့

NAME DATA TYPE SIGNED NULL AI INDEX
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY
name VARCHAR(45) NOT NULL
email VARCHAR(60) NOT NULL
post TEXT NOT NULL
ipaddress VARCHAR(45) NOT NULL

စတာတွေ ပါမှာ ဖြစ်ပါတယ်။ SQL အနေနဲ့ တစ်ခါတည်း တန်းဆောက်ချင်တယ် ဆိုရင်

CREATE TABLE `shouts` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `email` VARCHAR(60) NOT NULL,
  `post` TEXT NOT NULL,
  `ipaddress` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`)
);

phpmyadmin

အဲဒီလို ထည့်မယ်ဆိုရင် Go ကို နှိပ်လိုက်တဲ့အခါ

Successful

အဲဒီလို Your SQL query has been executed successfully ဆိုရင် Database ဆောက်လို့ ပြီးသွားပါပြီ။ ဒီတစ်ခါ ရှေ့ဆက်ရမယ့် အပိုင်းကတော့

Files လိုအပ်ချက်များ

File လိုအပ်ချက်အရတော့

  • index.php
  • style.css
  • db.php

ဆိုပြီး ဖိုင် သုံးမျိုး လိုပါမယ်။ Folder အနေနဲ့ကတော့ images ဆိုတဲ့ folder တစ်ခုလိုမှာ ဖြစ်ပါတယ်။

Database သို့ ချိတ်ဆက်ခြင်း

php ကနေ MySQL ကိုချိတ်ဆက်တဲ့အခါ (Database ကို Script ကနေ ချိတ်ဆက်တဲ့အခါ) db.php သုံးမှာ ဖြစ်ပါတယ်။ အဓိက ထည့်ရမှာ တွေကတော့ ချိတ်ဆက်မယ့် Server, Username, password နဲ့ Database နာမည်တွေပဲ ဖြစ်ပါတယ်။ ကဲ စရေးကြည့်ရအောင်

<?php
$host = 'localhost'; //usually localhost
$username = 'root'; //your username assigned to your database
$password = 'password'; //your password assigned to your user & database
$database = 'shoutbox'; //your database name
?>

အဆင့် (၂)

index.php ကို တည်ဆောက်ခြင်း

အပေါ်မှာ Database တွေ တည်ဆောက်ပြီးပါပြီ။ အဲဒီအပြင် Database နဲ့ချိတ်ဆက်တဲ့ db.php ဆိုတာကိုလည်း ရေးခဲ့ပြီးပြီ။ ခုဆက်ရေးမယ့် အပိုင်းကတော့ တကယ်တန်း shoutbox ကိုခေါ်လိုက်တဲ့အခါ အရင်းဆုံး Run ရမှာ ဖြစ်တဲ့ index.php ပါပဲ။

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shoutbox</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="container">

  <h1>Shoutbox</h1>
  <h5>MyanmarTutorials</h5>

  <div id="boxtop"></div>
  <div id="content">

ဒါကတော့ ထိပ်ဆုံးမှာ ရေးပေးရမှာ ဖြစ်ပါတယ်။ HTML နဲ့  အတူတူပါပဲ။ ခုမှ php က စမှာပါ။

Database သို့ ချိတ်ဆက်ခြင်း

Database ချိတ်ဆက်တဲ့ Code ကို နဂိုမူလ ရေးထားတဲ့ နောက်မှာပဲ ဆက်ရေးရမှာ ဖြစ်ပါတယ်။ ရေးမယ့် code ကတော့

<?php
    $self = $_SERVER['PHP_SELF']; //the $self variable equals this file
    $ipaddress = ("$_SERVER[REMOTE_ADDR]"); //the $ipaddress var equals users IP
    include ('db.php'); // for db details

    // defines a $connect variable, which when used
    // will attempt to connect to the databse using
    // details provided in config.php
    // if it fails, will display error - or die();
    $connect = mysql_connect($host,$username,$password) or die('<p class="error">Unable to connect to the database server at this time.</p>');

    // connect to database using details provided
    // and uses the $connect variable above
    // if it fails, will return error - or die();
    mysql_select_db($database,$connect) or die('<p class="error">Unable to connect to the database at this time.</p>');

အပေါ်ဆုံး Line နှစ်ကြောင်းကို ရှင်းပြရမယ်ဆိုရင်

  • $self = $_SERVER['PHP_SELF']; ကတော့ file နာမည်ကို ပြန်ယူတာ ဖြစ်ပါတယ်။
  • $ipaddress = (“$_SERVER[REMOTE_ADDR]“); ကတော့ အသုံးပြုသူရဲ့ IP Address ကို ယူတာ ဖြစ်ပါတယ်။

နှစ်ခုလုံးက PHP Built-in Function တွေ ဖြစ်ပါတယ်။

ကျွန်တော်တို့ အနေနဲ့ Database ကို ချိတ်ဆက်မှာ ဖြစ်တဲ့အတွက် database ကို ချိတ်ဆက်ဖို့ရာ အချက်အလက်တွေ ထည့်ထားတဲ့ db.php ဆိုတာကို ပြန်ခေါ်ပေးဖို့ လိုပါတယ်။ ဒါကြောင့် တတိယ တစ်ကြောင်းဖြစ်တဲ ့include(‘db.php’); ဆိုတာကို ရေးပေးဖို့ လိုပါတယ်။

နောက်တစ်ကြောင်းကတော့ $connect ဆိုတဲ့ variable ပါ။ အဲဒီအထဲကို mysql_connect ဆိုတဲ့ function ကိုသုံးပြီး database ကိုချိတ်ဆက်ထားတဲ့ အချက်အလက်တွေ ထည့်ပေးပါတယ်။ mysql_connect ဆိုတဲ့ Function ကို လေ့လာချင်တယ် ဆိုရင် ဒီနေရာ မှာ လေ့လာနိုင်ပါတယ်။ အကယ်၍ ချိတ်ဆက် မရခဲ့ရင်တော့ Unable to connect to the database server at this time ဆိုတဲ့ Error တက်လာမှာ ဖြစ်ပါတယ်။

နောက်တစ်ခုက MySQL ထဲက Database ကို သွားချိတ်တာပါ။ mysql_select_db ဆိုတဲ့ function ကိုသုံးပါတယ်။ mysql_select_db ကို လေ့လာချင်တယ် ဆိုရင် ဒီနေရာ မှာ လေ့လာနိုင်ပါတယ်။ အဓိက passing values နှစ်ခုကတော့ $database နဲ့ $connect ပါ။ $database ကိုတော့ db.php မှာ သတ်မှတ်ပေးခဲ့ပြီး ဖြစ်ပါတယ်။ $connect ကိုတော့ အပေါ်က စာကြောင်းက ရမှာ ဖြစ်ပါတယ်။ အဲဒီနေရာမှာလည်း database ကို ချိတ်မရရင် Unable to connect to the database at this error ပြဦးမှာ ဖြစ်ပါတယ်။ အဲဒီအဆင့်ထိပြီးသွားရင် database ကို ချိတ်ဆက်ပြီး ဖြစ်စေပါတယ်။ Database နဲ့ ပတ်သက်တဲ့ အချက်အလက်တွေကို index.php မှာ တစ်ပေါင်းတည်း ရေးလို့ရပေမယ့် ဖိုင်ခွဲပြီး ရေးရခြင်း အကြောင်းအရင်းကတော့ Security အတွက် ဖြစ်ပါတယ်။

Form မှ တစ်ဆင့် အချက်အလက်ပို့လွတ်ခြင်းများကို စစ်ဆေးခြင်း

ဒီအပိုင်းကတော့ အသုံးပြုသူ User အနေနဲ့ Form ကနေ တစ်ဆင့် အချက်အလက်တွေကို ပို့လား၊ မပို့ဘူးလားဆိုတာကို စစ်ဆေးတာ ဖြစ်ပါတယ်။

        // checks the POST to see if something has been submitted
        if(isset($_POST['send'])) {
            // are any of the fields empty? the || means 'or'
            if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['post'])) {
                echo('<p class="error">You did not fill in a required field.</p>');
            } else {

if ဆိုတဲ့ statement နဲ့ စစစ်ပါတယ်။ ပထမ send ဖြစ်မဖြစ် စစ်ပါတယ်။ ဒုတိယ name, email, post စတာတွေကို စစ်ပါတယ်။ အဲဒီလို စစ်လို့ တစ်ခုခုလိုနေရင် You did not fill in a required field. ဆိုပြီး Error ပြမှာ ဖြစ်ပါတယ်။ သုံးသွားတဲ့ function တွေကတော့ isset နဲ့ empty တို့ ဖြစ်ပါတယ်။ ဆက်ရေးရမယ့် အပိုင်းကတော့

                // if there are no empty fields, insert into the database:

                // escape special characters to stop xss and sql injecting
                // we take the 'name' and 'post' parts from the POST
                // and run it through htmlspecialchars()
                // this stops users sending HTML code, as it could be malicious
                //
                // also runs through mysql_real_escape_string()
                // stops users sending SQL code, which could be used to access the db
                $name = htmlspecialchars(mysql_real_escape_string($_POST['name']));
                $email = htmlspecialchars(mysql_real_escape_string($_POST['email']));
                $post = htmlspecialchars(mysql_real_escape_string($_POST['post']));

                    // this is our SQL string to insert shouts into db
                    $sql = "INSERT INTO shouts SET name='$name', email='$email', post='$post', ipaddress='$ipaddress';";

                        // we run the SQL string now
                        // if it succeeds, display message
                        if (@mysql_query($sql)) {
                            echo('<p class="success">Thanks for shouting!</p>');
                        } else {
                            // if it errors, send message
                            echo('<p class="error">There was an unexpected error when posting your shout.</p>');
                        }
            }
        }

ပထမဦးဆုံး Line သုံးကြောင်းမှာတော့ htmlspecialchars(), mysql_real_escape_string() ဆိုတဲ့ function နှစ်ခုကို သုံးတာ တွေ့ရပါလိမ့်မယ်။ အဲဒီ function နှစ်ခုအတွက် လိုအပ်တဲ့ Variable တွေလည်း Passing လုပ်ပေးရပါတယ်။ တစ်ခုချင်းစီ ရှင်းပြရမယ်ဆိုရင်

htmlspecialchars() ကို အဓိကသုံးရခြင်း အကြောင်းအရင်းကတော့ HTML Code တွေ ထည့်ပြီး Submit မလုပ်နိုင်အောင် ဖြစ်ပါတယ်။ အဲဒီလို မကာကွယ် ထားတဲ့အခါ အခြားသူတွေ အနေနဲ့ HTML Code တွေကို ကိုယ့် Database ထဲထည့်ပြီး နှောက်ယှက်နိုင်ပါတယ်။ ဒီထက်ပိုဆိုးတာက Javascript code တွေ ထည့်ပြီး အနှောက်အယှက် ပေးတာပါပဲ။

mysql_real_escape_string() ကတော့ အပေါ်က htmlspecialchars() နဲ့ ဆင်ပါတယ်။ ဒါပေမယ့်သူကတော့ မလိုလားအပ်တဲ့ SQL Query တွေလှမ်း မလုပ်အောင် ရည်ရွယ်ပါတယ်။ တစ်ခုက HTML, Javascript တွေကို တားတာ ဖြစ်ပြီး နောက်တစ်ခုကတော့ SQL Query တွေကို တားတာ ဖြစ်ပါတယ်။ SQL Injection လို့ခေါ်တဲ့ SQL ထဲကို ဝင်ပြီး အချက်အလက်တွေ ခိုးတာ အချက်အလက်တွေ ဖျက်တာ ပြင်တာတွေ ရှောင်ရှားနိုင်ဖို့ ဖြစ်ပါတယ်။

နောက်ဆုံး အပိုင်းကတော့ SQL Query တစ်ခုကို ဖန်တီးပြီး User ထည့်လိုက်တဲ့ အချက်အလက်တွေကို Database ထဲ ထည့်တာ ဖြစ်ပါတယ်။ အကယ်၍ မှန်မှန်ကန်ကန် ပြီးသွားတယ်ဆိုရင် Thanks for shouting! ဆိုပြီး ပြပေးမှာ ဖြစ်ပေမယ့် တစ်ခုခုမှားနေရင်တော့ There was an unexpected error when posting your shout. ဆိုပြီး error ပြမှာ ဖြစ်ပါတယ်။

မူလရှိပြီးသား အချက်အလက်များ ပြန်ခေါ်ခြင်း

ဒီအပိုင်းမှာတော့ နဂိုရှိပြီးသား Shout လုပ်ထားတဲ့ အချက်အလက်များကို ပြန်ခေါ်မှာ ဖြစ်ပါတယ်။ အရင်ရှိပြီးသား အချက်အလက်ထဲက ၈ ခုကိုပြန်ခေါ်မှာ ဖြစ်ပါတယ်။

        // now we retrieve the 8 latest shouts from the db
        $query = "SELECT * FROM shouts ORDER BY `id` DESC LIMIT 8;";

        // run the query. if it fails, display error
        $result = @mysql_query("$query") or die('<p class="error">There was an unexpected error grabbing shouts from the database.</p>');

        ?><ul><?
        // while we still have rows from the db, display them
        while ($row = mysql_fetch_array($result)) {

            $ename = stripslashes($row['name']);
            $eemail = stripslashes($row['email']);
            $epost = stripslashes($row['post']);

            // Woop! We can use Gravatars aswell!!
            $grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=".md5(strtolower($eemail))."&size=70";

            echo('<li><div class="meta"><img src="'.$grav_url.'" alt="Gravatar" /><p>'.$ename.'</p></div><div class="shout"><p>'.$epost.'</p></div></li>');

        }
        ?></ul><?

    ?>

ပထမဦးဆုံး စာကြောင်းကတော့ $query ဆိုတဲ့ variable ထဲကို sql query string တစ်ခု ထည့်တာဖြစ်ပါတယ်။ ORDER BY DESC LIMIT 8 ဆိုတဲ့အတွက် စီတဲ့အခါ id တွေကို နောက်ဆုံးကနေ ပြန်စီမယ်။ ရှစ်ခုပဲ လိုချင်တယ် ဆိုတဲ့ အဓိပ္ပါယ် သက်ရောက်ပါတယ်။

ဒုတိယ စာကြောင်းမှာတော့ $result ဆိုတဲ့ variable ထဲကို @mysql_query() ဆိုတဲ့ function သုံးပြီး MySQL ထဲက Data တွေကို လှမ်းယူပါတယ်။ အဲဒီနေရာမှာ @ ထည့်ထားတာကတော့ Error Escaping လို့ အဓိပ္ပါယ်ရပါတယ်။ function တွေရှေ့မှာ အဲဒီလို ထည့်ထားရင် Error တွေ ပြနေတာ ရှောင်လို့ ရပါတယ်။ အဲဒီ function မှာ $query ဆိုတဲ့ variable ကိုထည့်ပေးပြီး အချက်အလက်တွေကို Database က လှမ်းယူပါတယ်။ ယူလို့ မရရင်တော့ ထုံးစံအတိုင်း die ဆိုပြီး error ပြပါတယ်။

stripslashes() ကတော့ mysql_real_escape_string() မှာ ထည့်ခွင့်ပြုနိုင်ခြေ ရှိခဲ့တဲ့ / \ တို့ စတာတွေကို ဖယ်ရှားပစ်တာပါ။

$grav_url ကတော့ Gravatar ဆိုတဲ့ Site ကနေ email address နဲ့ ဆိုင်တဲ့ avatar တွေကို ခေါ်ဖို့ ဖြစ်ပါတယ်။

အဲဒါတွေ ပြီးသွားပြီး ဆိုရင်တော့ echo ဆိုပြီး output ပြန်ထုတ်ပေးပါတယ်။ အဲဒီလို output ထုတ်ပေးတဲ့ နေရာမှာ Gravatar, Name နဲ့ Shout တွေ ပါလာမှာ ဖြစ်ပါတယ်။ ရှေ့ဆက်ပြီး သွားရမယ့် အပိုင်းကတော့ User တွေ ရိုက်ထည့်မယ့် Shout တွေကို ထည့်ဖို့ နေရာအတွက် ဖြစ်ပါတယ်။

User Input အတွက် Form

ဒီအပိုင်းမှာတော့ User အတွက် Data ထည့်လို့ရမယ့် Form အပိုင်းမှာ ရေးရမယ့် Script ကတော့

    <!-- at the bottom of the page, we display our comment form -->
    <form action="<?php $self ?>" method="post">
    <h2>Shout!</h2>
    <div class="fname"><label for="name"><p>Name:</p></label><input name="name" type="text" cols="20" /></div>
    <div class="femail"><label for="email"><p>Email:</p></label><input name="email" type="text" cols="20" /></div>
    <textarea name="post" rows="5" cols="40"></textarea>
    <input name="send" type="hidden" />
    <p><input type="submit" value="send" /></p>
    </form>

  </div><!--/content-->
  <div id="boxbot"></div>

</div><!--/container-->

</body>
</html>

အပေါ်ဆုံးမှာ သတ်မှတ်ထားခဲ့တဲ့ Variable ဖြစ်တဲ့ $self ကို အခုမှာ ပြန်သုံးပါတယ်။ POST Method ကို အသုံးပြုပြီး Data တွေကို ပို့လွတ်ပါတယ်။ နောက်ဆုံးမှာတော့ HTML တွေကို ပြန်ပိတ်မှာ ဖြစ်ပါတယ်။ ဒီအဆင့်ထိ ရောက်ရင်တော့ Run ကြည့်ရင် Run ကြည့်လို့ရပါပြီ။ ဒါပေမယ့် ဘာစတိုင်မှာ ထည့်မရတော့ ပြောင်ကြီး ဖြစ်နေပါလိမ့်မယ်။

Shoutbox Plain

Styling

နောက်ဆုံးအပိုင်းဖြစ်တဲ့ Styling ဆိုတဲ့အပိုင်းမှာတော့ စတိုင်ကျကျလေး ဖြစ်သွားအောင် ပြင်မှာ ဖြစ်ပါတယ်။ အဲဒီအတွက် images ဆိုတဲ့ folder လေးတစ်ခု ဆောက်လိုက်ပါ။ ပြီးရင် အောက်မှာ ပေးထားတဲ့ file တွေကို ထည့်လိုက်ပါ။

style.css ဆိုတဲ့ဖိုင်ကို အစောပိုင်းကတည်း ဆောက်ပြီ ဖြစ်ပါတယ်။ အဲဒီအထဲကို အောက်မှာ ပေးထားတဲ့ CSS Code ကို ကူးထည့်လိုက်ပါ။

* {
margin: 0;
padding: 0;
}

body {
background: #323f66 top center url("images/back.png") no-repeat;
color: #ffffff;
font-family: Helvetica, Arial, Verdana, sans-serif;
}

h1 {
font-size: 3.5em;
letter-spacing: -1px;
background: url("images/shoutbox.png") no-repeat;
width: 303px;
margin: 0 auto;
text-indent: -9999em;
color: #33ccff;
}

h2 {
font-size: 2em;
letter-spacing: -1px;
background: url("images/shout.png") no-repeat;
width: 119px;
text-indent: -9999em;
color: #33ccff;
clear: both;
margin: 15px 0;
}

h5 a:link, h5 a:visited {
color: #ffffff;
text-decoration: none;
}

h5 a:hover, h5 a:active, h5 a:focus {
border-bottom: 1px solid #fff;
}

p {
font-size: 0.9em;
line-height: 1.3em;
font-family: Lucida Sans Unicode, Helvetica, Arial, Verdana, sans-serif;
}

p.error {
background-color: #603131;
border: 1px solid #5c2d2d;
width: 260px;
padding: 10px;
margin-bottom: 15px;
}

p.success {
background-color: #313d60;
border: 1px solid #2d395c;
width: 260px;
padding: 10px;
margin-bottom: 15px;
}

#container {
width: 664px;
margin: 20px auto;
text-align: center;
}

	#boxtop {
	margin: 30px auto 0px;
	background: url("images/top.png") no-repeat;
	width: 663px;
	height: 23px;
	}

	#boxbot {
	margin: 0px auto 30px;
	background: url("images/bot.png") no-repeat;
	width: 664px;
	height: 25px;
	}

	#content {
	margin: 0 auto;
	width: 664px;
	text-align: left;
	background: url("images/bg.png") repeat-y;
	padding: 15px 35px;
	}

    #content ul {
    margin-left: 0;
    margin-bottom: 15px;
    }

    #content ul li {
    list-style: none;
    clear: both;
    padding-top: 30px;
    }

        #content ul li:first-child {
        padding-top:0;
        }

    .meta {
    width: 85px;
    text-align: left;
    float: left;
    min-height: 110px;
    font-weight: bold;
    }

        .meta img {
        padding: 5px;
        background-color: #313d60;
        }

        .meta p {
        font-size: 0.8em;
        }

    .shout {
    width: 500px;
    float: left;
    margin-left: 15px;
    min-height: 110px;
    padding-top: 5px;
    }

    form {
    clear: both;
    margin-top: 135px !important;
    }

        .fname, .femail {
        width: 222px;
        float: left;
        }

        form p {
        font-weight: bold;
        margin-bottom: 3px;
        }

        form textarea {
        width: 365px;
        overflow: hidden; /* removes vertical scrollbar in IE */
        }

        form input, form textarea {
        background-color: #313d60;
        border: 1px solid #2d395c;
        color: #ffffff;
        padding: 5px;
        font-family: Lucida Sans Unicode, Helvetica, Arial, Verdana, sans-serif;
        margin-bottom: 10px;
        }

အဲဒီအဆင့်ပြီးသွားရင်တော့ အောက်မှာ ပြထားတဲ့အတိုင်း စတိုင်ကျတဲ့ Shoutbox လေးတစ်ခု ရလာမှာ ဖြစ်ပါတယ်။

Final Output

ဒီ Shoutbox မှာ Validation Check တွေ အများကြီး လုပ်ဖို့ လိုနေပါသေးတယ်။ အဲဒီအပိုင်းတွေကို ရှေ့ဆက်ရေးသွားပါ့မယ်။ အဲဒီအပြင် Shout List တွေကို ပြနိုင်မယ် admin panel တစ်ခုလည်း လိုဦးမှာ ဖြစ်ပါတယ်။ အဲဒီလို အဆင့်ဆင့်ရေးသွားဖို့ စိတ်ကူးထားပါတယ်။ Source Code အပြည့်အစုံ လိုချင်တယ် ဆိုရင်တော့

tutsplus မှ Shoutbox with php and mysql ကို စမ်းသပ်ရေးသားထားပါသည်။

Facebook comments:

9 Responses

  1. fokhwar says:

    ကျေးဇူးပဲ ကိုပီဇီရေ ဒါမျိုးလေးတွေ ဆက်ရေးပါဦး :)

  2. hnin si phyu says:

    အရမ်း ကျေးဇူး တင်တယ်။ အစ်ကို ကျန်းမာပါစေ။

  3. tulip says:

    Wow!

    Thanks million brother!..
    really thanks

    May you be happy and healthy!!!!!

    :)

  4. HM2 says:

    Nice one.thanks bro.

  5. tulip says:

    ကို php crazy ကို ဘယ်လို ဆက်သွယ်လို ့ရနိုင်မလဲရှင်..

    အစ်ကို php crazy ရဲ ့မေးလ်ကိုလိုချင်ပါတယ်ရှင့်..

    ကျေးဇူးပါ.

  6. zzzzz says:

    I run ur source code but I have an error with this…

    “Unable to connect to the database server at this time.”

    Please help me!

  7. tulip says:

    I run source code and tested your project.It is ok.
    Thanks alot brother.
    I will be waiting your new project and other.
    May you be happy!!!!

  8. @zzzzz Check your code which contain the line you describe that is (“Unable to connect to the database server at this time.”) and then you’ll be fine.

    @phpcrazy Thanks! I’ve been tried. I love it.

Leave a comment


*