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

บทความ

กำลังแสดงโพสต์จาก 2014

PHP Calendar Step by Step : ตอนที่ 1 แนวคิดในการออกแบบปฏิทินกิจกรรม

สำหรับปฏิทินกิจกรรมที่จะมาแนะนำในบทความนี้จะใช้คุณสมบัติของ Google Calendar เป็นต้นฉบับในการพัฒนา ซึ่งที่เห็นเด่นๆก็จะเป็น การแสดงผลเป็นแถบยาวตามจำนวนวัน และการแสดงผลหลายรายการในหนึ่งวัน สำหรับ PHP อย่างเดียวนั้นไม่สามารถตอบโจทย์ความต้องการนี้ได้ ผมจึงประยุกต์จากปฏิทินกิจกรรมแบบ PHP อย่างเดียวเป็นผสมผสานกับการใช้จาวาสคริปต์ด้วยเฟรมเวิร์กที่ชื่อว่า jQuery เพื่อกำหนดลักษณะการแสดงกิจกรรมต่างๆ ให้อยู่ในตำแหน่งที่เราต้องการได้   ในวิดีโอชุดนี้จะพูดถึงเฉพาะแนวคิด และการออกแบบคร่าวๆในส่วนท้ายๆของวิดีโอ ซึ่งหากใครที่ทราบแนวคิด Google Calendar อยู่แล้วก็สามารถข้ามวิดีโอนี้ไปดูเฉพาะส่วนท้ายๆได้เลยครับ

มาทดสอบโครงสร้างหน้าเว็บ HTML ด้วยโปรแกรม BlueGriffon กันเถอะ

       การสร้างเว็บไซต์นั้น นอกจาก notepad หรือ gedit ที่เป็น text editor มาพร้อมระบบปฏิบัติการ(OS)ที่ติดตั้งแล้วนั้น ยังมีโปรแกรมอีกมากมายหลายตัวที่ช่วยให้เราเขียนโค๊ด HTML ได้ง่ายขึ้น จึงทำให้การสร้างเว็บเพจขึ้นมาแต่ละหน้านั้น ง่ายขึ้นกว่าการเขียนเว็บด้วยซอร์สโค๊ด HTML ล้วนๆเพียงอย่างเดียว        สำหรับโปรแกรมที่ผมจะนำเสนอควบคู่ไปกับทุกบทความที่เกี่ยวกับการสร้างเว็บไซต์ ผมจะใช้โปรแกรมที่ชื่อว่า BlueGriffon   ซึ่งเป็นโปรแกรมที่เรียกว่า WYSIWYG คือสามารถปรับแต่งหน้าเว็บของเราผ่านการคลิกที่เมนูต่างๆ ได้สะดวกยิ่งขึ้นโดยไม่ต้องเสียเวลากับการพิมพ์โค๊ดแท็กต่างๆ        โปรแกรมที่ใช้ออกแบบหน้าเว็บเหล่านี้ (รวมถึง Dreamweaver ด้วย) จะมีข้อเสียอยู่เล็กน้อยคือ การสร้างโค๊ดที่เกินความจำเป็นให้กับหน้าเว็บเพจของเรามากเกินไป เช่นการกำหนดสไตล์ต่างๆ มักจะกำหนดลงไปที่แท็กแต่ละแท็กไปเลย ที่จริงปัญหานี้เราสามารถแก้ไขได้โดยการเขียน css ควบคุมหน้าเว็บเอง แล้วมากำหนด class ให้กับแท็กต่างๆที่ต้องปรับเปลี่ยนสไตล์แทนการแทรกไปตรงๆที่แท็กนั้น เตรียมเครื่องมือที่ต้องใช้

ทำความรู้จักกับ HTML

       การสร้างเว็บไซต์ที่มีหน้าตาสวยงามให้เห็นกันนั้น ที่จริงแล้วเบื้องหลังประกอบด้วยโค๊ด HTML ต่างๆมากมายเพื่อจัดรูปแบบการแสดงผลต่างๆให้อยู่ในตำแหน่งที่ต้องการ จะบอกว่า HTML คือคำสั่งในการจัดหน้ากระดาษ และรูปแบบการแสดงผล ในหน้ากระดาษ หรือหน้าเว็บนั้นๆก็ว่าได้

ตัวอย่างการสร้างตารางเรียน ตารางสอน แบบไฮไลท์ช่วงเวลาที่กำหนด

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

แวะมาทักทาย และขอเกริ่นนำบทความต่อไปที่จะนำมาเผยแพร่เร็วๆนี้

