Kooms

លុប​ HTML tags ចេញពី​ data ផ្ញើពី​ Form ជាមួយ strip_tags

បានដាក់ប្រកាស ក្នុង ពត៌មាន ដោយ kooms ខែ កញ្ញា 28, 2009

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

បានដាក់ប្រកាស ក្នុង ពត៌មាន ដោយ kooms ខែ កញ្ញា 25, 2009

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
មុន​និង​បង្ហាញ់​អំពីការ​ប្រើ​ប្រាស់​វា សូម​អ្នក​រាល់​គ្នា​ចាំទុក​ក្នុង​ចិត្ត​ នៅ​ចំនុច​ពីរ​យ៉ាង​ខាង​ក្រោម​នេះ ៖

  1. Memcach ត្រូវ​បាន​ប្រើ​ ដើម្បី cache ទិន្នន័យ​តូច​ មិន​មែន​ Queries ដែល​ return results រាប់រយ​ រាប់​នោះ​ទេ ជា​ពិសេស​​គេ​ប្រើ​ញឹក​ញាប់​ជាមួយ Repeat Queries ដែល​​ផ្ទុក​ទិន្នន័យ​តូចៗ
  2. អ្នក​ត្រូវ​យក​ចិត្ត​ទុក​ដាក់​ ដល់​រយៈ​ពេល​ក្នុង​ការ​ 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 with​value 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 របស់អ្នក​

បានដាក់ប្រកាស ក្នុង Javascript, php, ពត៌មាន ដោយ kooms ខែ កញ្ញា 7, 2009

ចង់​រក​ការ​ងារ​មែន​ទេ?​ លោក​​អ្នក​ពិត​ជា​នឹក​ដល់ Bongthom.com មុនគេ​ហើយ ព្រោះ​នរណាៗ ក៏​ស្គាល់​ដែរ​ថា បងធំ ជា​ Website ធំជាង​គេ​ក្នុង​ស្រុក​ខ្មែរ​សម្រាប់​ស្វែង​រក​ការ​ងារ​ និង ការ​ប្រកាស​លក់​របស់​របរ​ផ្ទាល់​ខ្លួន…។

ពេល​នេះ​ខ្ញុំ​សូម​បង្ហាញ​​ពី​វិធី​សាស្ត្រ​ ក្នុង​ការ​ទាញ​ Job Announcement  ពី​ Bongthom.com មក​ដាក់​លើ​ទំព័រ​ Website របស់លោក​អ្នក​។ នេះ​ជាវិធី​មួយ​អាច​​ធ្វើ​អោយ​​ទំព័រ​របស់​លោក​អ្នក​ កើន​ឡើង​នូវ​ចំនូន​អ្នក​ទស្សនា​ផងដែរ។

លោក​អ្នក​អាច​ទាញ​យក​ កូដ​នេះ​ទៅ​ដាក់​បញ្ចូល​នូវ​ផ្នែក​ណា​មួយ​​ក្នុង​ Website របស់​លោក​អ្នក​ ដោយ​ឥតគិត​ថ្លៃ។ វា​ជាកូដ PHP 5 ជាមួយ​ Jquery( Javascript Library) ក្នុង​ការ​ទាញ​យក​ Job Announcement ដោយ​ប្រើ​ Ajax technology ក្នុង​ទាញ​​យក​ ដែល​មិន​ធ្វើ​អោយ​​ប៉ះពាល​ដល់​ Speed នៃការ​ Load Website របស់លោក​អ្នក។

Demo Download

job_list

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, php, web standards, ពត៌មាន ដោយ kooms ខែ មីនា 7, 2009

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
jquery

Jquery ជា JavaScript Framework មួយ​ដែល​កំពុង​ពេញ​និយម​ មាន​ល្បឿន​លឿន​ទៀត​ផង។ Jquery បាន​ក៏ឡើង​ក្នុងឆ្នាំ ២០០៥ ដែលសរសេដោយលោក​ John Resig ជាស្ថាបនិកមួយ​រូបរបស់ Web Browser ដ៏ល្បី Firefox។ ចំពោះ​ Framework មួយ​នេះត្រូវបាន​ Open Source មួយ​ចំនូន​យក​ទៅ​ប្រើ​ដូចជា WordPress, Drupal..

បន្ថែម

២​Prototype

prototype
prototype

Prototype ជា Framework មួយ​ដែល​ចំណាសជាងគេ​ ហើយ​ត្រូវ​បាន​ប្រើ​ច្រើន​ផង​នៅ​ក្នុងគេហទំព័រ​ជាច្រើន​។ Prototype ត្រូវបាន​ដាក​បញ្ចួល​ក្នុង Cakephp framework,

