ចែក​រំលែក​គំនិត​ និង​ចំណេះដឹង​ជាមួយគ្នា

ចំនាយ​ពេល​ ៤ ម៉ោងកន្លះ​ដើម្បី​បង្កើត​ Web Template អត់ដេកអត់ពួន

Posted in ពត៌មាន by ប្រាក់ សុភី on ខែ​មីនា 5, 2009
cdaily

The Cambodia Daily Template

យប់​មិញ​នេះ​ ទាល់តែម៉ោង​២.៣០រំលង​អទ្រាត​បាន​ចួល​គេង​ ព្រោះ​នឹក​ឃើញចង់​ រចនា Template Website មួយ​មើល​យ៉ាង​មិច​ទៅ​វិញ។ រូបខាងលើ​នេះ​ជា​លទ្ធផល​​  អត់ដេក​អត់​ពួន ៤ ៥​ម៉ោងរបស់ខ្ញុំ។

Template នេះ​ខ្ញុំ​រចនា​ឡើង​​សំរាប់គេហទំព័រ​ សាពត៌មាន ទស្សនា​វដ្តី ទូរទស្សន៍ និយាយ​អោយ​ចំទៅ​គឺ​សំរាប់ បណ្តាញ​សាពត៌មាន។

វា support ជាមួយ IE6+,  Firefox1+,  Opera,  Safari2,  Google Chrome។ ប្រសិន​ប្រិមិត្ត​មាន​ចំណាប់​អារម្មណ៍ ហើយ​ចង់រចនា​ Template សំរាប់​ប្លក់​ផ្ទាល់ខ្លួន​​នោះ​សូម​ទាក់​ទង​មក​ខ្ញុំ ខ្ញុំ​ជួយ​រចនាជួន​ដោយមិន​គិត​ថ្លៃ​អ្វី​ទាំង​អស់។

Demo

Advertisements
Tagged with: , , ,

អ្វីទៅ​ជា Cheat Sheet ?

Posted in HTML, Javascript, php by ប្រាក់ សុភី on ខែ​មីនា 2, 2009

html-cheat-sheet-v1

Cheat Sheet ជាដ្យាក្រាមបង្រូម​មួយ ​ដែល​បង្ហាញ​​ពី​តូនាទី សកម្ម​ភាព រចនា​សម្ព័ន្ធ​ របស់កម្មវិធីអ្វីមួយ។ សំរាប់​ Programmer ឬ Developer ការប្រើ​ Cheat Sheet ពិត​ជាមានផល​ប្រយោជន៍​ខ្លាំង​ណាស់​ យើង​មិន​ចាំបាច់​ចំណាយ​ពេល​ច្រើន​ក្នុង​ការ​ស្វែង​រក​អ្វីមួយ​ក្នុងកម្ម​វិធីនោះ តូយ៉ាងដូច​ជា HTML Cheat Sheet (រូបខាងលើ) វាបាន​បង្ហាញ​មក​ទាំងអស់ នូវ HTMl Tag ដែល​​យើង​អាច​ស្វែង​រក​បាន​ក្នុង​រូបភាពខាងលើ ។

នៅក្នុង​ Cheat Sheet នេះ​បាន​បែង​ចែក​ទៅ​តាម​ប្រភេទ​របស់វា ដួច​ជានៅ​ក្នុង​ HTML យើង​អាច​សែ្វងរក​ Tab និមួយ​ទៅ​តាម​ប្រភេទ​របស់វា​ដូច Link, Table, Form, Object…

មិន​ថា​តែកម្ម​វិធី ភាសា សូម្បី​វត្ថុ​អីមួយដែល​យើង​បាន​បង្កើត​ យើង​ក៏អាច​បង្កើត​ Cheat Sheet បាន​ផង​ដែរ វា​ជាការ​បង្រូម​ពីការ​ពន្យល់​នៃការ​ប្រើប្រាស់វត្ថុដែល​យើង​បាន​បង្កើត​នោះ​ សំរាប់​អ្នក​ប្រើ​ទួទៅ។

css-cheat-sheet-v2javascript-cheat-sheet-v1

សូមទាញយក Cheat Sheet បន្ថែមដូចខាងក្រោម​នេះ

– PHP 

– Cakephp 

-Prototype 

-Jquery

-Mootools

-SEO (Search Engine Optimization)

Download

សាកល្បង Ajax ជាមួយភាសា Server-Side PHP

Posted in កម្មវិធីទូរស័ព្ទ by ប្រាក់ សុភី on ខែមករា 31, 2009

