ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ PHP Function

ว่าด้วยเรื่องของ Template Engine กับ PHP

ว่าด้วยเรื่องของ Template Engine กับ PHP รู้จักมาตั้งแต่เป็นโปรแกรมเมอร์ฝึกหัด $tpl->parseHtml() กับคำสั่งนี้สามารถโหลดหน้า html ทั้งหมดพร้อมกับแทรกค่าลงตัวแปรต่างๆให้เรียบร้อยเสร็จสรรพ มันดูดีมากที่ได้แยกโค๊ด PHP ออกจาก HTML ผมไม่รู้ว่า $tpl เก็บค่าจากไลบรารี่ตัวไหนแต่มันก็น่าใช้มากแต่ก็ไม่เคยแกะไล่ดูโค๊ดส่วนที่ประกาศค่านั้นเลย จนกระทั่งได้พบกับ $TPLN ของเว็บ http://tpln.h2lsoft.com/ ก็คิดว่าเจ๋งเหมือนกันเผลอๆทำได้ดีกว่าตรงที่ Multiple Loop Bloc ได้ด้วย เหมาะกับการสร้างตารางซ้อนตารางคือตัวแปรอาร์เรย์หลายชั้น ((ไม่แน่ว่า $tpl ที่ใช้อยู่ก็อาจจะทำได้ แต่ไม่เคยได้อ่าน Document ของมันเลย)) ถ้าเป็น PHP Framework ผมจะเลือก CodeIgniter เพราะมันมี $this->parser->parse() ที่ใช้โหลด view ที่เป็นเทมเพลตมาแสดง ใช้ง่ายโค๊ดสะอาดตาในสไตล์ Framework https://ellislab.com/codeigniter/user-guide/libraries/parser.html สำหรับหลักการที่ทำให้ผมหลงไหลอ่านได้ที่ (Sixhead Template) www.scriptdd.com/webtip/sixhead_template_php_template_engine_part1.html นอกจากนั้นยังมี smarty template engine...

การใช้งานฟังก์ชั่น foreach(), array_walk() และ array_map() กับการทำงานกับอาร์เรย์