Ruby on rails framework ហើយ Hi5 Social Network ក៏​ប្រើ​ Framework នេះដែរ។

បន្ថែម

Mootools

Mootools
Mootools

Mootools ជា Object-Oriented JavaScript framework សំរាប់ JavaScript Developer ដែល​មាន​កំរិត​ពីមធ្យម​ ដល់ កំរិត​ខ្ពស់ វាអនុញ្ញាតិអោយ​យើង​សេរសេ powerful, flexible, និង​ cross-browser កូដ ជាមួយ​ភាស្រស់ស្អាត​របស់វា។ Mootools ត្រូវបាន​ web developers ពេញចិត្ត​ផង​ដែរ ហើយ​ត្រូវបាន​ប្រើ​ជាមួយ Joomla CMS និង ក្រុម​ហ៊ុនរចនា Template មួយ​ចំនួន​ទៀត។

បន្ថែម

YUI

Yahoo
Yahoo

YUI ជា JavaScript Framework ពេញនិយម​ផងដែរ ហើយ​ត្រូវបាន​ប្រើ​ ហើយ​ឥឡូវ​ចេញដល់ Version 2.7.0 ។​ត្រូវ​បាន​ប្រើ សេវាកម្ម​របស់ ក្រុម​ហ៊ុន​ Yahoo នេះ ហើយ​ក៏មាន​ Web Developers ប្រើ​វា​ផងដែរ។

បន្ថែម

Dojo

dojo

Dojo ជា​ JavaScript មួយ​ទៀ​ត​ដែល​យើង​អាច​យក​មក​បង្កើត​ ជា​ Web Application បាន​យ៉ាង​ស្រស់​ស្អាត។​ Dojo ត្រូវបាន​ដាក់​បញ្ចួល​ទៅ​ Zend Framewrok

បានដាក់ប្លាក ជាមួយ ៖, , ,

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

បានដាក់ប្រកាស ក្នុង ពត៌មាន ដោយ kooms ខែ មីនា 5, 2009
cdaily

The Cambodia Daily Template

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

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

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

Demo

បានដាក់ប្លាក ជាមួយ ៖, , ,

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

បានដាក់ប្រកាស ក្នុង HTML, Javascript, php ដោយ kooms ខែ មីនា 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

បានដាក់ប្លាក ជាមួយ ៖, , , , , , ,

The best PHP frameworks for developers

បានដាក់ប្រកាស ក្នុង ពត៌មាន ដោយ kooms ខែ កុម្ភៈ 16, 2009

សំរាប់ Web developer ពិតជាស្គាល់ខ្លះហើយ អំពី PHP Frameworks បើសិនជាយើងប្រើ Framework ទាំងនេះពិតជួយសំរូល​ដល់​ការងារយើង​ច្រើនណាស់ ក្នុង Develop Website ហើយលឿនទៀតផង មិនត្រឹមតែប៉ុណ្ណឹង កូដរបស់យើងបានរៀបចំ​តាម​លក្ខណៈ​​​​ស្តង់ដា MVC (Model View Controller) ដែលធ្វើអោយការងាយើងមាន​លក្ខណៈ ងាយស្រូលក្នុងការកែរប្រែរនៅថ្ងៃក្រោយ។ ខាងក្រោមនេះខ្ញុំសូមនែនាំ PHP Framework  មួយចំនួនដែលគេពេញនិយមសព្ទថ្ងៃនេះ​៖

1 cakephp
php-2

CakePHP is a rapid development framework for PHP that provides an extensible architecture for developing, maintaining, and deploying applications.

Read more…

 
(ច្រើនទៀត…)

បានដាក់ប្លាក ជាមួយ ៖,

50 Extremely Useful PHP Tools

បានដាក់ប្រកាស ក្នុង កម្មវិធីទូរស័ព្ទ ដោយ kooms ខែ កុម្ភៈ 11, 2009

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…

cake

Codeigniter

Codeigniter

 

 

 

 

បានដាក់ប្លាក ជាមួយ ៖

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

បានដាក់ប្រកាស ក្នុង កម្មវិធីទូរស័ព្ទ ដោយ kooms ខែ មករា 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: 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>';
?>

Source Code

បានដាក់ប្លាក ជាមួយ ៖, , ,

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

បានដាក់ប្រកាស ក្នុង HTML, php ដោយ kooms ខែ មករា 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['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>

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

បានដាក់ប្លាក ជាមួយ ៖, ,