លុប HTML tags ចេញពី data ផ្ញើពី Form ជាមួយ strip_tags
strip_tags function សម្រាប់ PHP Developer ពិតជាស្គាល់ច្បាស់អំពីវា តែសម្រាប់ New Developer ពិតជាត្រូវការ ព្រោះ strip_tags មាននាទីក្នុងការលុប HTML, XML, PHP tags ជាដើម។
Function មួយនេះពិតជាមានសារប្រយោជន៍ណាស់ ប្រសិនបើយើងចង់លុប tags របស់ HTML, XML, PHP ដែលបាន send មកជាមួយ data(ជាពិសេស form properties ដែលអនុញ្ញាតិ្តអោយ User បញ្ចូល data ដូចជា Text field, Tearea ជាដើម)ពី form របស់ Client-side ហើយអនុញ្ញាត tags ណាខ្លះ អាចប្រើបាន ដើម្បីរក្ស សុវត្ថិភាពរបស់ Server។
Syntax:
string strip_tags ( string $str [, string $allowable_tags ] )
$str: ជា string ផ្ញើមក
$allowable_tags: ជា optional parameter ដែលអនុញ្ញាតអោយលោកអ្នក ដាក់ tags ដែលលោកមិនចង់លុបវាចេញ
Example:
<?php
$text = '<strong> Hello world </strong> some comment --><a href="http://kooms.wordpress.com">Kooms</a>';
//Remove all tags
echo strip_tags($text);
echo '<br/>'
//don't remove tags <strong> and <a>
echo strip_tags($text,'<strong><a>');
?>
Output:
Hello world some comment Kooms Hello world some comment Kooms
Load Database with Memcached
memcache module របស់ PHP ផ្ទុកនូវ procedural និង object oriented interface ដើម្បី Cache data ពី Database វាជាវិធីមួយដ៏ប្រសើក្នុងការជ្រើសរើស memcache មកប្រើ ពីព្រោះវាលឿន, ងាយស្រួល install និង ប្រើប្រាស់ ហើយវាជួយសម្រួលយ៉ាងប្រសើបំផុតក្នុងការ Load Database។
Memcache ដំណើការ standalone server ហើយវា cache object ដោយផ្ទាល់ទៅក្នុង memory និងអាចទាញយកមកប្រើវិញតាមតម្រូវការរបស់យើង។ សម្រាប់ព័ត៌មានលំអិត មើលតំណរនេះ http://www.danga.com/memcached ។
មុននិងបង្ហាញ់អំពីការប្រើប្រាស់វា សូមអ្នករាល់គ្នាចាំទុកក្នុងចិត្ត នៅចំនុចពីរយ៉ាងខាងក្រោមនេះ ៖
- Memcach ត្រូវបានប្រើ ដើម្បី cache ទិន្នន័យតូច មិនមែន Queries ដែល return results រាប់រយ រាប់នោះទេ ជាពិសេសគេប្រើញឹកញាប់ជាមួយ Repeat Queries ដែលផ្ទុកទិន្នន័យតូចៗ
- អ្នកត្រូវយកចិត្តទុកដាក់ ដល់រយៈពេលក្នុងការ Cache អ្នកប្រកដជាមិនចង់ទាញទិន្នន័យពី Cache គ្រប់នោះទេ ប្រសិនបើ result of query នោះផ្លាស់ប្តូគ្រប់នោះ ដូច្នេះហើយសូម Set Cache Duration អោយបានត្រឹមត្រូវ។ សូមមើលឧទាហរណ៍ខាងក្រោម
ឧទាហរណ៍ Website របស់អ្នកមាននាក់ទស្សនាច្រើនជាង ១សែននាក់ក្នុងមួយថ្ងៃ ហើយអ្នកចង់បង្ហាញ 10 Articles ដែលមើលច្រើនជាងក្នុងថ្ងៃនេះ។
function getTenArticle(){
$mem = new Memcache;
/* connect to memcached server */
$mem->connect('localhost', 11211) or die ("Could not connect");
if(!$tenArticles = $mem->get('tenArticles')){
$query = "SELECT * FROM posts ORDER BY num_viewed DESC LIMIT 10 ";
$tenArticles = mysql_query($query);
/*set memcache withvalue of item with key "tenArticles", compression and
expire time is 5 min*/
$mem->set('tenArticles',$tenArticle,MEMCACHE_COMPRESSED, 60*5)or die (Failed to save data at the server");
}
return $tenArticles;
}
ដំបូងខ្ញុំបង្កើត $mem ជា Object របស់ Memcache បន្ទាប់មក connect ទៅកាន Memcache Server ជាមួយ port 11211។
if(!$tenArticles = $mem->get(‘tenArticles’)) ប្រសិនបើមិនទានបាន set memcache ទេ វានឹងដំណើរការប្លក់របស់ if នេះរួចហើយវាចាប់
ផ្តើម set memcache មើមិនអញ្ចឹងទេវានឹង return $tenArticles តែម្តង់។
ទាញយក Job Announcement ពី Bongthom មកដាក់លើ Website របស់អ្នក
ចង់រកការងារមែនទេ? លោកអ្នកពិតជានឹកដល់ Bongthom.com មុនគេហើយ ព្រោះនរណាៗ ក៏ស្គាល់ដែរថា បងធំ ជា Website ធំជាងគេក្នុងស្រុកខ្មែរសម្រាប់ស្វែងរកការងារ និង ការប្រកាសលក់របស់របរផ្ទាល់ខ្លួន…។
ពេលនេះខ្ញុំសូមបង្ហាញពីវិធីសាស្ត្រ ក្នុងការទាញ Job Announcement ពី Bongthom.com មកដាក់លើទំព័រ Website របស់លោកអ្នក។ នេះជាវិធីមួយអាចធ្វើអោយទំព័ររបស់លោកអ្នក កើនឡើងនូវចំនូនអ្នកទស្សនាផងដែរ។
លោកអ្នកអាចទាញយក កូដនេះទៅដាក់បញ្ចូលនូវផ្នែកណាមួយក្នុង Website របស់លោកអ្នក ដោយឥតគិតថ្លៃ។ វាជាកូដ PHP 5 ជាមួយ Jquery( Javascript Library) ក្នុងការទាញយក Job Announcement ដោយប្រើ Ajax technology ក្នុងទាញយក ដែលមិនធ្វើអោយប៉ះពាលដល់ Speed នៃការ Load Website របស់លោកអ្នក។
Demo Download
1. index.php
< !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>Job Listing</title>
<link type="text/css" rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<div id="wrapper">
<div id="job_list">
<img src="ajax-loader.gif" /></div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$.get('jobs_list.php', function(data) {
$('#job_list').html(data);
});
//Navigation pages
});
</script>
</body>
</html>
<pre>
$.get('job_list.php', function(data) {$('#job_list').html(data);}); ជា Ajax function ទាញយក Data
ពី job_list.php រូចហើយបង្ហាញ
ទិន្នន័យទាំងអស់ ទៅ <div id="job_list">។
2. job_list.php
require_once 'RemoteConnector.php'; $url = 'http://bongthom.com/RSS/BTDCJobs.xml'; date_default_timezone_set('Asia/Bangkok'); try { $output = new Pos_RemoteConnector($url); $xml = new SimpleXMLElement($output); $i= 0; //$pages = ceil((count($xml->channel->item)/20)); $jobs = count($xml->channel->item); echo ' <h2>Bongthom Job List</h2> '; echo " <ul> <li>Total $jobs jobs avaible</li> </ul> "; foreach($xml->channel->item as $item){ $i++; ?> <strong> < ?php echo $i.'. ';?> <a href="<?php echo $item->link ?>">< ?php echo $item->title; ?></a></strong> <span>< ?php echo date('Y-m-d h:i a',strtotime($item->pubDate))?></span> < ?php echo $item->description; ?> < ?php } } catch (Exception $e) { echo $e->getMessage(); }jobs_list.php មាននាទីក្នុងការរៀបចំបង្ហាញទិន្នន័យដែលទាញមកពី Bongthom.com ដោយ Class Pos_RemoteConnector
មានទី ទាញយក Job Announcement ពី Bongthom.com ។ SimpleXMLElement ជា class របស់ PHP
សម្រាប់ Control xml file។
The best 5 Javacript Frameworks
JavaScript ជា Client-side ដែលកំពុងពេញនិយមនាពេលបច្ចុប្បន្ននេះ ព្រោះវាធ្វើអោយ គេហទំព័រមានភាពស្រស់ស្អាត ទាកទាញ រស់វើក។ JavaScript ត្រូវបានគេយកទៅប្រើច្រើនផ្នែកក្នុង គេហទំព័រដួចជា Map (Google Map, Yahoo Map…), Mail (gmail, yahoo mail…), Reader ( google reader), online documents (Google Documents), Auto-Complete នេះជាផ្នែកមួយសំខាន់ផងដែរ សំរាប់គេហទំព័រ មានគេហទំព័រជាច្រើនបានប្រើបច្ចេកទេសសំរាប់សំរួលដល់ការស្វែងរក ពេលដែលយើងចង់រកអ្វីមួយគ្រាន់តែវាយពាក្យនោះ វានឹងផ្តល់លទ្ធអោយយើងភ្លាមៗ ព្រមទាំងចំនួនពាក្យនោះផងដែរ។ Search Engine បានប្រើ Auto-Complete នេះផងដែរសំរាប់សំរួលដល់ការស្វែងរក។
ក្រៅពីនេះនៅមានផ្នែកជាច្រើនទៀដែល JavaScript អាចធ្វើបាន ជាពិសេសនោះ Ajax ជាបច្ចេកវិទ្យាដែលកំពុងពេញនិយមបំផុតនាពេលបច្ចុប្បន្នសំរាប់ Web2.0។ ហើយនៅក្នុងប្រកាស់នេះដែខ្ញុំសូមលើកយក JavaScript Framework សំខាន់ៗចំនួន ៥ ដែលកំពុងពេញនិយមជាង។
១ Jquery
Jquery ជា JavaScript Framework មួយដែលកំពុងពេញនិយម មានល្បឿនលឿនទៀតផង។ Jquery បានក៏ឡើងក្នុងឆ្នាំ ២០០៥ ដែលសរសេដោយលោក John Resig ជាស្ថាបនិកមួយរូបរបស់ Web Browser ដ៏ល្បី Firefox។ ចំពោះ Framework មួយនេះត្រូវបាន Open Source មួយចំនូនយកទៅប្រើដូចជា WordPress, Drupal..
២Prototype
Prototype ជា Framework មួយដែលចំណាសជាងគេ ហើយត្រូវបានប្រើច្រើនផងនៅក្នុងគេហទំព័រជាច្រើន។ Prototype ត្រូវបានដាកបញ្ចួលក្នុង Cakephp framework,
Ruby on rails framework ហើយ Hi5 Social Network ក៏ប្រើ Framework នេះដែរ។
៣ Mootools
Mootools ជា Object-Oriented JavaScript framework សំរាប់ JavaScript Developer ដែលមានកំរិតពីមធ្យម ដល់ កំរិតខ្ពស់ វាអនុញ្ញាតិអោយយើងសេរសេ powerful, flexible, និង cross-browser កូដ ជាមួយភាស្រស់ស្អាតរបស់វា។ Mootools ត្រូវបាន web developers ពេញចិត្តផងដែរ ហើយត្រូវបានប្រើជាមួយ Joomla CMS និង ក្រុមហ៊ុនរចនា Template មួយចំនួនទៀត។
៤ YUI
YUI ជា JavaScript Framework ពេញនិយមផងដែរ ហើយត្រូវបានប្រើ ហើយឥឡូវចេញដល់ Version 2.7.0 ។ត្រូវបានប្រើ សេវាកម្មរបស់ ក្រុមហ៊ុន Yahoo នេះ ហើយក៏មាន Web Developers ប្រើវាផងដែរ។
៥ Dojo

Dojo ជា JavaScript មួយទៀតដែលយើងអាចយកមកបង្កើត ជា Web Application បានយ៉ាងស្រស់ស្អាត។ Dojo ត្រូវបានដាក់បញ្ចួលទៅ Zend Framewrok
ចំនាយពេល ៤ ម៉ោងកន្លះដើម្បីបង្កើត Web Template អត់ដេកអត់ពួន
យប់មិញនេះ ទាល់តែម៉ោង២.៣០រំលងអទ្រាតបានចួលគេង ព្រោះនឹកឃើញចង់ រចនា Template Website មួយមើលយ៉ាងមិចទៅវិញ។ រូបខាងលើនេះជាលទ្ធផល អត់ដេកអត់ពួន ៤ ៥ម៉ោងរបស់ខ្ញុំ។
Template នេះខ្ញុំរចនាឡើងសំរាប់គេហទំព័រ សាពត៌មាន ទស្សនាវដ្តី ទូរទស្សន៍ និយាយអោយចំទៅគឺសំរាប់ បណ្តាញសាពត៌មាន។
វា support ជាមួយ IE6+, Firefox1+, Opera, Safari2, Google Chrome។ ប្រសិនប្រិមិត្តមានចំណាប់អារម្មណ៍ ហើយចង់រចនា Template សំរាប់ប្លក់ផ្ទាល់ខ្លួននោះសូមទាក់ទងមកខ្ញុំ ខ្ញុំជួយរចនាជួនដោយមិនគិតថ្លៃអ្វីទាំងអស់។
អ្វីទៅជា Cheat Sheet ?
Cheat Sheet ជាដ្យាក្រាមបង្រូមមួយ ដែលបង្ហាញពីតូនាទី សកម្មភាព រចនាសម្ព័ន្ធ របស់កម្មវិធីអ្វីមួយ។ សំរាប់ Programmer ឬ Developer ការប្រើ Cheat Sheet ពិតជាមានផលប្រយោជន៍ខ្លាំងណាស់ យើងមិនចាំបាច់ចំណាយពេលច្រើនក្នុងការស្វែងរកអ្វីមួយក្នុងកម្មវិធីនោះ តូយ៉ាងដូចជា HTML Cheat Sheet (រូបខាងលើ) វាបានបង្ហាញមកទាំងអស់ នូវ HTMl Tag ដែលយើងអាចស្វែងរកបានក្នុងរូបភាពខាងលើ ។
នៅក្នុង Cheat Sheet នេះបានបែងចែកទៅតាមប្រភេទរបស់វា ដួចជានៅក្នុង HTML យើងអាចសែ្វងរក Tab និមួយទៅតាមប្រភេទរបស់វាដូច Link, Table, Form, Object…
មិនថាតែកម្មវិធី ភាសា សូម្បីវត្ថុអីមួយដែលយើងបានបង្កើត យើងក៏អាចបង្កើត Cheat Sheet បានផងដែរ វាជាការបង្រូមពីការពន្យល់នៃការប្រើប្រាស់វត្ថុដែលយើងបានបង្កើតនោះ សំរាប់អ្នកប្រើទួទៅ។
សូមទាញយក Cheat Sheet បន្ថែមដូចខាងក្រោមនេះ
- PHP
- Cakephp
-Prototype
-Jquery
-Mootools
-SEO (Search Engine Optimization)
The best PHP frameworks for developers
សំរាប់ Web developer ពិតជាស្គាល់ខ្លះហើយ អំពី PHP Frameworks បើសិនជាយើងប្រើ Framework ទាំងនេះពិតជួយសំរូលដល់ការងារយើងច្រើនណាស់ ក្នុង Develop Website ហើយលឿនទៀតផង មិនត្រឹមតែប៉ុណ្ណឹង កូដរបស់យើងបានរៀបចំតាមលក្ខណៈស្តង់ដា MVC (Model View Controller) ដែលធ្វើអោយការងាយើងមានលក្ខណៈ ងាយស្រូលក្នុងការកែរប្រែរនៅថ្ងៃក្រោយ។ ខាងក្រោមនេះខ្ញុំសូមនែនាំ PHP Framework មួយចំនួនដែលគេពេញនិយមសព្ទថ្ងៃនេះ៖
CakePHP is a rapid development framework for PHP that provides an extensible architecture for developing, maintaining, and deploying applications.
50 Extremely Useful PHP Tools
PHP is one of the most widely used open-source server-side scripting languages that exist today. With over 20 million indexed domains using PHP, including major websites like Facebook, Digg and WordPress, there are good reasons why many Web developers prefer it to other server-side scripting languages, such as Python and Ruby. read more…
សាកល្បង Ajax ជាមួយភាសា Server-Side PHP
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។


១ បង្កើត 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 សូមមើលរូប ខាងក្រោម

២បង្កើត ajax.js
/*
*author: PRAK Sophy
*email: sophy.prak@gmail.com
*website: http://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>';
?>
បង្កើត Pagination ជាមួយ PHP និង Mysql

វិធីបំបែកទំព័រចេញជាផ្នែកៗ ជាគំនិតមួយដែលកំពុងពេញនិយម សំរាប់អ្នកបង្កើត និង រចនា គេហទំព័រ។ វិធីនេះភាកច្រើន គេប្រើនៅពេលដែលទាញទិន្នន័យចេញពី 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['page']);
//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>















4 វិចារ