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

หยุดเขียน CRUD ซ้ำๆ: Vibe Coding เปลี่ยน PHP Dev ยังไง


🤖 Vibe Coding Series · EP.1

หยุดเขียน CRUD ซ้ำๆ:
Vibe Coding เปลี่ยน PHP Dev ยังไง

เมื่อ AI กลายเป็น pair programmer และ framework กลายเป็น rendering engine — นักพัฒนา PHP ยุคใหม่ต้องปรับตัวอย่างไร

📅 June 2025⏱ อ่าน ~8 นาที🎯 PHP / CI4 / Laravel

😩 ปัญหาที่ PHP Dev ทุกคนเจอ: CRUD วนซ้ำไม่รู้จบ

ถ้าคุณเคยสร้างระบบ admin panel, ERP, หรือระบบบริหารงานองค์กร คุณคงรู้ดีว่ามันเป็นยังไง — Controller ก็โครงสร้างเดิม, Model ก็ query เดิม, View ก็ตาราง + form เดิมๆ เปลี่ยนแค่ชื่อ module

Carlos García นักพัฒนาชาวสเปนที่ทำงานในศูนย์วิจัยมหาวิทยาลัย พบว่าตัวเองใช้เวลางาน 80% ไปกับ boilerplate code ที่ซ้ำซาก และมีแค่ 20% ที่เป็น business logic จริงๆ ปัญหานี้ไม่ใช่แค่เรื่องน่าเบื่อ แต่มันทำให้ codebase บวม, maintain ยาก, และเปลืองเวลาที่ควรจะไปพัฒนา feature ใหม่ๆ

💡 คุณเจอแบบนี้ไหม?

สร้าง module ใหม่ทีนึง → copy Controller เดิม → แก้ชื่อ table → ปรับ form fields → นั่งแก้ View อีก 2-3 ไฟล์ → ทำซ้ำแบบนี้ทุก module จนครบ 20 module

วันนี้เราจะมาดูว่า Vibe Coding — แนวคิดการเขียนโค้ดยุคใหม่ที่ใช้ AI เป็น pair programmer — มันทำงานยังไง และ PHP developer อย่างเราจะนำมาใช้กับ CodeIgniter 4 และ Laravel ได้อย่างไรบ้าง


🎵 Vibe Coding คืออะไร?

Vibe Coding คือ paradigm การพัฒนาซอฟต์แวร์ที่นักพัฒนาทำหน้าที่เป็น architect และ director แทนที่จะเป็น typist ที่นั่งพิมพ์โค้ดทุกบรรทัดด้วยตัวเอง คุณ "บอก" AI ว่าต้องการอะไร แล้วให้ AI + framework จัดการส่วนที่ซ้ำซากแทน

แนวคิดหลักคือการ shift จาก "how to code it" (จะเขียนโค้ดยังไง) ไปเป็น "what to build" (จะสร้างอะไร) — เหมือนกับที่สถาปนิกวาด blueprint แล้วให้ช่างก่อสร้างทำตาม แทนที่จะแบกปูนขึ้นนั่งร้านเอง

✅ Vibe Coding ในทางปฏิบัติ

แทนที่จะเขียน Controller + Model + 5 Views สำหรับ module เดียว — คุณแค่ เขียน configuration array 1 ชุด แล้วให้ framework render ทุกอย่างให้อัตโนมัติ


🏗️ ตัวอย่างจริง: Framework ที่สร้างจาก Vibe Coding Philosophy

Carlos ได้สร้าง Ragnos — open-source framework ที่วางอยู่บน CodeIgniter 4 — โดยใช้แนวคิด Configuration over Programming แทนที่จะเขียน controller/model/view แยกกัน คุณแค่ define Data Dictionary เป็น PHP array ชุดเดียว แล้ว framework จะ generate ทุกอย่างให้

ตัวอย่าง: สร้าง Module จัดการผู้ใช้งาน

PHP · Data Dictionary (Ragnos / CI4)
// แทนที่จะเขียน Controller + Model + View แยกกัน
// เราแค่ define config array ชุดนี้ชุดเดียว

$config = [
    'title'    => 'จัดการผู้ใช้งาน',
    'table'    => 'users',
    'pk'       => 'id',

    'fields' => [
        [
            'name'     => 'username',
            'label'    => 'ชื่อผู้ใช้',
            'type'     => 'text',
            'rules'    => 'required|min_length[3]',
            'in_list'  => true,
        ],
        [
            'name'     => 'email',
            'label'    => 'อีเมล',
            'type'     => 'email',
            'rules'    => 'required|valid_email',
            'in_list'  => true,
        ],
        [
            'name'     => 'role',
            'label'    => 'สิทธิ์ใช้งาน',
            'type'     => 'select',
            'options'  => ['admin' => 'Admin', 'staff' => 'Staff'],
            'roles'    => ['admin'], // เฉพาะ admin เท่านั้นที่เห็น field นี้
        ],
    ],

    'actions' => ['create', 'edit', 'delete', 'export_excel'],
    'per_page' => 25,
];

// Framework จะ auto-generate:
// ✅ Data table + pagination
// ✅ Add/Edit form พร้อม CSRF + validation
// ✅ Export Excel/CSV
// ✅ SQL injection protection
// ✅ Role-based field visibility