Source Code

Ajax មកពីពាក្យ Asynchronous JavaScript and XML វាមានដើមកំនើតក្នុង ឆ្នាំ2005 សូមមើលអត្ថបទរបស់លោក Jesse James Garrett។Ajax បានធ្វើអោយ Web Application មានការពេញនិយមជាង Desktop Application នាពេលបច្ចុប្បន្ននេះ ព្រោះវាអាចភ្ជាប់ទៅកាន់ Sever ដោយមិនចាំបាច់ Refresh Page ដូចជាភាសា Server-Side(PHP, ASP.NET, JSP…)។

សូមមិនរៀបរាប់ច្រើនទេអំពី Ajax សូមើល http://www.w3schools.com បន្ថែម។ ខាងក្រោមនេះជាឧទាហរណ៍ ពីការប្រើប្រាស់ Ajax សង្ឃឹមថានេះ ជាឧទាហរណ៍មួយជួយបង្ហាញផ្លូវដល់អ្នកដែលចង់ស្វែងយល់អំពី Ajax។

dknowknow

១ បង្កើត index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>AJAX with PHP: Quickstart</title>
    <script type="text/javascript" src="ajax.js"></script>
	<style type="text/css">
		.message{
			color:red;
		}
	</style>
  </head>
  <body onload='process()'>
    សូមបញ្ចួលឈ្មោះត្រង់នេះ: 
    <input type="text" id="myName" />
    <div id="divMessage" class="message"></div>
  </body>
</html>

សំរាប់បង្ហាញ message ពី ajax សូមមើលរូប ខាងក្រោម

 

div message

២បង្កើត ajax.js

/*
*author: PRAK Sophy
*email: sophy.prak@gmail.com
*website: https://kooms.wordpress.com
*/
// រក្សាទុក  XMLHttpRequest object ក្នុង xmlHttp variable ពី function createXmlHttpRequestObject()
var xmlHttp = createXmlHttpRequestObject(); 

// function ចាប់យក XMLHttpRequest object ពី browser
function createXmlHttpRequestObject() 
{	
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // ប្រសិនបើយើងដំណើការលើ Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  //សំរាប់ Mozilla ឬ browsers ផ្សេងទៀត
  else
  {
    try 
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // return ការបង្កើត object ឬ បង្ហាញសារ error ប្រសិនបើយើងមិនអាចបង្កើត xmlHttp
  if (!xmlHttp)
 
    alert("មិនអាចបង្កើត XMLHttpRequest object.");
  else 
    return xmlHttp;
}

// បង្កើត asynchronous HTTP request ដោយប្រើ XMLHttpRequest object 
function process()
{
  //ដំណើរការប្រសិនបើ xmlHttp object មិនរវល់
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
    // ចាប់យកឈ្មោះដែលបានបញ្ចួលដៅយអ្នកប្រើប្រាសពី form
    name = encodeURIComponent(document.getElementById("myName").value);
    // ប្រតិបត្តការ firstajax.php page ពី  server
    xmlHttp.open("GET", "firstajax.php?name=" + name, true);  
    // define the method to handle server responses
    xmlHttp.onreadystatechange = handleServerResponse;
    // make the server request
    xmlHttp.send(null);
  }
  else
    // ប្រសិនបើ connection ជាប់រវល់ វានឹងព្យាយាមម្តងទឿត បន្ទាប់ពី ១ វិនាទីក្រោយមក  
    setTimeout('process()', 1000);
}

// executed automatically when a message is received from the server
// ដំណើរការដោយស្វ័យប្រវត្ត ពេលដែលសាត្រូវបានបញ្ជួនពី Server
function handleServerResponse() 
{
  // ដំណើការ ប្រសិនបើ transaction ត្រូវបានបំពេញចប់
  if (xmlHttp.readyState == 4) 
  {
    // status of 200 indicates the transaction completed successfully
	//status = 200 មានន័យថា Transaction បានបញ្ចប់ដោយជោកជ័យ
    if (xmlHttp.status == 200) 
    {
	 //ចំលងចេញ XML ទទួលបានពី server
      xmlResponse = xmlHttp.responseXML;
      // បានជា document element (the root element) of the XML structure
      xmlDocumentElement = xmlResponse.documentElement;
      // get the text message, which is in the first child of
      // the the document element
      helloMessage = xmlDocumentElement.firstChild.data;
      // update the client display using the data received from the server
      document.getElementById("divMessage").innerHTML = 
                                            '<i>' + helloMessage + '</i>';
      // restart sequence
      setTimeout('process()', 1000);
    } 
    // a HTTP status different than 200 signals an error
    else 
    {
      alert("មានបញ្ហាកើតឡើងនៅពេលដែល access​ ទៅកាន់ server: " + xmlHttp.statusText);
    }
  }
}