สำหรับบทความนี้จะมาสอนเขียน PHP เพื่อวนลูปทำงานตามที่ต้องการด้วยฟังก์ชั่น foreach(), ฟังก์ชั่น array_walk() และฟังก์ชั่น array_map() ซึ่งตัวอย่างนี้จะทำงานร่วมกับข้อมูลที่เป็นอาร์เรย์ ข้อมูลเพิ่มเติมที่เว็บไซต์ php.net foreach() array_walk() array_map() ลองมาดูผลลัพธ์ที่ได้จากการเรียกใช้งานฟังก์ชั่นดูกันก่อนจะลองทำแล็ปเล็กๆท้ายบทความนะครับ <?php $data = array('name' => 'Songchai Saetern', 'age' => '29', 'level' => '1'); echo '<b>ข้อมูลในตัวแปร $data</b><pre>', print_r($data, true), '</pre>'; echo "<pre><b>ตัวอย่างการใช้ forech()</b>"; foreach($data as $key => $value) {     echo "<br/>$key : <input type=\"\" name=\"$key\" value=\"$value\" />"; } echo '</pre>'; echo "<pre><b>ตัวอย่างการใช้ array_walk()</b>"; array_walk($data, function($value, $...

การเขียนโปรแกรม PHP เพื่อดึงค่าเวลาออกจากวันที่ที่มีเวลาต่อท้ายด้วยฟังก์ชั่น explode(), strrchar(), substr()

          บางครั้งอาจจะมีงานที่ต้องการให้เราเขียนโปรแกรมแสดงวันที่บนหน้าเว็บเพจ หรือให้เขียนโปรแกรมแสดงเวลาปัจจุบัน หรือเวลาที่ทำรายการบนหน้าเว็บไซต์ หรือหน้ารายงานต่างๆ ซึ่งวิธีการปกติที่ผมใช้คือการแยกข้อความ เพื่อแยกวันที่ออกจากเวลาด้วยช่องว่าง จากนั้นก็จะได้อาร์เรย์ไปใช้งานต่อไป วิธีที่ 1 ใช้ฟังก์ชั่น explode() ซึ่งจะคืนค่ากลับมาเป็นอาร์เรย์ เราก็จะต้องสร้างตัวแปรรับค่าและเมื่อจะเรียกใช้ข้อมูลในตัวแปรก็จะใช้การอ้างอิงตัวเลขลำดับที่ได้จากการแยกข้อความ <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>ทดสอบฟังก์ชั่น PHP แยกคำที่ต้องการ ออกจากข้อความทั้งหมดแบบมีตัวคั่น ด้วยฟังก์ชั่น explode()</title> </head> <body> <?php $date = '2014-06-21 13:40:31'; $dataArray = explode(' ', $date); echo "เวลา คือ ", $dataArray[1]; ?> </body> </html>

การเขียนโปรแกรม PHP กับการใช้งานฟังก์ชั่น isset()

 การเขียนโปรแกรม PHP มีฟังก์ชั่นอาจจะยอดฮิต (หรือเพียงแค่จำเป็น) ที่ใช้กันปัจจุบันนี้คือ isset() ถ้าโปรแกรมที่ใช้ซอร์สโค๊ดเก่า และนำไปรันกับเซิร์ฟเวอร์ใหม่ PHP ก็จะเป็นเวอร์ชั่นใหม่ตาม ทำให้การตั้งค่าการแสดง Error เปลี่ยนไปการเรียกใช้ตัวแปรที่ไม่มีอยู่จริง จะเกิดเป็นข้อผิดพลาดขึ้นเต็มหน้าเว็บเพจให้ได้อับอายกันไปเลยทีเดียว

ฟังก์ชั่น PHP ที่ใช้สำหรับหาตำแหน่งวันประจำสัปดาห์จากวันที่ที่กำหนด

ช่วงก่อนได้ลองเขียนโค๊ดเล่นๆ เกี่ยวกับปฏิทินมาได้ระยะหนึ่ง จึงมีโอกาสได้ใช้ความรู้อันน้อยนิดที่ได้รับ มาเผยแพร่ให้ได้ลองทดสอบดูกัน ไปเจอคำถามจากเว็บบอร์ด Thaicreate.com เกี่ยวกับการหาวันพุธจากวันที่ต่างๆ ว่าจะทำอย่างไร สำหรับ PHP แล้ว ผมใช้ฟังก์ชั่น date() เลยครับ เพราะฟังก์ชั่น date() เป็นพระเอกของเรื่องวันเวลาอยู่แล้ว การเรียกใช้งานก็ทำได้โดย กำหนดพารามิเตอร์ตัวแรก ให้เป็นรูปแบบ w และกำหนดพารามิเตอร์ตัวที่สอง เป็นวันที่ที่แปลงด้วยฟังก์ชั่น strtotime() ตัวอย่างตามนี้เลย <?php echo date('w', strtotime('2013-12-14')); ?> ค่าที่ออกมาคือ 6 ซึ่งเท่ากับวันเสาร์ การกำหนดรูปแบบ w คือให้แสดงค่า 0-6 ซึ่งหมายถึง วันอาทิตย์ - วันเสาร์ ดังนั้นการหาวันพุธ เมื่อเรียงลำดับ อาทิตย์ จันทร์ อังคาร พุธ ก็จะได้เท่ากับ 3 หากวันที่ใดคืนค่า 3 แสดงว่าวันที่นั้นเป็นวันพุธนั่นเอง บทความที่เกี่ยวข้อง PHP Calendar : ฝีกสร้างปฏิทินไว้ใช้ในงานต่างๆ  PHP Calendar : สร้างปฏิทินมุมมองแบบสัปดาห์  สร้างปฏิทิน รายงานยอดที่พนักงานทำได้ในแต่ละเดือ...

PHP array_chunk() เทคนิคการเขียนโปรแกรมแสดงผล แบบแบ่งหลายคอลัมน์

การเขียนโปรแกรมเพื่อดึงข้อมูลออกมาจากฐานข้อมูล และจัดแสดงผล แบบหลายคอลัมน์นั้น เป็นสิ่งที่เราจะพบเห็นอยู่บ่อยๆ ในเว็บไซต์ที่เป็นร้านค้าออนไลน์ ที่จะนำสินค้ามาแสดงในหน้าแรกเพื่อให้ลูกค้าได้เลือกซื้อกันได้ง่าย และหลายรายการ เพราะแสดงเป็นแถวละรายการ คงจะเปลืองพื้นที่แสดงสินค้าหลายแถว จนหน้าเว็บอาจจะยาวทะลุจอไปเลยก็ได้ สำหรับเทคนิคการแสดงผลแบบแบ่งหลายคอลัมน์นั้น ยังนิยมอย่างมากในการทำแกลอรี่รูปภาพ ซึ่งตัวอย่างที่นำมาให้ดูนี้อาจจะคุ้นตามกันอยู่แล้ว เป็นบทความที่นำมาจากเว็บไซต์ ThaiCreate.Com PHP MySQL Multiple Column จากตัวอย่างกำหนดให้ $intRows นับจำนวนรายการที่ดึงออกมาจากฐานข้อมูล  จะมีคำสั่งที่ใช้ตรวจสอบจำนวนคอลัมน์ว่าครบหรือยังเพื่อขึ้นบรรทัดใหม่โดยตรวจสอบ 24. 25. if (( $intRows )% 2 ==0) 26. { 27. echo "</tr><tr>" ; 28. } ความหมายของคำสั่งนี้ก็คือ ถ้าจำนวนรายการนั้น หาร ด้วย 2 แล้วลงตัว ก็ให้ปิดแถว เพื่อขึ้นแถวใหม่ เราก็จะได้ข้อมูล 2 คอลัมน์เหมือนตัวอย่าง

แปลงวันเวลา datetime <-> timestamp

การแปลงค่าวันที่เพื่อนำไปใช้คำนวณระยะห่าง ระหว่างวันที่นั้นจำเป็นจะต้องจัดรูปแบบใหม่ และเมื่อคำนวณเสร็จแล้ว ก็อาจจะต้องนำกลับมาใช้ใหม่เพื่อแสดงค่าวันที่ที่คำนวณแล้ว โดยพื้นฐานการเปลี่ยนวันที่ date เป็น time และจาก time เป็น date นั้น ใช้หลักการง่ายๆ ดังนี้ หา Timestamp จาก Datetime ในรูปแบบ yyyy-mm-dd H:i:s <?php $datetime = "2013-05-21 02:41:53"; $exp = explode(" ",$datetime); $t = explode(":",$exp[1]); $d = explode("-",$exp[0]); $timestamp = mktime($t[0], $t[1], $t[2], $d[1], $d[2], $d[0]); echo $timestamp; ?> หาวันที่ Datetime จาก Timestamp <?php $timestamp = "1369104113"; echo date("Y-m-d H:i:s", $timestamp); ?> ถ้าหากได้ใช้คำสั่งข้างบนนี้บ่อยๆ เราก็จำเป็นต้องสร้างฟังก์ชั่นไว้ เพื่อสะดวกในการเรียกใช้งาน <?php  function dateToTime($datetime){      $exp = explode(" ",$datetime);      $t = explode(":",$exp[1]);      $d = explode("-",$exp[0]);  ...

ใช้ฟังก์ชั่น implode() เพื่อลดการเขียนโปรแกรมวนลูปใช้เอง

ในการเขียนโปรแกรมแต่ละครั้ง เวลาที่เราต้องการเชื่อมอาร์เรย์ด้วยค่าบางอย่าง เช่นเครื่องหมายคอมม่า (,) เครื่องหมายขีดคั่น ( | ) หรือเว้นบรรทัด และอื่นๆ เราจะต้องทำการวนลูปโดยเริ่มจากอาร์เรย์ตัวแรก ไปจนถึงอาร์เรย์ตัวสุดท้าย เราก็จะได้ ข้อความที่เชื่อมกันมาใช้งาน เช่น <?php $delimiter = ''; $string = ''; $idArr = array(111, 222, 333, 444); foreach($idArr as $id){     $string .= $delimiter . $id;     $delimiter = '|'; } echo $string; ?> ผลลัพธ์ที่ได้คือ ข้อความที่เชื่อมกันด้วยขีดคั่นกลาง 111|222|333|444 จะเห็นว่าเราต้องเขียนโค๊ดถึง 6 บรรทัดด้วยกัน ซึ่งนับจำนวนตัวอักษรแล้วก็หลายตัวทีเดียว สำหรับการเขียนโปรแกรม php ได้มีฟังก์ชั่นที่พร้อมให้เราเรียกใช้แล้ว ถ้าจำกันได้ผมเคยเขียนบนความเกี่ยวกับสร้างแถวแต่ละแถวของตาราง  html อย่างง่ายด้วยฟังก์ชั่น implode() และครั้งนี้ก็จะนำมาใช้อีกครั้งโดย เปลี่ยนโค๊ด php ที่เราเขียนดังนี้ <?php $idArr = array(111, 222, 333, 444); $string = implode("|", $idArr); echo $string; ?> ด้วยฟังก์ชั่น impl...

สร้างรหัสอัตโนมัติ ด้วยฟังก์ชั่น substr()

รหัสอัตโนมัตินี้ จะเป็นรหัสที่ไม่ซ้ำกัน เพื่อใช้อ้างอิงเอกสารแต่ละรายการที่พิมพ์ออกมา ซึ่งอาจจะเป็นรหัสที่ใช้สร้างบาร์โค๊ดด้วย การสร้างตารางเก็บข้อมูลจะมีฟิลด์ที่เป็น Primary Key อยู่สองฟิลด์คือ ฟิลด์ id กับ ฟิลด์ doc_no ฟิลด์ id จะกำหนด type เป็น int(11) และเพิ่มค่าอัตโนมัติ (Auto Increment) ฟิลด์ doc_no จะกำหนดเป็น varchar(11) <?php $code = "A"; $yearMonth = substr(date("Y")+543, -2).date("m"); //query MAX ID //$sql = "SELECT MAX(id) AS last_id FROM my_table"; //$qry = mysql_query($sql) or die(mysql_error()); //$rs = mysql_fetch_assoc($qry); //$maxId = substr($rs['last_id'], -5); //ข้อมูลนี้จะติดรหัสตัวอักษรด้วย ตัดเอาเฉพาะตัวเลขท้ายนะครับ $maxId = 237; //<--- บรรทัดนี้เป็นเลขทดสอบ ตอนใช้จริงให้ ลบ! ออกด้วยนะครับ $maxId = ($maxId + 1); $maxId = substr("00000".$maxId, -5); $nextId = $code.$yearMonth.$maxId; ?> การทำงานของโค๊ด 1. กำหนดอักษรนำหน้า 2. ดึงค่าปี เดือน ปัจจุบัน 3. ดึงค่าไอ...

การแทนที่อักขระพิเศษให้เป็นค่าว่าง ด้วย preg_replace

ตัวอย่างนี้จะเป็นการลบอักษระพิเศษออกจากชุดข้อความที่กำหนด ผลลัพธ์ที่ต้องการคือข้อความที่มีเฉพาะตัวอักษร a-z กับเลข 0-9 เท่านั้น <?php $data = "asd'$%#&-1-2-3"; $data = preg_replace("/[^a-z\d]/i", '', $data); echo $data; ?> ผลลัพธ์ asd123 PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม สนใจสั่งซื้อเพียง  4,500  บาท http://fastcoding.phpcodemania.com/ สนับสนุนค่ากาแฟผู้เขียนได้ที่

คำสั่ง php implode นอกจาก รวมตัวอ้กษร ใช้ทำอะไรได้อีกบ้าง

การเขียนโปรแกรมทุกภาษา จะมีคำสั่งที่ให้เราเรียกใช้เพื่อช่วยงานบางอย่างที่เราต้องการโดยที่เราไม่ต้องเขียนเองทั้งหมด ซึ่งจะถูกเรียกว่า ฟังก์ชั่น (function) และในภาษา PHP จะมีฟังก์ชั่นมากมายให้เราเรียกใช้เช่นเดียวกันกับการเขียนโปรแกรมภาษาอื่นๆ ฟังก์ชั่นที่แนะนำในบทความนี้คือ implode() ซึ่งจะทำงานตรงข้ามกับ explode() ที่ใช้แยกข้อความออกจากกัน ตามอักษรที่กำหนด ซึ่ง implode() จะเรียกใช้กับข้อมูลที่อยู่ในรูปแบบ Array เท่านั้น $data = array("a", "b", "c", "d"); $strText = implode(":", $data); echo $strText; ผลลัพธ์ = a:b:c:d ตัวอย่างใช้สร้างข้อมูลแต่ละแถวในตาราง HTML <?php $arr = array( array( 'id' => 1, 'name' => 'ชัยวัฒน์', 'term' => '2', 'grade' => 'B'), array( 'id' => 2, 'name' => 'พิทักษ์', 'term' => '2', 'grade' => 'B+'), array( 'id' => 3, 'name' => ...