๋ในหัวข้อ ปรับแต่ง Code ให้เป็นมิตรกับ Server ผมได้นำเสนอเกี่ยวกับการเขียนโปรแกรมแบบประหยัดแบนด์วิธในแบบต่างๆ รวมถึงการลดจำนวนครั้งในการคิวรี่ และการสร้าง Template Engine ด้วย Javascript ซึ่งที่ผมให้ความสนใจเป็นพิเศษก็คือ Ajax Template Parser : เรียกใช้งานเทมเพลต CodeIgniter ด้วย Ajax ซึ่งได้แสดงผลการเปรียบเทียบการคืนค่ากลับมายังหน้าเว็บบราวเซอร์ดังภาพตัวอย่างในบทความนั้นแล้ว สำหรับในหัวข้อนี้ยังมีเรื่องที่ผมจะกล่าวถึงอีกสองเรื่องที่ยังไม่มีเวลาได้ลองเขียนโค๊ดทดสอบการทำงาน นั่นก็คือ การสร้างตัวแบ่งหน้าสำหรับแสดงข้อมูลรายการที่มีหลายบรรทัด แบบใช้ Javascript + AJAX ในการตรวจสอบจำนวนข้อมูลที่แสดงอยู่ในหน้าปัจจุบัน และหน้าที่จะต้องเริ่มโหลดข้อมูลชุดใหม่ด้วย AJAX อีกครั้งก่อนจะแสดงผลด้วย Javascript แบบซ่อนและแสดงผลอีกครั้ง สำหรับอีกเรื่องหนึ่งก็คือ การนำ Javascript Template Engine ที่ใช้สำหรับ CodeIgniter มาสาธิตการทำงานแบบเต็มรูปแบบ โดยจะแนะนำวิธีการเรียกใช้งาน ซึ่งไม่ได้มีหลักการอะไรยุ่งยาก เพียงแค่โหลดไฟล์ HTML มาเก็บไว้ในตัวแปร Javascript แล้วก็รอเรียกข้อมูลผ่าน AJAX ด้วย jQuery

การใช้งานฟังก์ชั่น 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 การล็อกอิน กับปัญหา SQL Injection

       หลังจากได้เข้าร่วมอบรม Website Security Monitoring ที่ทางสำนักวิทยบริการและเทคโนโลยีสารสนเทศ ของมหาวิทยาลัยจัดขึ้น ก็ได้ความรู้เรื่องการสร้างระบบล็อกอินเพื่อป้องกันปัญหา SQL Injection มาฝากกับผู้เริ่มต้นทุกท่าน สำหรับการป้องกันนั้นจะมีอยู่หลายวิธี และวิธีหลักที่ใช้กันก็คือ กรองด้วยฟังก์ชั่น mysql_real_escape_string() , mysqli_real_escape_string() , (ดูเพิ่มเติมได้ที่ http://php.net/manual/en/function.mysql-real-escape-string.php ) ในกรณีของ id ที่เป็นตัวเลขล้วน ก็สามารถใช้ (int) วางไว้ข้างหน้าตัวแปรเพื่อป้องกันข้อมูลในหน้าอื่นๆได้เช่นกัน แต่ในตัวอย่างของบทความนี้ จะอธิบายทีละส่วนเพื่อให้เห็นถึงวิธีการต่างๆ ที่จะโยงไปยังเรื่องของการใช้ md5 ในบทความต่อๆไปด้วยครับ จากบทความที่เคยนำเสนอเกี่ยวกับการ สร้างแบบฟอร์มล็อกอิน จะใช้ SQL ในการตรวจสอบข้อมูลแบบเบื้องต้นดังนี้ $sql = "SELECT * FROM tb_user WHERE user_name = '$_POST[username]'            AND user_password = '". $_POST['password'] ."' "; ตัวอย่างฐานข้อมูลตารางผู้ใช้งาน

การติดตั้ง HMVC สำหรับ CodeIgniter

Step 1. เปิดไปที่หน้าเว็บ codeigniter-modular-extensions-hmvc . ที่แท็ป Downloads จะมีไฟล์สำหรับดาวน์โหลด หรือดาวน์โหลดไฟล์ที่บีบอัดไว้จาก ที่นี่ . (ในตัวอย่างจะเป็นการติดตั้ง HMVC สำหรับ CodeIgniter 2.1.0 ดาวน์โหลดเมื่อวันที่ 20 พ.ค. 2012 แต่ผมลองกับตัวเวอร์ชั่น 2.2 ก็ใช้งานได้) Step 2. คลายซิปไฟล์ที่ดาวน์โหลดแล้วคัดลอกไปไว้ที่โฟลเดอร์ ที่ติดตั้งตั้ง CodeIgniter เอาไว้ (คัดลอกเฉพาะโฟลเดอร์ core และ third_party ไปวางที่โฟลเดอร์ application ของ CodeIgniter โดยวางทับไปได้เลย) Step 3. สร้างโฟลเดอร์ชื่อ modules_core ในโฟลเดอร์ applications เพื่อใช้เก็บไฟล์ของ Module ต่างๆ Step 4. ขั้นตอนต่อไปให้เปิดไฟล์ application/config/config.php แล้วเพิ่มบรรทัดต่อไปนี้ $config['modules_locations'] = array(APPPATH.’modules_core/’ => ‘../modules_core/’,); (ต้องเปลี่ยนเครื่องหมาย ‘ เป็นแบบที่ใช้ในการเขียนโปรแกรมด้วยนะครับ ไม่งั้นจะเกิด error วิธีก็คือ ลบแล้วพิมพ์ลงไปใหม่) ทดสอบการทำงาน     ให้ลองสร้างโฟลเดอร์ใหม่ใน modules_core แล้วตั้งชื่อเป็น login

การเก็บข้อมูลรหัสผ่านสำหรับล็อกอินเราควรจะเข้ารหัส md5 ก่อน และใส่สีตีไข่ลงไปด้วย

การเข้ารหัสข้อมูลการล็อกอินก่อนเก็บลงฐานข้อมูลนั้น จะว่าสำคัญมั้ยก็ไม่เชิง เพราะมันเป็นเพียงการเพิ่มความเชื่อมันให้ผู้ใช้งานว่าจะไม่มีใครสามารถเห็นรหัสผ่านของเขาได้ เช่น ผู้ใช้งานอาจจะใช้รหัสผ่านเดียวกันนี้ในหลายๆเว็บไซต์ การที่มีใครคนใดคนหนึ่งรู้รหัสผ่าน ก็จะทำให้สามารถเข้าถึงข้อมูลในเว็บไซต์อื่นๆได้ และแน่นอนว่ารวมถึงเว็บไซต์ที่ปล่อยให้มีคนเห็นรหัสผ่านนี้ด้วย สำหรับการเข้ารหัสด้วย md5() ก่อนบันทึกในฐานข้อมูลดังโค๊ดด่านล่างนี้ <?php $ pass = " Hello1234 "; $ my_md5 = md5 ($ pass ); echo " <br/>ข้อความที่พิมพ์ : " , $ pass ; echo " <br/>รหัสที่ได้คือ : <u> " , $ my_md5 , " </u> "; ?> ผลลัพธ์ ข้อความที่พิมพ์ : Hello1234 รหัสที่ได้คือ : cbd357125a99321c2a08e0206a97622f ข้อมูลที่จะนำไปบันทึกคือ $ my_md5 ที่เข้ารหัสแล้วนั่นเอง กรณีที่มีแอดมินหรือผู้ใช้คนใดคนหนึ่งที่เข้าไปดูฐานข้อมูลได้ หรือเข้าไปยังหน้าข้อมูลผู้ใช้ได้และสามารถมองเห็นรหัสผ่านได้ก็จะเจอแต่ข้อความ cbd357125a99321c2a08e0206a97622f ก็

แบ็กอัพข้อมูลในฐานข้อมูล mysql ด้วย mysqldump เพื่อส่งออกเป็นไฟล์ sql

 บทความนี้จะแนะนำการแบ็กอัพฐานข้อมูลด้วยการเรียกใช้ mysqldump ช่วยในการส่งออกฐานข้อมูลเป็นไฟล์ sql เพื่อสำรองไว้กรณีฉุกเฉินครับ หลังจากที่ทดสอบแล้วใช้ได้ดีทีเดียวครับ แต่ใช้จริงต้องปรับตำแหน่งเรียก mysqldump C:\wamp\bin\mysql\mysql5.5.24\bin\mysqldump เป็นตำแหน่งที่ถูกต้องของแต่ละเซิร์ฟเวอร์แต่ละเครื่อง @echo off echo Running dump... set MYDATABASE=xxxxxxx set MYSQLUSER=root set MYSQLPASS=xxxxxxx set BACKUPFILE="F:\Backup\MySQL\%MYDATABASE%_%date:~10,4%-%date:~4,2%-%date:~7,2%_TIME.%time:~0,2%.%time:~3,2%.sql" C:\wamp\bin\mysql\mysql5.5.24\bin\mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --result-file=%BACKUPFILE% %MYDATABASE% echo Done! %BACKUPFILE% ทดสอบฐานข้อมูล 1GB ใช้เวลา 1 นาที ส่วนผลข้างเคียงยังไม่ทราบครับ ว่ามีข้อจำกัดอะไรบ้าง หรือทำให้ฐานข้อมูลทำงานได้ช้าลงในระหว่างที่ทำการเรียกใช้ mysqldump มากน้อยแค่ไหน แต่ที่แน่ๆ เขาบอกว่าดีกว่า Batch file ตัวเดิมที่ผมใช้อยู่ (แบบเดิมคัดลอกไดเรกทอรี่ฐานข้อมูลทั้งดุ้น) เพราะต้องทำหลังจากที่ไม่มีการเรียกใช้งานแล้

วันนี้ไม่ได้มาสอน PHP แต่จะลองเขียนเกี่ยวกับเรื่องของ ความสัมพันธ์ของระบบฐานข้อมูล (Database Relationships)

       การสร้างเว็บเพจสำหรับแสดงผลข้อมูลต่างๆ ในภายหลัง หรือเมื่อเวลาที่ผู้ใช้งานต้องการนั้น เราจะต้องเอาไปเก็บไว้ในฐานข้อมูลก่อน  เขียนเว็บเพจด้วยภาษาที่ทำงานฝั่งเซิร์ฟเวอร์เช่น PHP เพื่อเรียกรายงานต่างๆออกมาแสดง แต่ก่อนที่เราจะได้เขียนโค้ด PHP เพื่อติดต่อกับ ฐานข้อมูล MySQL หรือฐานข้อมูลใดๆนั้น เราก็จะต้องมีฐานข้อมูลอยู่ก่อนแล้ว สำหรับบทความนี้ จะพูดถึงเรื่องความสัมพันธ์ของฐานข้อมูล แบบให้เห็นภาพง่ายๆ(รึเปล่า?) จากรอบกายเรานี่เอง 1. ความสัมพันธ์แบบ หนึ่งต่อหนึ่ง ( One to One)     ตัวอย่าง : พนักงานหนึ่งคน กำหนดให้รับผิดชอบงานหลัก เพียงงานเดียว (เป็นที่ปรารถณาของพนักงานทุกคนครับ งานหลักชัดเจน งานรองก็อย่ามากเกินไป แต่บางทีผู้บริหารก็มองว่าใช้ไม่คุ้ม) 2. ความสัมพันธ์แบบ หนึ่งต่อกลุ่ม ( One to Many)     ตัวอย่าง : พนักงานหนึ่งคน กำหนดให้รับผิดชอบงานหลัก หลายงาน (ซุปเปอร์ออฟฟิศแมน ใช้จนคุ้มกันเลยทีเดียว ถ้าน้อยเนื้อต่ำใจ คิดลาออกขึ้นมา คงหาคนมาทำงานแทนกันให้วุ่น) 3. ความสัมพันธ์แบบ กลุ่มต่อกลุ่ม ( Many to Many)      ตัวอย่าง : พนักงาน 10 คน กำหนดให้สับเปลี่ยนหมุนเวียนกันทำ

HTML Form : เรียนรู้ข้อมูลแบบฟอร์ม HTML ก่อนนำไปใช้งานจริง

       ในการสร้างเว็บไซต์สำหรับรับข้อมูล สิ่งที่จำเป็นจะต้งเรียนรู้ไม่แพ้ PHP เลยนั่นก็คือภาษา HTML อันที่จริงแล้วจะบอกว่าการสร้างเว็บเพจทุกหน้าจะแสดงผลด้วย HTML ถึงจะถูก แต่ในส่วนที่จะกล่าวถึงต่อไปนี้คือส่วนของแบบฟอร์มรับข้อมูล (HTML Form) ซึ่งจะประกอบด้วยช่องรับข้อมูลอยู่หลายชนิดด้วยกัน ดังนี้        1. ช่องรับข้อมูลแบบป้อนข้อความลงไปในช่องว่าง            1.1 Text Fields  ช่องรับข้อมูลแบบบรรทัดเดียว <input type="text/password"/>            1.2 Textarea ช่องรับข้อมูลแบบหลายบรรทัด <textarea></textarea>        2. ช่องรับข้อมูลแบบตัวเลือก เลือกได้อย่างเดียว            2.1 Radio Button <input type="radio"/>            2.2 Select Option <select>...option...</select>        3. ช่องรับข้อมูลแบบตัวเลือก ที่สามารถเลือกได้หลายตัวเลือก            3.1 Checkbox  <input type="checkbox"/>            3.2 Multi Select Option  <select multiple>...option...</select>        4. ช่องรับข้อมูลแบบซ่อน จะไม่แสดงให

ฝึกเขียน PHP OOP ด้วยการนับอายุตามปฏิทิน และคำนวณวันที่เกษียณอายุราชการแบบง่ายๆ

ฝึกเขียน PHP OOP ด้วยโจทย์ปัญหาคณิตศาสตร์ กับการคำนวณยอดจำหน่ายคูปอง

       ภาษา PHP นอกจากใช้เขียนเว็บไซต์แล้วยังสามารถทำงานได้อีกหลายอย่าง เพราะสามารถทำงานร่วมกับฐานข้อมูลเช่น MySQL ดังนั้น เราก็สามารถสร้างเว็บเพจที่มีพลังได้ดังเช่นการเขียนโปรแกรมภาษาอื่นๆ        วันนี้เป็นอีกวันที่จะเขียนบทความแนวโจทย์ปัญหาคณิตศาสตร์ เพื่อใช้ฝึกเขียน PHP กันอีกครั้ง โดยจะเป็นการคำนวณยอดจำหน่ายคูปองในแต่ละวัน จากจำนวนยอดคงเหลือ ซึ่งโจทย์ปัญหาดังรูปด่างล่างนี้

การเขียนโปรแกรม PHP คำนวณเปรียบเทียบจำนวน และปริมาณสินค้า ในราคาที่ต่างกัน

       บทความนี้จะมาเขียนโปรแกรม PHP เพื่อคำนวณเปรียบเทียบจำนวน และปริมาณสินค้าที่ได้รับจากโจทย์ที่กำหนดมาทดสอบกันดู   สร้างไฟล์ทดสอบชื่อ compare_product.php

การเขียนโปรแกรม PHP คำนวณราคาสินค้าที่ได้รับส่วนลด เมื่อซื้อครบตามจำนวนที่กำหนด

        วันก่อนรู้สึกอยากกินหอยแครงลวกจิ้มน้ำจิ้มซีฟู๊ดสูตรแม่ยาย เลยแวะไปหาซื้อที่ห้างฯใกล้บ้าน ช่วงนี้ราคาสูงเกือบเท่าตัวครับ ชั่งใจอยู่นานว่าจะซื้อกิโลฯเดียว หรือสักสองกิโลกรัมดี เพราะเห็นว่าจะมีส่วนลดให้ถ้าซื้อครบสองกิโลกรัม        ลองคิดดูแล้วถ้าซื้อตามโปรโมชั่น ก็ถูกลงไปอีก 6 บาท พอคำนวณไปคำนวณมาก็เลยคิดว่าน่าจะลองเอามาเขียนโปรแกรมภาษา PHP  เป็นซอร์สโค๊ดคำนวณส่วนลดสินค้าแบบง่ายๆ มาแบ่งปันแนวคิดกันดูสักหน่อย เพราะบางครั้งการเขียนเว็บขายของออนไลน์ ก็จะต้องใช้ PHP สร้างระบบคำนวณราคาที่หลังร้านสำหรับเจ้าของร้านด้วย

PHP คำนวณค่าปรับ เมื่อส่งคืนหนังสือเลยกำหนดส่ง โดยอ้างอิงตามวันที่ปัจจุบัน

       วันก่อนยืมหนังสือมาสี่เล่ม แต่ดันเอาไปส่งเลยวันกำหนดคืน เลยโดยค่าปรับเล่มละบาทต่อวัน วันนี้เลยลองมาเขียนโปรแกรม PHP คำนวณค่าปรับกันเล่นๆ  มาดูซอร์สโค๊ดกันเลยละกันครับ  

การเขียนโปรแกรม 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 ที่แทรกรวมกับ html จะสามารถเขียนได้อีกแบบที่อ่านง่ายกว่า

การสร้างเว็บไซต์ สักเว็บหนึ่ง จะประกอบด้วยการเขียนโค๊ดลงไปในเว็บเพจหลายๆหน้า และโค๊ดที่ใช้เขียนโปรแกรมนั้น บางครั้งก็แสนจะสร้างความมึนงงลายหูลายตาซะเหลือเกิน สำหรับการเขียนเว็บ ด้วยภาษา php นั้นจะมีวิธีทำให้อ่านโค๊ดง่ายขึ้นเมื่อปะปนกับ html ดังนี้ แบบเดิมที่ใช้วงเล็บปีกกา foreach($array as $key=>$value){      //.....โค๊ดอื่นๆ }

เขียนเว็บด้วย AJAX เวลาโหลดข้อมูลใหม่ ควรสั่งให้ Scrollbar วิ่งไปที่บรรทัดแรกด้วย

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

SQL for MySQL : แสดงกลุ่มรายการที่มีรหัสประเภทต่างกัน

กันลืม!! การเขียนโปรแกรมบางครั้งก็มีกรณีที่ไม่คาดคิดเกิดขึ้นได้ ในกรณีนี้ผมได้แก้ไขรายงานหน้าหนึ่งซึ่งเป็นกลุ่มเอกสารที่มีการจ่ายประเภทเดียวเท่านั้น แต่พอลองทดสอบดูก็พบว่าผลรวมผิด เพราะมีกรณีที่กลุ่มเอกสารนั้นๆ มีหลายประเภทจะเกิดการวนลูปผลรวมเกินจำนวนจริง ก็เลยต้องมาค้นหารายการในฐานขอมูลเพื่อเลือกทดสอบข้อมูลที่มีการเบิกจ่ายหลายประเภทลองมาดูกันครับ ว่าจะใช้คำสั่ง SQL ฟังก์ชั่นไหนกันบ้าง นับจำนวน รายการของกลุ่มเอกสาร แต่ละรหัส SELECT id_doc_group, id_type_pay, COUNT(*) FROM `my_table` WHERE LENGTH(id_doc_group) > 4 GROUP by id_doc_group

การเขียนโปรแกรม PHP เพื่อสร้างปฏิทินและนำข้อมูลกิจกรรมจากฐานข้อมูล MySQL มาแสดงในปฏิทิน

สำหรับบทความนี้เราจะมาลองเขียนโปรแกรมภาษา PHP เพื่อสร้างปฏิทินและนำข้อมูลกิจกรรมจากฐานข้อมูล MySQL มาแสดงในปฏิทินด้วย PHP โครงสร้างฐานข้อมูลและซอร์สโค๊ดมีดังนี้  

การจัดการปัญหาการแสดงข้อมูลย้อนหลัง แล้วไม่ตรงกับเอกสารที่พิมพ์เก็บไว้

การจัดการปัญหาการแสดงข้อมูลย้อนหลัง แล้วไม่ตรงกับเอกสารที่พิมพ์เก็บไว้ สำหรับปัญหาที่พบคือ การเก็บชื่อหัวเรื่องของข้อมูลหลักต่างๆ ไว้ในฐานข้อมูลแต่ละตารางนั้น จะทำให้ฐานข้อมูลมีขนาดใหญ่ แต่การออกแบบฐานข้อมูลโดยเก็บเฉพาะไอดีหรือรหัสของหัวข้อนั้นๆเอาไว้ในตารางสำหรับใช้อ้างอิงนั้น ส่งผลให้เมื่อมีเกิดการแก้ไขชื่อหัวข้อต่างๆ เวลาที่เราเรียกดูข้อมูลย้อนหลัง จะเกิดการการแสดงชื่อที่เปลี่ยนแปลงไปด้วย id title create_date last_update 1 การจัดการความรู้ 2013-01-14 NULL 2 การส่งเสริมคุณภาพผลิตภัณฑ์ 2013-07-25 NULL 3 การพัฒนาทักษะทางวิชาการ 2013-12-09 NULL tb_category : ตารางข้อมูลหลัก เก็บข้อมูลหมวดหมู่กิจกรรม

แนวคิดการออกแบบปฏิทินกิจกรรมด้วย PHP แบบ Google Calendar

       สำหรับการสร้างเว็บไซต์นั้น สิ่งหนึ่งที่ขาดไม่ได้คือปฏิทินกิจกรรม บางเว็บอาจจะออกแบบเป็นแบบแผนงานหรือลิสต์รายการทั่วไป แต่สำหรับการสร้างเว็บเพจแบบไดนามิกด้วย PHP เราสามารถเขียนโปรแกรมสร้างปฏิทินเพื่อแสดงผลกิจกรรมตามวันที่ต่างๆให้ดูง่ายสบายตา        ในการเขียนโปรแกรมภาษา PHP ส่วนใหญ่เราจะใช้เขียนโปรแกรมเชื่อมต่อกับฐานข้อมูล MySQL เพื่อเรียกข้อมูลที่เก็บไว้ด้วยซอร์สโค๊ด PHP ที่เรากำหนดค่าการทำงานต่างๆไว้ ในส่วนของการแสดงผลเราจะใช้ javascript ช่วยเพื่อแบ่งเบาภาระเซิร์ฟเวอร์ให้ไม่ต้องคำนวณเองทั้งหมด      

PHP Calendar : เขียน PHP เพื่อสร้างปฏิทินเพื่อแสดงสถานะการจองในแต่ละวัน

       จากบทความเดิมที่เป็นตัวอย่างการสร้างปฏิทิน PHP ใน มุมมองแบบรายเดือน และปฏิทิน PHP ใน มุมมองแบบรายสัปดาห์   จะเป็นแค่เพียงตัวอย่างการเขียนโปรแกรม PHP เพื่อสร้างปฏิทินเปล่าๆ และแบบแสดงข้อมูลกิจกรรมเท่านั้น ในบทความนี้จะมานำเสนอการตรวจสอบเงื่อนไขการจอง เพื่อแสดงเป็นสีพื้นหลังให้ทราบสถานะการจองในแต่ละวันกันครับ กำหนดให้ในแต่ละวัน ลูกค้าสามารถจองคิวได้เพียง 3 รายเท่านั้น $bookPerDay = 3; หากวันใดที่ไม่มีรายการจองให้แสดงพื้นหลังเป็นสีเขียว หากจองแล้วแสดงพื้นหลังเป็นสีเหลือง หากจองคิวครบแล้วให้แสดงเป็นสีแดง <style type="text/css">     .book_status1{ background-color : green;}     .book_status2{ background-color : yellow;}     .book_status3{ background-color : red;} </style>

HTML เบื้องต้น การใช้แท็ก b เพื่อทำให้ตัวหนังสือเป็นตัวหนา

jQuery selector นับจำนวนตามค่าที่เลือกและคำนวณคะแนน

การเขียนโปรแกรมเว็บแอพพลิเคชั่นนั้น ส่วนของการแสดงผลจะใช้ jQuery ร่วมกับ Javascript เพื่อแสดงผลลัพธ์ที่เกิดขึ้นในขณะนั้น ในตัวอย่างนี้จะเป็นการคำนวณคะแนนที่ได้จากตัวเลือก โดยใช้ jQuery selector ในการนับจำนวนตัวเลือกค่าต่างๆ ว่ามีจำนวนเท่าไหร่ แล้วนำมาคำนวณตัวค่าคงที่ของตัวมันเอง ก็จะได้คะแนนที่ต้องการ

อัพเดตซอร์สโค๊ดตัวอย่าง Autocomplete ด้วย jQuery

หลังจากที่เคยนำเสนอเรื่อง Autocomplete ไปแล้วในบทความ " ตัวอย่างการทำ Autocomplete แบบลดจำนวนการคิวรี่ MySQL " แต่ยังไม่เห็นความชัดเจนพอ เลยอัพเดตซอร์สโค๊ดใหม่ให้ทดลองกันเองไปเลย โดยที่เริ่มจากข้อมูลพนักงานไม่เกิน 1,000 เรคอร์ด(เฉพาะสถานะ Active นะ คนลาออกไปแล้วไม่ต้องแสดง) กับข้อมูล 10,000 เรคอร์ด จะเห็นผลเรื่องประสิทธิภาพที่ต่างกัน

เขียน PHP แสดงรายการคำตอบจากแบบสอบถาม Radio Button [2/2]

หลังจากที่นำเสนอเรื่องการแสดงตัวเลือกจากคะแนนในฐานขอมูลในบทความก่อน และได้ทิ้งท้ายในเรื่องการปรับปรุงซอร์สโค๊ด PHP ให้สั้นและกระชับลง แต่ก็ยังคงอ่านเข้าใจง่าย ซึ่งในบทความนี้จะใช้วิธีการเก็บ ID ของตัวเลือกที่ต้องการ แล้วนำไปใช้กับโค๊ด jQuery เพื่อสั่งให้ Checked ตัวที่กำหนดไว้

เขียนโค๊ด PHP แสดงคำตอบจากแบบสอบถามลงใน Radio Button

สำหรับตัวอย่างนี้ จะเป็นการเขียนโค๊ดดึงข้อมูลมาแสดง โดยจะใช้ radio button เพื่อแสดงค่าที่มีการตอบแบบสอบถามไว้ โดยการเช็คคะแนนความพึงพอใจ เมื่อตรงกับช่องไหน ก็ให้ทำเครื่องหมายที่ช่องนั้นๆ

แสดงข้อมูลจาก MySQL ลงใน Drop-Down List ด้วย PHP+AJAX

    สำหรับวิดีโอในบทความนี้ จะเป็นการเขียนโปรแกรม PHP เพื่อดึงข้อมูลสถานที่ท่องเที่ยวต่างๆจากฐานข้อมูล MySQL มาแสดงใน drop-down list ตามรายชื่ออำเภอที่เลือก โดยการรับส่งข้อมูลผ่าน AJAX ด้วย jQuery จาวาสคริปต์เฟรมเวิร์ก ซึ่งจะใช้ข้อมูลรูปแบบ JSON สร้างเป็นอาร์เรย์ในจาวาสคิปต์ จากนั้นก็นำข้อมูลอาร์เรย์ที่ได้ไปสร้าง <option> ด้วยฟังก์ชั่น parseHtml() ที่สร้างขึ้นมาเพื่อรับข้อมูลแบบอาร์เรย์โดยเฉพาะ สำหรับเทมเพลต html หรือตัว <option> นั้นจะสร้างด้วยหลักการเดียวกันกับ View ของ CodeIgniter Framework {list}     <option value="{district_id}">{district_name}</option> {/list}

การใช้คำสั่ง SUM ร่วมกับ IF เพื่อแยกข้อมูลตามวันหมดอายุของสมาชิก

  สำหรับตัวอย่างนี้ จะเป็นการเขียนโปรแกรม PHP เพื่อสร้างรายงานสำหรับแสดงข้อมูลจำนวนสมาชิกแยกตามสาขาต่างๆ โดยจะสรุปข้อมูลสมาชิกทั้งหมด สมาชิกที่อยู่ในสถานะใช้งาน  และสมาชิกที่อายุการใช้งานสิ้นสุดลงแล้ว 

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

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

แนะนำปลั๊กอินที่น่าสนใจ firebug และ firepicker

ในการเขียนโปรแกรมนั้น สิ่งที่หนีไม่พ้นคือการตรวจสอบความถูกต้องของโค๊ด และเมื่อผลลัพธ์ที่ได้มาไม่ตรงกับโปรแกรมที่เราต้องการให้ทำงาน ก็ต้องมาไล่หาสาเหตุว่าเกิดจากอะไร มีข้อผิดพลาดตรงส่วนไหนบ้าง (ซึ่งเว็บเซิร์ฟเวอร์ก็จะแจ้งเสมอว่าเป็นที่บรรทัดไหน ไฟล์ไหนบ้าง) แต่เมื่อการเขียนโปรแกรมเว็บแอพพลิเคชั่นทำงานร่วมกับ Ajax ที่มีการรับส่งค่าอยู่เบื้องหลัง มันจะไม่แสดงข้อผิดพลาดออกมาในกรณีที่โค๊ดที่เขียนนั้นทำงานผิดพลาด ดังนั้นการใช้ปลั๊กอินที่ชื่อ firebug จะช่วยให้การไล่ล่าหาบักนั้น ทำได้ง่ายขึ้น เพราะทุกครั้งที่เกิดข้อผิดพลาดในการรับส่งข้อมูลแบบ Ajax จะมีข้อความสีแดงแจ้งเตือนที่แถบ Console ด้านล่างเสมอ ช่วยให้ไม่ต้องไล่ Alert หาจุดที่เกิดปัญหาให้เมื่อยตา สำหรับปลั๊กอินอีกตัวคือ firepicker จะช่วยในเรื่องของการเลือกสีให้ตรงกับความต้องการโดยที่เราไม่ต้องไปหาโค๊ดสีให้ยุ่งยาก เมื่อก่อนจะต้องเปิด google เพื่อค้นหาเว็บรวมสีมาใช้งานตลอด แต่ด้วยปลั๊กอินตัวนี้เราเพียงแค่จิ๊มลงไปบนสีที่ต้องการเปลี่ยน แล้วเลือกสีใหม่ที่ต้องการได้เลย

JavaScript เพิ่มลดข้อมูลใน Array ก่อนส่งไปกับแบบฟอร์ม

บันทึกช่วยจำ : SQL สำหรับการค้นหา ชื่อ-นามสกุล ที่มีคำนำหน้าต่างกัน

เนื่องจากระบบที่ใช้อยู่ ในแบบฟอร์มที่ใช้สำหรับบันทึกข้อมูลนั้น ยังไม่มีในส่วนของคำนำหน้าชื่อ เวลาเพิ่มข้อมูลเข้าระบบ จึงเกิดปัญหากับคำนำหน้าบางคำ เช่น นางสาว ที่บางครั้งก็เป็นตัวย่อ น.ส. ชื่อห้างหุ้นส่วนจำกัดต่างๆ บางครั้งก็เป็น หจก. จึงทำให้การเช็คข้อมูลซ้ำเป็นไปได้ยาก แล้วสุดท้ายจึงตัดสินใจ แก้ที่โค๊ด SQL ก่อนเลยละกัน จากนั้นค่อยแก้หน้าแบบฟอร์มของโปรแกรมทีหลัง เพราะข้อมูลเดิมมีอยู่เป็นจำนวนมาก