៣ បង្កើត file firstajax.php
ជា PHP Script នៅផ្នែក Server-side ajax អាចដំណើការបាន ដោយពឹងផ្អែកទៅ ផាសា Server-Side។
ត្រូវបានហៅមកប្រើដោយកូដ javascript ក្នុង ajax.js នៅផ្នែក Client-Side ។

<?php
// we'll generate XML output
header('Content-Type: text/xml');
// generate XML header
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// create the <response> element
echo '<response>';
 
// retrieve the user name
$name = $_GET['name'];
// generate output depending on the user name received from client
$userNames = array('KOOMS', 'SOPHY', 'AROCORE', '4KHMER', 'YODA');
if (in_array(strtoupper($name), $userNames))
  echo 'សូស្តី ' . htmlentities($name) . '!';
else if (trim($name) == '')
  echo 'អាចប្រាប់ខ្ញុំបានទេ តើអ្នកឈ្មោះអី?';
else
  echo htmlentities($name) . ', ខ្ញុំមិនស្គាល់អ្នកទេ';
// close the <response> element
echo '</response>';
?>

Source Code

Tagged with: , , ,

បង្កើត Pagination ជាមួយ PHP និង​ Mysql

Posted in HTML, php by ប្រាក់ សុភី on ខែមករា 29, 2009

pagination-main

វិធីបំបែកទំព័រចេញ​ជា​ផ្នែកៗ ជាគំនិតមួយដែលកំពុងពេញនិយម សំរាប់អ្នកបង្កើត​ និង រចនា គេហទំព័រ។ វិធីនេះភាកច្រើន គេប្រើនៅពេលដែលទាញទិន្នន័យចេញពី Database ហើយទិន្នន័យនោះមានចំនួនច្រើន គេត្រូវបំបែកវា​ដាក់ជាច្រើនទំព័រ ដើម្បីងាយមើល និងធ្វើអោយគេហទំព័រដំណើរការលឿនទៀតផង។

ខាងក្រោមនេះជាការបង្ហាញពីការ បំបែកទំព័រជាផ្នែកៗ ជាមួយភាសា PHP និង​ Mysql ដែលខ្ញុំបានប្រើជាមួយ គំរោងរបស់ខ្ញុំកន្លងមក។

១.បង្កើត Database និង Table

ដំបូងយើងត្រូវមាន Database រូចហើយត្រូវបង្កើត Table ។ ខ្ញុំបង្កើតដាតាបេស មួយឈ្មោះ learnphp ហើយ table ឈ្មោះ product

CREATE TABLE `product` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(50) NOT NULL default ”,
`price` decimal(10,2) NOT NULL default ‘0.00’,
`on_promotion` tinyint(4) NOT NULL default ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=57 ;

រូចបញ្ចូលទិន្នន័យខាងក្រោមនេះ(សូមបញ្ជាក់លោកអ្នកអាចបញ្ចួលវាអោយច្រើនជានេះក៏បានដែរ)
INSERT INTO `product` (`id`, `name`, `price`, `on_promotion`) VALUES
(1, ‘Santa Costume’, ‘14.99’, 0),
(2, ‘Medieval Lady’, ‘49.99’, 1),
(3, ‘Caveman’, ‘12.99’, 0),
(4, ‘Costume Ghoul’, ‘18.99’, 0);

២. បង្កើត file ‘config.php’
file នេះបានកំនត់ Constant មួយចំនូនដែលចាំបាច់ភ្ជាប់ទៅកាន់ Database

<?php
// defines database connection data
define('DB_HOST', 'localhost');//host name
define('DB_USER', 'root');// Database user
define('DB_PASSWORD', '');//database password
define('DB_DATABASE', 'learnphp'); //database name
// defines the number of visible rows in grid
define('ROWS_PER_VIEW', 10);//ចំនូនដែលត្រូវបង្ហាញក្នុង ទំព័រនីមួយៗ
?>

៣. បង្កើត Class ‘database.class.php’
class នេះមានទូនាទីទាញយក ទិន្នន័យពី database, កំនត់ចំនួន Product ដែលត្រូវបង្ហាញ និងចំនួនទំព័រដែលត្រូវបំបែកចេញ។
ប្រហែលប្លែកពីអ្នករាល់គ្នាធ្លាប់ប្រើហើយមើលទៅ ចំពោះការភ្ជាប់ កាន់ database ខ្ញុំបានប្រើ class Mysqli ដើម្បីភ្ជាប់ទៅកាន database។ ព្រោះ Mysqli
មានលក្ខណះជា OOP ហើយងាយស្រូលប្រើ វា support តែ PHP5 ឡើងទៅ។

<?php
/**
*Database class to connect to database
*author: Prak Sophy
*email:sophy.prak@gmail.com
*phone:011735918
*date:28-01-2009
*/
require_once('config.php');
class Database
{
		/*
		 * ចំនួនទំព័រសរុប
		 */
		public $totalPages;
		/*
		 * ចំនួន product
		 */
		public $itemCount;
		/*
		 * ទំព័រដែលត្រូវផ្តល់អោយ
		 */
		public $returnedPage;
		/*
		 * database handler
		 * to use Mysqli Class support php 5.x
		 */
		private $mMysqli;
		/*
		 * Table name to use
		 */
			private $tableName;
		/*
		 * Class Contructor
		 */
	  function __construct($table)
	  {
	    // create the MySQL connection
	    $this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD,
	                                DB_DATABASE);
	     $this->tableName = $table;
	    // call countAllRecords to get the number of grid records
	    $this->itemCount = $this->countAllRecords();
	  }

	  // class destructor, closes database connection
	  function __destruct()
	  {
	    $this->mMysqli->close();
	  }
	  /*
	   * count all products
	   * @return number of product rows
	   */
	  private function countAllRecords()
	  {
	   		// Query select count product
	   		$query = "SELECT COUNT(*) FROM $this->tableName";
	   		if ($result = $this->mMysqli->query($query))
      		{
      			 $row = $result->fetch_row();
      			  $result->close();
      		}
      		return $row[0];
	  }
	  public function readPages($page)
	  {
	  	// create the SQL query that returns a page of products
    	$query = $this->createSubpageQuery("SELECT * FROM $this->tableName", $page);
    	if ($result = $this->mMysqli->query($query))
    	{
    		$i=0;
    		while($rows = $result->fetch_assoc())
    		{

    			$row[$i]['id'] = $rows['id'];
    			$row[$i]['name'] = $rows['name'];
    			$row[$i]['price'] = $rows['price'];
    			$row[$i]['on_promotion'] = $rows['on_promotion'];
    			$i++;
    		}
    		//return row of product
    		return $row;
    		$result->close();
    	}
	  }
	  private function createSubpageQuery($query,$pageNo)
	  {
	  	// if we have few products then we don't implement pagination
	    if ($this->itemCount <= ROWS_PER_VIEW)
	    {
	      $pageNo = 1;
	      $this->totalPages = 1;
	    }
	    // else we calculate number of pages and build new SELECT query
	    else
	    {
	      $this->totalPages= ceil($this->itemCount / ROWS_PER_VIEW);
	      $start_page = ($pageNo - 1) * ROWS_PER_VIEW;
	      $query.= ' LIMIT ' . $start_page . ',' . ROWS_PER_VIEW;
	    }
	    // save the number of the returned page
	    $this->returnedPage = $pageNo;
	    // returns the new query string
	    return $query;
	  }
}
?>

៤. បង្កើត file ‘product.php’ ដើម្បី test class ‘database.class.php’

<style type="text/css">
	a span{
		margin-left:2px;
	}
</style>
<?php
require_once 'database.class.php';
//request page number
$page = intval($_REQUEST&#91;'page'&#93;);
//page number 0 or less than 0
if($page <= 0)
	$page =1;
$products = new Database('product');
//read page and get products
$rows = $products->readPages($page);
//Write pagination
echo 'Pages:';
for($i=1; $i <= $products->totalPages; $i++)
{
	echo '<a href="products.php?page='.$i.'"><span>'.$i.'</span></a>';
}
?>
<table border="1" cellspacing="0" width="400">
<thead>
<th>Id</th>
<th>Name</th>
<th>Price</th>
</thead>
</tbody>
<?php
if(count($rows )>0)
{
	foreach ($rows as $row )
	{
		echo '<tr><td>'.$row['id'].'</td>';
		echo '<td>'.$row['name'].'</td>';
		echo '<td>'.$row['price'].'</td></tr>';
	}
}
?>
</tbody>
</table>

ទាញយកកូដទាំងមួល

Tagged with: ,
%d bloggers like this: