แนะนำเว็บไซต์ สอนเขียน PHP

โดย SONGCHAI SAETERN •
เป็นบล็อกที่รวบรวมเทคนิคที่ตัวผมเองใช้เขียนโปรแกรม PHP พัฒนาเว็บแอพพลิเคชั่นด้วยสคริปต์ต่างๆ เช่น JavaScript, jQuery, HTML, CSS และการใช้งานฐานข้อมูล MySQL, PostgreSQL

สอนเขียนโปรแกรม PHP รวมเทคนิคและสคริปต์ต่างๆ

ติดตามงานเขียนของผมได้ที่
http://sunzandesign.blogspot.com/

Daily Report ตอนที่ 6 : ทำความเข้าใจกับ MVC โดยการสร้างไฟล์ Controller, View, Model

โดย SONGCHAI SAETERN •


ระบบบันทึกการปฏิบัติงานประจำวัน
[PHP CodeIgniter + PostgreSQL]
ตอนที 6 : สร้างไฟล์ Controller, View, Model



หลังจากที่ได้ดาวน์โหลด CodeIgniter 3.0 มาเรียบร้อยในวิดีโอที่แล้ว
ในวิดีโอนี้เราจะมาเริ่มทำความคุ้นเคยกับการ
เขียน PHP ใน CodeIgniter Framework กันสักที


Daily Report ตอนที่ 5 : ดาวน์โหลด CodeIgniter และทดสอบใช้งานหน้า Welcome

โดย SONGCHAI SAETERN •

ระบบบันทึกการปฏิบัติงานประจำวัน ตอนที่ 5

1. ดาวน์โหลด CodeIgniter Framework
2. คลายซิปไฟล์ แล้วนำไปวางใน Document Root (เว็บเซิร์ฟเวอร์แต่ละตัวจะไม่เหมือนกัน)
3. ทดลองเข้าใช้งานผ่านหน้าเว็บ http://localhost/ชื่อโฟลเดอร์ของเรา
4. อ่านคู่มือการใช้งานได้ที่ http://localhost/ชื่อโฟลเดอร์ของเรา/user_guide
    Model - http://www.codeigniter.com/user_guide/general/models.html
    View - http://www.codeigniter.com/user_guide/general/views.html
    Controller - http://www.codeigniter.com/user_guide/general/controllers.html

ที่เหลือก็คือลองอ่านและทำความเข้าใจกับส่วนอื่นๆ ในคู่มือ เช่น Database Reference Helpers  Input Class  URI Class   Session Library 

Daily Report ตอนที่ 4 : ออกแบบฐานข้อมูล PostgreSQL [4/4]

โดย SONGCHAI SAETERN •

คอร์สระบบบันทึกการปฏิบัติงานประจำวันออกแบบฐานข้อมูล 4/4 : สร้างฐานข้อมูล ตารางต่างๆด้วย  phpPgAdmin














ติดตามคอร์สได้ที่ : ระบบบันทึกการปฏิบัติงานประจำวัน ด้วย PHP + CodeIgniter Framework

ติดตั้ง PHP 7.0 แล้วใช้ phpMyAdmin เวอร์ชั่นล่าสุดไม่ได้ ขึ้นข้อความเตือน The mbstring extension is missing

โดย SONGCHAI SAETERN •

 เครื่องที่ใช้ Ubuntu 14.04, PHP 7.0.3, MySQL 5.5


The mbstring extension is missing

UBUNTU แก้ด้วยการติดตั้ง mbstring เพิ่มเข้าไป

sudo apt-get install php7.0-mbstringsudo service apache2 restart

หากติดตั้งแล้วปรากฏข้อความใน Terminal ว่าไม่พบแพ็กเกจ ให้ติดตั้ง repository เพิ่มเข้าไป

sudo add-apt-repository ppa:ondrej/php
sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

หลังจากนั้นก็อัพเดตแพ็กเกจ
sudo apt-get update
แล้วก็ติดตั้ง mbstring อีกครั้ง

sudo apt-get install php7.0-mbstring

รีสตาร์ทเซอร์วิสแล้วทดสอบเข้าใช้งาน phpMyAdmin อีกครั้ง
sudo service apache2 restart

ผลลัพธ์ที่ได้

Daily Report ตอนที่ 3 : ออกแบบฐานข้อมูล PostgreSQL [3/4]

โดย SONGCHAI SAETERN •

คอร์สระบบบันทึกการปฏิบัติงานประจำวันตอนที่ 3/4 เพิ่มรายชื่อตารางที่จะต้องใช้พร้อมทั้งชื่อฟิลด์ให้ครบ







สารบัญ : ระบบบันทึกการปฏิบัติงานประจำวัน ด้วย PHP + CodeIgniter Framework

Daily Report ตอนที่ 2 : ออกแบบฐานข้อมูล PostgreSQL [2/4]

โดย SONGCHAI SAETERN •



การกำหนดฟิลด์ที่ใช้เก็บข้อมูลต่างๆ ในแต่ละตาราง




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





สารบัญ : ระบบบันทึกการปฏิบัติงานประจำวัน ด้วย PHP + CodeIgniter Framework

การติดตั้งฐานข้อมูล PostgreSQL และ pgAdmin บน Ubuntu 15.10

โดย SONGCHAI SAETERN •
การติดตั้งฐานข้อมูล PostgreSQL และโปรแกรมแกรมจัดการฐานข้อมูล pgAdmin 3 เพื่อใช้สร้างฐานข้อมูลบนเครื่องตัวเอง ในระบบปฏิบัติการ Ubuntu 15.10



JavaScript Template Engine : ลดภาระฝั่งเซิร์ฟเวอร์ โดยการใช้ จาวาสคริปต์แสดงผลแทน

โดย SONGCHAI SAETERN •


หลังจากที่ใช้ CodeIgniter ก็เกิดชื่นชอบใน "Template Parser Class" ก็เลยทดลองใช้งาน แล้วก็พบว่า PHP + Array เป็นอะไรที่เข้ากันจริงๆ และช่วงนั้นก็อยากจะเขียนสคริปต์ที่ลดภาระของเซิร์ฟเวอร์ให้เบาลงบ้าง โดยอาศัยหลักการใช้ JavaScript ช่วยแสดงผลแทนคำสั่งของ PHP

ซึ่งตอนนี้ก็มีจะมี AngularJS ที่ตอบโจทย์ข้อนี้อย่างมาก เพียงแต่ว่าผมไม่ได้ต้องการความสามารถทั้งหมดแค่ต้องการแค่ส่วนของ Template เท่านั้น ก็เลยเขียนมันขึ้นมาเองแบบบ้านๆซะเลย ^O^


 

ติดตั้ง PostgreSQL และ phpPgAdmin เพื่อใช้งานฐานข้อมูล

โดย SONGCHAI SAETERN •
คำที่ใช้ค้นหาวิธีติดตั้ง PostgreSQL บนเว็บ Koding.com คือ "koding.com install postgresql"

จะพบกับลิงค์ไปยังหน้าเพจ http://www.koding.com/docs/installing-postgresql
(ซึ่งลิงค์อาจจะมีการเปลี่ยนแปลงได้)




สำหรับ phpPgAdmin จะเป็นระบบที่เขียนขึ้นมาเพื่อจัดการฐานข้อมูลทำงานคล้ายกับ phpMyAdmin ที่เราใช้งานกับ MySQL เข้าไปดาวน์โหลดได้ที่

http://phppgadmin.sourceforge.net/doku.php?id=download

ให้ดาวน์โหลดเป็นนามสกุลหรือส่วนขยายเป็น .zip เพื่อใช้กับ Koding.Com

ระบบบันทึกการปฏิบัติงานประจำวัน ด้วย PHP + CodeIgniter Framework

โดย SONGCHAI SAETERN •

สิ่งที่จะได้เรียนรู้

1. การใช้งาน CodeIgniter Framework
  • การสร้าง Model, View, Controller
  • การสร้างตัวแบ่งหน้าด้วย Pagination ที่มีให้แล้ว
  • การสร้าง Method/Function เพื่อลดความซ้ำซ้อนของโค้ด
 2. การออกแบบฐานข้อมูล
  • หลักการ Normalization หรือ การแยกข้อมูลในกระดาษ ให้มีโครงสร้างเป็นระเบียบอยู่ในฐานข้อมูล เพื่อลดความซ้ำซ้อนของข้อมูล (ข้อมูลซ้ำกันมากๆอย่างไม่จำเป็นขนาดก็ใหญ่ตามไปด้วย)
  • การสร้างฐานข้อมูลด้วย PostgreSQL และจัดการข้อมูลด้วย PgAdmin 3
  • การเชื่อมโยงตารางที่เกี่ยวข้องกันด้วยคำสั่ง JOIN เพื่อแสดงชื่อหรือข้อมูลต่างๆของหลายๆตารางมาแสดงผลรวมกัน
3. การพิมพ์รายงานในรูปแบบ PDF 
  • การเรียกใช้ Libraries จากที่อื่นเข้ามาใน CodeIgniter
  • การใช้งาน TCPDF สร้างเอกสาร PDF จาก HTML
4. อื่นๆ
  • การใช้งาน jQuery
  • การใช้งาน Bootstrap
  • การเขียน JavaScript แบบ OOP

คีย์เวิร์ดวันละคำวันนี้ jQuery, how do you find only visible

โดย SONGCHAI SAETERN •
Green Leaf Pattern 01
© Photographer: Sunzandesign | Agency: Dreamstime.com

คีย์เวิร์ดวันละคำ วันนี้ ขอเสนอคำว่า


"jquery selector visible only"


ถามว่าทำไมถึงต้องค้นหาคำนี้
คำตอบก็คือ เพราะบางครั้งเราก็จะต้อง filter หรือค้นหาแค่รายการที่เราต้องการ ส่วนที่เหลือก็ซ่อนเอาไว้ เมื่อใช้คำสั่งเลือกทั้งหมดให้มีผลกับตัวที่เรา filter ไว้เท่านั้น แต่ดันไปมีผลกับทุกตัวรวมถึงที่ซ่อนไว้


เช่นนั้นแล้วการ filter ของเราจะมีประโยชน์อะไร


#Bug ไม่ต้องการเวลา


https://api.jquery.com/visible-selector









PHP Array การออกแบบฐานข้อมูลและเขียนโปรแกรมแสดงหมวดหมู่สินค้า แบบมีหมวดหมู่ย่อยไม่จำกัด

โดย SONGCHAI SAETERN •

ดูวิธีการใช้งานแบบเต็มๆที่ PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น 

 

1. สร้างตารางเก็บข้อมูลหมวดหมู่สินค้า

    ส่วนที่สำคัญก็คือ การเพิ่มฟิลด์เพื่อใช้สำหรับอ้างอิงหมวดหมู่หลักของรายการนั้นๆ

ตาราง tb_category
1. id               รหัส primary key
2. name         ชื่อหมวดหมู่
3. parent_id    รหัสของหมวดหมู่หลัก (ถ้าไม่มีให้ใส่ 0)

2. ออกแบบ Array สำหรับเก็บข้อมูลที่ Query จากฐานข้อมูล

    ในขั้นตอนปกติทั่วไป ผมจะใช้วิธีดึงข้อมูลเป็นทอดๆ โดยคิวรี่ไปเรื่อยๆ

2.1 หาหมวดหมู่หลัก WHERE parent_id = 0
2.2 ใน While Loop ให้หาหมวดหมู่ย่อยของแต่ละรายการด้วย WHERE parent_id = id

จากรูปแบบข้อมูลของ category ในความเป็นจริงก็คือ เราต้องการทุกรายการอยู่แล้ว และหากเป็นการ Query ซ้อน Query ก็จะทำให้ MySQL ต้องทำงานหนัก ลองนึกภาพถ้าหมวดหมู่หลัก 1 หัวข้อ มีหมวดหมู่ย่อยของหมวดย่อยโดยเฉลี่ย 3 ชั้น ก็จะเท่ากับต้องคิวรี่ 4 ครั้งในแต่ละหมวด

ดังนั้น ถ้ามี 10 หมวดหลัก ก็เท่ากับว่าต้องคิวรี่ 40 ครั้งจึงจะได้ข้อมูลครบถ้วน

งั้นเรามาลดการทำงานของ MySQL ด้วยการ Query ครั้งเดียวแล้วยัดมันเข้าไปใน Array กันดีกว่า

while($row=ดึงข้อมูลแต่ละเรคอร์ด){
    $category[ไอดี] = $row;
}

ตอนนี้เรามี $category ที่เก็บข้อมูลครบถ้วนแล้ว

แต่สิ่งที่เราต้องการคือข้อมูลที่แยกหมวดหมู่แล้วนะ งั้นก็มาดูกันหน่อยว่า รายการไหนเป็นหมวดย่อยบ้าง และก็จัดการสร้างคีย์ "sub" ให้กับรายการนั้นๆที่เป็นหมวดหลักของเราไปเลย

while($row=ดึงข้อมูลแต่ละเรคอร์ด){
     if($row['parent_id'] > 0){
          $category[$row['parent_id']]["sub"][] = $row;
     }else{
          $category[$row['id']] = $row
     }
}

แค่นี้รายการต่างๆก็อยู่เข้าที่เข้าทางเรียบร้อย ที่เหลือก็คือการ วนลูปแสดงมันออกมา

 แต่เราต้องสร้างฟังก์ชั่นในการแสดงข้อมูลรอไว้ก่อนนะ เพระถ้ารายการไหนเป็น sub เราจำเป็นต้องส่งเข้าฟังก์เดิมอีกครั้งไปเรื่อยๆ รู้สึกว่าเขาจะเรียกว่า RECURSIVE Function

function displayCategory($data){
    echo '<hr>';
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    if(isset($data['sub']){
        displayCategory($data['sub']);   //RECURSIVE Function
    }
}

foreach($category as $id=>$row){
    displayCategory($row);
}

 ที่จะแนะนำทั้งหมดก็มีแค่นี้แหละ แต่ถ้าสงสัยหรือรันแล้ว Error เราจะเจอกันใหม่อีกครั้งนะ ^^"
สำหรับวิดีโอสาธิตขั้นตอนการเขียนโค้ดและแสดงผลแบบทีละสเต็ปเอาไว้จะอัพเดตอีกที

ดูวิธีการใช้งานแบบเต็มๆที่ PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น




PHP CI MANIA - PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/

jQuery filter Case insensitive : ค้นหาอีลิเมนต์ที่ต้องการด้วย jQuery

โดย SONGCHAI SAETERN •


ก่อนหน้านี้ผมเคยแนะนำวิธีค้นหาข้อมูลด้วย :contains() Selector ใน jQuery แต่ปรากฏว่างานผมถูกตีกลับครับ ทดสอบแล้วไม่เป็นดังที่ต้องการ เพราะ


text: A string of text to look for. It's case sensitive.


ครับ มันสนใจตัวอักษร ระหว่างตัวเล็กกับตัวใหญ่ด้วย

<p>I am Cyberman</p>


ถ้าผมต้องการค้นหา <p> ที่มีคำว่า cyberman การใช้ contains จะค้นไม่เจอครับ ต้องให้เหมือนทุกคำ คือ จะเจอก็ต่อเมื่อค้นคำว่า Cyberman



ดังนั้น ก็ต้องเปลี่ยนตามลิงค์นี้แหละครับ ^^"

http://stackoverflow.com/questions/7853851/jquery-how-can-i-write-a-case-insensitive-attribute-contains-selector

หลังจากที่ใช้โค้ดใหม่ก็เป็นดังนี้
$('tr').hide();//ซ่อนทั้งหมด

var myCode = $('#my_code').val();
var reg = RegExp(myCode ,"i"); 
$('.select_item').filter(function() {
     return reg.test(this.value);
}).parents('tr').show();//แสดงตามรายการที่ตรง my_code

เพียงเท่านี้ ทุกแถวที่มีคำตรงกับ my_code ก็จะแสดงส่วนแถวที่ไม่ตรงก็จะถูกซ่อนไว้ตามเดิม