สังเกตว่า ไม่มีโค้ด HTML เลยแม้แต่บรรทัดเดียว — framework อ่าน config แล้ว render ทุกอย่างให้เอง และนี่แหละคือสิ่งที่ทำให้ Vibe Coding กับ AI ทำงานด้วยกันได้ดีมาก เพราะ AI สามารถ generate PHP array ได้แม่นยำ ไม่ต้องกังวลเรื่อง HTML structure


🔄 Vibe Coding Workflow สำหรับ PHP Dev

ไม่ว่าจะใช้ CI4, Laravel, หรือ framework อะไรก็ตาม workflow ของ Vibe Coding มักจะเป็นแบบนี้:

  • 1
    🎯 กำหนด Spec ให้ชัด (Architect Mode)
    ระบุ module ที่ต้องการ, fields ที่จำเป็น, business rules, และ permissions ก่อน — ยิ่ง spec ชัด ยิ่ง AI generate ได้แม่น
  • 2
    🤖 Prompt AI ให้ generate โครงสร้าง
    ใช้ AI สร้าง config array, migration file, หรือ Blade component ให้ แทนที่จะพิมพ์เอง — ทบทวนและปรับแก้เท่าที่จำเป็น
  • 3
    ⚙️ ให้ Framework Render
    วาง config ที่ได้ลงใน controller หรือ service layer แล้วให้ framework จัดการ rendering, validation, และ security
  • 4
    🔍 Review + Test
    คุณทำหน้าที่ reviewer — ตรวจ logic, ดู edge cases, เทสต์ security แทนที่จะนั่งพิมพ์โค้ด

⚡ Vibe Coding กับ Laravel: ตัวอย่าง Blade Component

ใน Laravel แนวคิดเดียวกันนี้ทำได้ผ่าน Blade Components + Service Classes — แทนที่จะเขียน blade template ซ้ำๆ คุณสร้าง reusable component แล้ว AI ช่วย generate การเรียกใช้:

Blade · Laravel Reusable Data Table Component
{{-- resources/views/components/data-table.blade.php --}}
@props([
    'columns'  => [],
    'rows'     => [],
    'title'    => 'ข้อมูล',
    'actions'  => true,
])

<div class="card shadow-sm">
    <div class="card-header d-flex justify-content-between">
        <h5>{{ $title }}</h5>
        <a href="{{ route(request()->route()->getName() . '.create') }}"
           class="btn btn-primary btn-sm">+ เพิ่มข้อมูล</a>
    </div>

    <table class="table table-hover mb-0">
        <thead>
            <tr>
                @foreach ($columns as $col)
                    <th>{{ $col['label'] }}</th>
                @endforeach
                @if ($actions) <th>จัดการ</th> @endif
            </tr>
        </thead>
        <tbody>
            @forelse ($rows as $row)
                <tr>
                    @foreach ($columns as $col)
                        <td>{{ $row->{$col['field']} }}</td>
                    @endforeach
                    @if ($actions)
                        <td>
                            <a href="#" class="btn btn-sm btn-outline-primary">แก้ไข</a>
                            <a href="#" class="btn btn-sm btn-outline-danger">ลบ</a>
                        </td>
                    @endif
                </tr>
            @empty
                <tr><td colspan="99" class="text-center text-muted">ไม่พบข้อมูล</td></tr>
            @endforelse
        </tbody>
    </table>
</div>

เมื่อมี component แล้ว การ เรียกใช้ใน View กลายเป็นเรื่องง่ายมาก และนี่คือส่วนที่ AI ช่วย generate ได้เร็วมาก:

Blade · เรียกใช้ Component ใน View
{{-- ใช้ใน products/index.blade.php --}}
<x-data-table
    title="รายการสินค้า"
    :columns="[
        ['field' => 'name',  'label' => 'ชื่อสินค้า'],
        ['field' => 'price', 'label' => 'ราคา (บาท)'],
        ['field' => 'stock', 'label' => 'คงเหลือ'],
    ]"
    :rows="$products"
/>

📊 เปรียบเทียบ: Traditional Coding vs Vibe Coding

หัวข้อTraditional CodingVibe Coding + AI
เวลาสร้าง Module ใหม่1–3 วัน (ต้องเขียน C+M+V ทุกไฟล์)30 วินาที – 30 นาที
โค้ดที่ต้องเขียนเอง~80% boilerplate, 20% business logic~20% config, 80% business logic
ความเสี่ยงด้าน Securityสูง — ต้อง sanitize เอง ทุก inputต่ำ — framework จัดการ CSRF/XSS/SQLi
ความสามารถของ AIช่วยได้จำกัด — HTML + logic ปนกันสูงมาก — AI generate array/config แม่น
Maintainabilityยาก — view กระจายหลายไฟล์ง่าย — แก้ config ที่เดียว
Role ของ DeveloperCoder (พิมพ์โค้ดทุกบรรทัด)Architect + Reviewer
Onboarding ทีมใหม่ต้องรู้ codebase ลึกอ่าน config array เข้าใจทันที

💡 เทคนิค Prompt สำหรับ PHP Dev ที่ได้ผลจริง

การ Vibe Coding จะได้ผลดีแค่ไหน ขึ้นอยู่กับคุณภาพของ prompt เป็นหลัก นี่คือ pattern ที่ใช้ได้ดีกับงาน PHP:

Prompt Template · สำหรับ AI
// ❌ Prompt แย่ — ไม่ชัดเจน
"สร้าง CRUD สินค้าให้หน่อย"

// ✅ Prompt ดี — ระบุ context + constraint + format
"สร้าง Laravel Controller สำหรับ module จัดการสินค้า
โดยมี fields: name (string), price (decimal), stock (int), category_id (FK)
- ใช้ Form Request validation
- ใช้ Repository Pattern
- return JSON response สำหรับ API
- ใส่ PHPDoc ทุก method
- Laravel 11, PHP 8.2"
🔑 หลัก 3 ข้อของ Prompt ที่ดี

Context — บอก framework, version, และ architecture pattern ที่ใช้  |  Constraint — ระบุข้อจำกัด เช่น "ห้าม raw query", "ต้องมี type hint"  |  Output Format — บอกว่าต้องการ array, class, หรือ blade component


🏁 สรุป: Developer ยุคใหม่คือ Architect ไม่ใช่ Typist

Vibe Coding ไม่ได้แปลว่า "ให้ AI เขียนโค้ดทั้งหมดแล้วไม่ต้องคิดอะไร" — มันหมายความว่าเราเปลี่ยน role ตัวเองจาก คนพิมพ์โค้ด ไปเป็น คนออกแบบระบบ

สำหรับ PHP developer ที่ทำงานกับ CodeIgniter 4 หรือ Laravel การนำ Vibe Coding มาใช้หมายถึง:

  • ลงทุนเวลาสร้าง reusable components / config-driven modules ให้ครบก่อน
  • ใช้ AI generate structure code (config arrays, migrations, form requests) ที่ซ้ำซาก
  • โฟกัสเวลาของคุณไปกับ business logic, security review, และ architecture decisions
  • ทดสอบและ review ผลลัพธ์จาก AI เสมอ — อย่าเชื่อ 100% โดยไม่ตรวจ

ผลลัพธ์ที่ได้คือ — ระบบที่ deliver เร็วขึ้น, code ที่ maintainable มากขึ้น, และ developer ที่มีเวลาคิด creative solution แทนที่จะนั่ง copy-paste boilerplate ซ้ำๆ ทุกวัน



PHP CI MANIA - PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้ม  
http://www.phpcodemania.com

ความคิดเห็น

ค้นหาบล็อกนี้

บทความที่นิยมสูงสุด ประจำปี

การทำ Index ให้ MySQL Database เพื่อเพิ่มความเร็ว

สำหรับตัวอย่างนี้จะเป็นการ JOIN ตาราง 2 ตาราง 1. tb_reject_hd 2. tb_reject_desc ซึ่งจะเชื่อมกันด้วยฟิลด์ docno จะเห็นว่าเราสามารถคิวรี่เรียกข้อมูลออกมาได้ตอนที่ยังไม่ใส่ ORDER BY แต่เมื่อใส่ ORDER BY เข้าไป จะหมุนค้างจนหน้าเว็บหยุดทำงาน จากนั้นก็ลองเพิ่ม INDEX ให้กับฟิลด์ docno ในตาราง tb_reject_desc  ซึ่งในตัวอย่างนี้จะสร้างตารางใหม่ขึ้นมาจากตารางเดิม เปลี่ยนชื่อเป็น tb_reject_desc_with_index และทำการเพิ่ม INDEX KEY เข้าไป เมื่อทดสอบคิวรี่แบบมี ORDER BY จะเห็นว่าสามารถแสดงผลได้ทันที จากการสังเกตตัวเลขเวลาในการประมวลผล จะเห็นได้ว่าแบบไม่ใช้ ORDER BY จะทำงานเร็วกว่า แต่ในการทำงานส่วนใหญ่ก็มักจะต้องใช้ ORDER BY อย่างหลีกเลี่ยงไม่ได้ เช่นกรณีค้นหา แบบเรียงลำดับ ตัวอย่างโค้ดคิวรี่ข้อมูลจากตารางที่ Add Index Key แล้ว <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Add Index Key</title> </head> <body> <h2>ORDER BY with ...

PHP CI MANIA 0.8.4.09 แก้ไขปัญหา Import ไฟล์ Excel แล้วไม่สามารถบันทึกได้ + เพิ่มตัวเลือก Validate บางฟิลด์

- เพิ่มตัวเลือก Validate บางฟิลด์ กรณีละเว้นการตรวจสอบให้เอาเครื่องหมายเช็คถูกออก -  แก้ไขปัญหา Import ไฟล์ Excel แล้วไม่สามารถบันทึกได้ สมาชิก Premium ดาวน์โหลดได้ที่ http://fastcoding.phpcodemania.com/index.php/downloads PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding.phpcodemania.com

แจกโค้ด PHP : รวมลิงค์ แจกฟรี!! ตัวอย่างโปรเจ็กต์ ที่พัฒนาด้วย PHP

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ  และด้านล่างนี้ก็เป็น Source Code PHP ระบบต่างๆ ที่มีเหล่าผู้ใจดีแจกฟรี!! ให้นำไปลองใช้ลองศึกษากันครับ แจกฟรี  !! ตัวอย่างการ  PHP  Booking # จองห้องประชุม  ผ่านเว็บครับ http://www.thaicreate.com/php/forum/090558.html ระบบแบบสอบถาม https://www.thaicreate.com/php/forum/099342.html แจก code!! การทำประเมินออนไลน์มี ไว้สำหรับพัฒนาต่อยอด https://www.thaicreate.com/php/forum/102203.html แจกฟรี PHP CodeIgniter CMS ให้ทุกท่านได้ลอง (รองรับ Responsive) http://www.thaicreate.com/php/forum/122929.html โดย : https://www.cszcms.com/ แจก PHP : ระบบยืม-คืนเอกสาร (จากตัวอย่าง เอกสารข้อมูลวัตถุดิบสินค้า) http://www.thaicreate.com/php/forum/103428.html แจกระบบ PHP Shopping Cart ระบบตะกร้าสินค้า ระบบสั่งซื้อ มีระบบตัดสต๊อก, สั่งซื้อวัตถุดิบคงเหลือ ht...

การสร้างเว็บไซต์ในปี 2023 นั้นจะต้องคำนึงถึงอะไรบ้าง

การสร้างเว็บไซต์ในปี 2023 นั้นจะต้องคำนึงถึงความเปลี่ยนแปลงของเทคโนโลยีและแนวโน้มการใช้งานของผู้ใช้ใหม่ๆ ดังนั้น นี่คือเทคนิคที่สามารถช่วยให้การสร้างเว็บไซต์ในปี 2023 เป็นไปได้อย่างรวดเร็วและเป็นประสิทธิภาพ: 1. ใช้ Responsive Design: การออกแบบเว็บไซต์ให้สามารถปรับขนาดได้ตามขนาดของหน้าจอของอุปกรณ์ต่างๆ เช่น โทรศัพท์มือถือ แท็บเล็ต และคอมพิวเตอร์ เพื่อให้ผู้ใช้สามารถเข้าถึงและใช้งานได้ง่ายและสะดวก 2. ใช้โครงสร้างของ HTML5: การใช้โครงสร้าง HTML5 จะช่วยให้เว็บไซต์ของคุณมีประสิทธิภาพและปรับปรุงในเรื่องของการเข้าถึงข้อมูล การใช้งานและความปลอดภัย 3. ใช้ CSS Grids หรือ Flexbox: การใช้ CSS Grids หรือ Flexbox จะช่วยให้ง่ายต่อการจัดหน้าเว็บไซต์ และสามารถปรับแต่งรูปแบบของเว็บไซต์ได้ง่ายขึ้น 4. ใช้ JavaScript Frameworks: การใช้ JavaScript Frameworks เช่น React, Angular, หรือ Vue.js จะช่วยให้สามารถสร้างเว็บไซต์ที่เป็น interactive และมีประสิทธิภาพได้อย่างรวดเร็ว 5. ใช้ Content Management Systems (CMS): การใช้ CMS เช่น WordPress, Joomla, หรือ Drupal จะช่วยให้สามารถสร้างเว็บไซต์ได้อย่างร PHP  C...

PHP + Fullcalendar กับ MySQL

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode()

จัดระเบียบโค้ด ใน Notepad++ (Auto indentation plugin)

เวลาเขียนโค้ด แล้วไม่ได้จัดรูปแบบ หรือเอาโค้ดจาก Text Editor หนึ่งมาใช้ในอีกตัวหนึ่งก็มีโอกาสที่ Tab หรือ Space bar จะต่างกัน แล้วเราจะมานั่ง TAB เองก็คงไม่ไหว จึงจำเป็นต้องหา Plugin เข้ามาช่วย ลองค้นดูก็เจอกับกระทู้นี้ >> แม้หน้าตาจะไม่ตรงกันแต่หลักๆก็คือเพิ่ม Plugins เข้าไปชื่อ Indent By fold อ่านเต็มๆได้ที่นี่ https://softwarerecs.stackexchange.com/questions/1496/auto-indentation-plugin-for-notepad

PHP ระบบบริหารจัดการ พล็อตนิยาย - ตอนที่ 1

PHP Fiction Management System   โปรเจ็กต์นี้จะสร้างเป็น "ระบบบริหารจัดการพล็อตนิยาย" แบบง่ายๆ มาเล่าสู่กันฟังครับ มีอยู่ช่วงหนึ่งที่ผมสนใจการเขียนนิยาย และค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการเขียนนิยาย และได้พบกับโปรแกรมหนึ่งที่ช่วยงานด้านการเขียนนิยายให้เป็นเรื่องที่ง่ายขึ้น แต่จากที่ได้อ่านรีวิวแล้วดูเหมือนว่า โปรแกรมช่วยเขียนนิยายนี้ ไม่จะไม่ค่อยรองรับภาษาไทย แต่ผมก็ยังไม่ได้ลองมาดาวน์โหลดมาลองใช้งานดูนะครับ แต่รู้สึกชอบเครื่องมือนี้ เลยอยากลองพัฒนาโดยถอดคุณสมบัติพื้นฐานมาใช้งานดู ว่าจะใช้กับงานเขียนนิยายได้จริงรึเปล่า ตัวอย่างระบบจัดการพล็อตเรื่อง เพื่อช่วยงานเขียนนิยาย หลังจากที่ได้นั่งคิดนอนคิด และหลับไปฝันไป จนในที่สุดก็ได้ฐานข้อมูลระบบบริหารจัดการพล็อตนิยายมาคร่าวๆ มาจนได้ โครงสร้างฐานข้อมูลตอนนี้อาจจะขี้เหร่ไปบ้าง แต่ในอนาคตก็คงจะพัฒนากันต่อไป   ตารางที่จะต้องสร้าง มีทั้งหมด ดังนี้ 1. รายชื่อนิยายทั้งหมด 2. แนวนิยายที่เขียน 3. พล็อตของแต่ละเรื่อง 4. ฉากเหตุการณ์ในแต่ละพล็อต 5. เนื้อเรื่องในแต่ละฉาก 6. รายชื่อตัวละครในนิยา...

MySQL คำสั่ง SQL จัดเรียงคำตามตัวอักษร ภาษาไทย ในฟิลด์ที่กำหนด Collation เป็น utf-8

การจัดเรียงข้อมูลตามลำดับตัวอักษรไทย   CONVERT( name USING tis620 ) ASC การเรียงลำดับตัวอักษรแบบ tis-620 ในการเขียนโปรแกรม PHP เพื่อแสดงข้อมูลจากฐานข้อมูล MySQL การเขียนคำสั่ง SQL ให้จัดเรียงลำดับนั้น เราจะใช้ ORDER BY  และกำหนดฟิลด์ที่ต้องการจัดเรียงลำดับ เช่น ในตัวอย่างนี้จะเป็นการจัดเรียงตามลำดับตัวอักษรของชื่อเมนู นั่นก็คือฟิลด์ name นั่นเอง แต่ในขั้นตอนการสร้างฐานข้อมูลนั้น เราได้กำหนด Charset ของตารางและฟิลด์เป็นการจัดเรียง Collation แบบ utf-8 เอาไว้เพื่อให้รองรับภาษาแบบมาตรฐาน ดังนั้นเมื่อเขียนโปรแกรมสั่ง ORDER BY name ASC ก็จะมีการจัดเรียงที่จะให้คำที่มีสระนำหน้าอยู่หลัง ฮ. นกฮุก ไปเสียหมด จะเห็นว่าชื่อเมนูหรือสินค้าที่มี ข นำหน้าจะมาเป็นลำดับแรก ทั้งที่จริงๆแล้ว มีสินค้าที่เป็น ก อยู่หลายรายการ เพียงแต่ว่ามีสระนำหน้าอยู่เท่านั้นเอง จากรูปด้านบน จะมีรายการที่เป็น ก อยู่ 3 รายการ คือเมนู โกโก้ ต่างๆ แต่เพราะมีสระโอ นำหน้า จึงทำให้การจัดเรียงแบบ utf-8 ให้อยู่ในลำดับท้าย เพื่อแก้ไขปัญหานี้ การเขียนโปรแกรมเพื่อ ORDER BY จะต้...

แก้ปัญหา Xampp เข้าผ่าน IP จากเครื่องอื่นไม่ได้ โดยการเปิด Firewall เชื่อมต่อ httpd ได้

กรณีที่ติดตั้ง Xampp แล้วเปิดจากเครื่องอื่นๆผ่าน IP ไม่ได้ ให้ทำการเปิด Firewall ในเครื่องที่ติดตั้ง xampp เพื่ออนุญาตให้เครื่องอื่นเข้าถึงได้ คลิกเมนู ค้นหา แล้วพิมพ์คำว่า firewall แล้วเลือกเมนู Firewall & network protection คลิกที่เมนู Allow an app through firewall คลิกที่ปุ่ม Change settings เลือกทั้ง Private และ Public (ถ้าไม่มีให้กดที่ปุ่ม Allow another app... เพื่อเพิ่ม httpd.exe ใน Path เฉพาะของเรา กรณีที่ไม่ได้ติดตั้ง) (สามารถเปิดดูรายละเอียด Path ของรายการที่แสดงได้ โดยคลิกปุ่ม Details...)   จากนั้นกด OK   ลองเข้าจากอีกเครื่องด้วย IP อีกครั้ง ก็จะพบว่าสามารถเข้าถึงหน้าเว็บที่ต้องการได้เรียบร้อย ที่มา : https://www.youtube.com/watch?v=KIYpkDy34DY   บทความที่เกี่ยวข้อง แก้ปัญหาการเปิด Firewall ทำให้ Client เชื่อมต่อ MySQL ไม่ได้ https://phpcodemania.blogspot.com/2021/04/xampp-ip-firewall-httpd.html   PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding...

ระบบวัสดุคงเหลือ - การตีราคาสินค้าคงเหลือด้วยวิธีราคาทุน (Inventory Costs Method)

การตีราคาสินค้าคงเหลือด้วยวิธีราคาทุน (Inventory Costs Method) หลังจากได้อ่านบทความในเว็บต่างๆก็สรุปได้ดังนี้ 1. FIFO เข้าก่อน-ออกก่อน เหมาะสำหรับการตัดสต๊อกที่ใช้สำหรับของที่มีวันที่หมดอายุกำกับไว้ อาจจะเนื่องด้วยพนักงานสต๊อกจะต้องคอยเช็ควันที่หมดอายุบนสินค้าเสมอๆอยู่แล้ว 2. LIFO เข้าหลัง-ออกก่อน เหมาะสำหรับการตัดสต๊อกสินค้าที่ตกเทรนเร็วแบบคอมพิวเตอร์ หรือสินค้าเทคโนโลยีอื่นๆ ซึ่งส่วนใหญ่จะทำโปรโมชั่นมาล่อตาล่อใจให้ลูกค้าซื้อรุ่นใหม่ๆ ดังนั้นพนักงานก็ต้องตัดสต๊อกตัวที่ใหม่ที่สุดออกก่อน เพราะทิ้งไว้นานไปราคาทุน ณ ปัจจุบันจะไม่ตรงกับราคาที่ขายไป 3. Weighted Average ถัวเฉลี่ยน้ำหนัก เหมาะกับสินค้าที่ไม่มีวันหมดอายุกำกับ และราคาขึ้นลงไม่มากนัก (คอมพิวเตอร์หรือสินค้าเทคโนโลยีจะขึ้นลงทีเป็นหลักร้อยหลักพัน) ซึ่งเหมาะกับการนำมาใช้ทำสต๊อกวัสดุคงเหลือของสำนักงาน ปัญหาของการใช้ Weighted Average หรือการถัวเฉลี่ยราคาทุนต่อหน่วย จะมีอยู่ 2 รูปแบบ 1. แบบ Periodic Inventory เป็นการคิดราคาทุนถัวเฉลี่ยของสินค้าคงเหลือปลายงวด นั่นก็คือ บันทึกการรับเข้าด้วยราคาต่อหน่...

บทความเดือนล่าสุด

แจกโค้ด PHP : รวมลิงค์ แจกฟรี!! ตัวอย่างโปรเจ็กต์ ที่พัฒนาด้วย PHP

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ  และด้านล่างนี้ก็เป็น Source Code PHP ระบบต่างๆ ที่มีเหล่าผู้ใจดีแจกฟรี!! ให้นำไปลองใช้ลองศึกษากันครับ แจกฟรี  !! ตัวอย่างการ  PHP  Booking # จองห้องประชุม  ผ่านเว็บครับ http://www.thaicreate.com/php/forum/090558.html ระบบแบบสอบถาม https://www.thaicreate.com/php/forum/099342.html แจก code!! การทำประเมินออนไลน์มี ไว้สำหรับพัฒนาต่อยอด https://www.thaicreate.com/php/forum/102203.html แจกฟรี PHP CodeIgniter CMS ให้ทุกท่านได้ลอง (รองรับ Responsive) http://www.thaicreate.com/php/forum/122929.html โดย : https://www.cszcms.com/ แจก PHP : ระบบยืม-คืนเอกสาร (จากตัวอย่าง เอกสารข้อมูลวัตถุดิบสินค้า) http://www.thaicreate.com/php/forum/103428.html แจกระบบ PHP Shopping Cart ระบบตะกร้าสินค้า ระบบสั่งซื้อ มีระบบตัดสต๊อก, สั่งซื้อวัตถุดิบคงเหลือ ht...

สร้าง Cafe ERP ด้วย Go & Next.js

NEW RELEASE 2026 สร้าง Cafe ERP ด้วย Go & Next.js คู่มือลงมือทำระบบขายหน้าร้าน (POS) และระบบจัดการร้านค้า (ERP) จากศูนย์จนขึ้น Production จริง หนังสือ "สร้าง Cafe ERP ด้วย Go & Next.js" เล่มนี้ไม่ใช่หนังสือทฤษฎีทั่วไป แต่เป็น คู่มือระดับสถาปนิก (Architect Guide) ที่จะพาคุณลุยเขียนโค้ดทีละบรรทัด สร้างระบบบริหารจัดการร้านคาเฟ่ที่ทำงานได้เสถียร ไร้บั๊ก ปลอยภัย และที่สำคัญคือ **"ใช้งานทางธุรกิจได้จริงในประเทศไทย"** จุดเด่นที่ไม่เหมือนใครในหนังสือเล่มนี้ 🇹🇭 เกณฑ์สรรพากรไทยและภาษีมูลค่าเพิ่ม (VAT 7%) ไม่ละเลยกฎหมายสรรพากร! สอนออกแบบ Schema และเขียนโค้ดคำนวณภาษีมูลค่าเพิ่ม (VAT Inclusive/Exclusive) สำหรับการออก **ใบกำกับภาษีอย่างย่อ (ABB)** และ **ใบกำกับภาษีเต็มรูป (FULL)** รวมไปถึงสรุปรายงานภาษีตอนปิดกะ 🔌 ต่อเชื่อม Hardware & การทำงานแบบไร้เน็ต (Offline-First) เจาะ...

จัดระเบียบโค้ด ใน Notepad++ (Auto indentation plugin)

เวลาเขียนโค้ด แล้วไม่ได้จัดรูปแบบ หรือเอาโค้ดจาก Text Editor หนึ่งมาใช้ในอีกตัวหนึ่งก็มีโอกาสที่ Tab หรือ Space bar จะต่างกัน แล้วเราจะมานั่ง TAB เองก็คงไม่ไหว จึงจำเป็นต้องหา Plugin เข้ามาช่วย ลองค้นดูก็เจอกับกระทู้นี้ >> แม้หน้าตาจะไม่ตรงกันแต่หลักๆก็คือเพิ่ม Plugins เข้าไปชื่อ Indent By fold อ่านเต็มๆได้ที่นี่ https://softwarerecs.stackexchange.com/questions/1496/auto-indentation-plugin-for-notepad

PHP CI MANIA : ตอนที่ 8 วิธีสร้าง Dropdown List ให้เลือกในแบบฟอร์มป้อนข้อมูล แบบ JOIN มาจากตารางอื่น (Option List)

เปิดไปที่แท็ป " ตั้งค่า " เลื่อนลงไปใน ส่วนที่ 3 เพื่อตั้งค่าการ JOIN TABLE เมื่อคลิกที่ไอคอน จะปรากฏป๊อบอัพให้เลือก Table ที่ต้องการ JOIN และกำหนดฟิลด์อ้างอิง และฟิลด์ที่ต้องการนำมาแสดงผลในช่อง Drop-down list   ในตัวอย่างนี้จะ JOIN กับตารางสมาชิก tb_members และอ้างอิงด้วย userid และดึงชื่อกับนามสกุลมาแสดง เมื่อกำหนดเรียบร้อยไอคอนฐานข้อมูลจะเปลี่ยนเป็นสีฟ้า จากนั้นก็กดสร้างไฟล์ Model / Views / JavaScript / Controller และกด Preview ดูผลลัพธ์จะได้ดังภาพต่อไปนี้ สังเกตว่าจากเดิมที่ Label ในหน้าตั้งค่าเป็น "ไอดีผู้ใช้งาน" จะกลายเป็น "ชื่อผู้ใช้งาน" แทนในหน้าแบบฟอร์มเพิ่มข้อมูล และเป็น Drop-Down list ที่สามารถค้นหารายชื่อจากตาราง tb_members ได้อีกด้วย ดูคลิปวิดีโอแนะนำการใช้งานได้ที่นี่ << กำหนด INPUT เป็นประเภทต่างๆ   การค้นหา แบ่งหน้า และการจัดเรียง » [[ PHP CI MANIA | ลดเวลาเขียนโค้ด เพิ่มเวลาบริหารจัดการได้มากขึ้น | Webpage Generator by CodeIgniter Framework ]] HOME

ขั้นตอนการเปิด Error ใน CodeIgniter 4 เมื่อข้อความ Whoops!

ขั้นตอนการเปิด Error ใน CodeIgniter 4 Whoops! We seem to have hit a snag. Please try again later... เมื่อเกิดข้อผิดพลาด CodeIgniter 4 จะไม่แสดง Error message ออกมาให้เห็น เพราะตั้งค่าไว้ให้รันในโหมดเว็บเซิร์ฟเวอร์จริง (Production Server) เพื่อค้นหาวิธีการเปิดข้อความ Error จึงลองค้นหาใน Google ด้วยคำว่า "how to debug codeigniter 4" ก็ได้วิธีมาว่า ให้แก้ไขค่าที่ไฟล์ env โดยแก้ไขชื่อไฟล์เป็น .env หากใช้ Notepad++ ก็ให้คลิกขวา แล้วเลือก Edit with Notepad++ เลื่อนหาบรรทัด CI_ENVIRONMENT และทำการเปลี่ยนค่า ให้ลบเครื่องหมาย # ด้านหน้าออก และเปลี่ยนค่า production เป็น development กลับไปที่หน้าเว็บบราวเซอร์ แล้วกดรีเฟรชหน้าเว็บอีกครั้ง (F5) ก็จะปรากฏข้อความแสดง error ออกมาให้ Debug กันได้ง่ายขึ้น * หมายเหตุ * กรณีนำไปใช้บนเว็บโฮสติ้ง หรือบนเว็บเซิร์ฟเวอร์จริง (Production Server) ให้ทำการแก้ไขค่าเป็น production ก่อนอัพโหลด ที่มา :  https://stackoverflow.com/questions/60501607/how-to-debug-codeigniter-4 PHP  CI  MANIA   - PHP Code Generator  โป...

PHP จัดตารางการแข่งขันฟุตบอล / บาสเกตบอล / กีฬาประเภทพบกันทุกทีมเหย้า-เยือน

PHP generate football schedule ในโค้ดตัวอย่างด้านล่างนี้ จะเป็นการวนลูป for อยู่ด้วยกันทั้งหมด 3 รอบ for ครั้งที่ 1  กำหนดให้นับแค่ 2  ในลูปแรกจะเป็นทีมเหย้า ในลูปที่สองจะเป็นทีมเยือน for ครั้งที่ 2 จะนับตามจำนวนทีม ในตัวอย่างมี 8 ทีมก็จะนับจนกว่าจะครบ 8 ทีม for ครั้งที่ 3 จะนับตามจำนวนทีมคู่แข่ง ในตัวอย่างมี 8 ทีม ก็จะพบคู่แข่งอีก 7 ทีม  (ซึ่งพบกัน 2 ครั้ง เหย้า-เยือน ก็จะเท่ากับ 14 ครั้ง) ข้อสังเกต เมื่อขึ้น Day 9 จะมีการสลับเอาทีมเยือนขึ้นมาเป็นทีมเหย้า Team 2 จึงเป็นเจ้าบ้านรับการมาเยือนของ Team 1 แทน สำหรับโค้ดที่ใช้เป็นตัวอย่าง มีดังต่อไปนี้ [PHP CODE] <?php $teams = array( 'Team 1', 'Team 2', 'Team 3', 'Team 4', 'Team 5', 'Team 6', 'Team 7', 'Team 8' ); $team_logo[0] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-15-512.png'; $team_logo[1] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-16-512.png';...

MySQL คำสั่ง SQL จัดเรียงคำตามตัวอักษร ภาษาไทย ในฟิลด์ที่กำหนด Collation เป็น utf-8

การจัดเรียงข้อมูลตามลำดับตัวอักษรไทย   CONVERT( name USING tis620 ) ASC การเรียงลำดับตัวอักษรแบบ tis-620 ในการเขียนโปรแกรม PHP เพื่อแสดงข้อมูลจากฐานข้อมูล MySQL การเขียนคำสั่ง SQL ให้จัดเรียงลำดับนั้น เราจะใช้ ORDER BY  และกำหนดฟิลด์ที่ต้องการจัดเรียงลำดับ เช่น ในตัวอย่างนี้จะเป็นการจัดเรียงตามลำดับตัวอักษรของชื่อเมนู นั่นก็คือฟิลด์ name นั่นเอง แต่ในขั้นตอนการสร้างฐานข้อมูลนั้น เราได้กำหนด Charset ของตารางและฟิลด์เป็นการจัดเรียง Collation แบบ utf-8 เอาไว้เพื่อให้รองรับภาษาแบบมาตรฐาน ดังนั้นเมื่อเขียนโปรแกรมสั่ง ORDER BY name ASC ก็จะมีการจัดเรียงที่จะให้คำที่มีสระนำหน้าอยู่หลัง ฮ. นกฮุก ไปเสียหมด จะเห็นว่าชื่อเมนูหรือสินค้าที่มี ข นำหน้าจะมาเป็นลำดับแรก ทั้งที่จริงๆแล้ว มีสินค้าที่เป็น ก อยู่หลายรายการ เพียงแต่ว่ามีสระนำหน้าอยู่เท่านั้นเอง จากรูปด้านบน จะมีรายการที่เป็น ก อยู่ 3 รายการ คือเมนู โกโก้ ต่างๆ แต่เพราะมีสระโอ นำหน้า จึงทำให้การจัดเรียงแบบ utf-8 ให้อยู่ในลำดับท้าย เพื่อแก้ไขปัญหานี้ การเขียนโปรแกรมเพื่อ ORDER BY จะต้...

PHP ระบบบริหารจัดการ พล็อตนิยาย - ตอนที่ 1

PHP Fiction Management System   โปรเจ็กต์นี้จะสร้างเป็น "ระบบบริหารจัดการพล็อตนิยาย" แบบง่ายๆ มาเล่าสู่กันฟังครับ มีอยู่ช่วงหนึ่งที่ผมสนใจการเขียนนิยาย และค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการเขียนนิยาย และได้พบกับโปรแกรมหนึ่งที่ช่วยงานด้านการเขียนนิยายให้เป็นเรื่องที่ง่ายขึ้น แต่จากที่ได้อ่านรีวิวแล้วดูเหมือนว่า โปรแกรมช่วยเขียนนิยายนี้ ไม่จะไม่ค่อยรองรับภาษาไทย แต่ผมก็ยังไม่ได้ลองมาดาวน์โหลดมาลองใช้งานดูนะครับ แต่รู้สึกชอบเครื่องมือนี้ เลยอยากลองพัฒนาโดยถอดคุณสมบัติพื้นฐานมาใช้งานดู ว่าจะใช้กับงานเขียนนิยายได้จริงรึเปล่า ตัวอย่างระบบจัดการพล็อตเรื่อง เพื่อช่วยงานเขียนนิยาย หลังจากที่ได้นั่งคิดนอนคิด และหลับไปฝันไป จนในที่สุดก็ได้ฐานข้อมูลระบบบริหารจัดการพล็อตนิยายมาคร่าวๆ มาจนได้ โครงสร้างฐานข้อมูลตอนนี้อาจจะขี้เหร่ไปบ้าง แต่ในอนาคตก็คงจะพัฒนากันต่อไป   ตารางที่จะต้องสร้าง มีทั้งหมด ดังนี้ 1. รายชื่อนิยายทั้งหมด 2. แนวนิยายที่เขียน 3. พล็อตของแต่ละเรื่อง 4. ฉากเหตุการณ์ในแต่ละพล็อต 5. เนื้อเรื่องในแต่ละฉาก 6. รายชื่อตัวละครในนิยา...

PHP คืออะไร : มีหลักการทำงาน และสิ่งที่น่าสนใจอะไรบ้าง?

PHP คืออะไร? PHP ย่อมาจากคำว่า "Personal Home Page Tool" (ปัจจุบันได้เพิ่มเติมคำย่อใหม่โดยรวมกับตัวย่อเป็น  PHP : PHP Hypertext Preprocessor ) ซึ่งเป็นภาษาประเภท Script Language ที่ทำงานแบบ Server Side Script กระบวนการทำงานจะทำงานแบบ โปรแกรมแปลคำสั่ง  interpreter คือแปลภาษาทุกครั้งที่มีคนเรียกสคริปต์ ข้อดีคือ ไม่ต้องนำไปประมวลผลใหม่ (Compiler) เมื่อจะนำโปรแกรมไปใช้งาน หรือจะอัพเดตเวอร์ชั่นของโปรแกรม สามารถอัพโหลดขึ้นไปทับไฟล์เดิมแล้วใช้งานได้ทันที ขอเสียที่ต่างกันอย่างชัดเจนก็คือ กรณี Syntax ผิดจะรู้ก็ต่อเมื่อมีผู้ใช้งานเจอบั๊ก ภาษา PHP  จัดอยู่ในประเภท การเขียนโปรแกรมบนเว็บ (Web-based Programming) เพราะเราจะเก็บโค้ดคำสั่ง หรือสคริปต์ทั้งหมดที่เขียนขึ้นมาไว้บนเครื่องเซิร์ฟเวอร์ที่เดียว (Web Server)  และให้ผู้ใช้งาน (Client) เรียกใช้งานโปรแกรมผ่านเว็บเบราเซอร์ต่างๆ เช่น Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Safari ฯลฯ เพื่อนำข้อมูลมาแสดงผลที่หน้าจอของผู้ใช้แต่ละคนนั่นเอง PHP มีอะไรน่าสนใจบ้าง? เรามาลองพูดถึงเรื่องของการสร้...

PHP + Fullcalendar กับ MySQL

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode()