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

บทความ

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

PHP ดึงข้อมูลจาก MySQL Database แสดงข้อมูลเรียงแนวตั้ง (PDO)

ผลลัพธ์ที่ได้ ปกติแล้วเมื่อเราใช้ PHP วนลูปข้อมูลจากฐานข้อมูล MySQL ด้วย while() ข้อมูลจะถูกดึงออกมาเรียงกัน และเราสามารถแบ่งข้อมูลในแนวนอนด้วย array_chunk()  หรืออาจจะใช้วิธีหารเอาเศษ เพื่อเทียบดูว่าเมื่อไหร่จะขึ้น </tr><tr> หรือปิดเปิดบรรทัดใหม่ แต่ในกรณีแนวตั้ง หลังจากที่เราใช้ while() ลูปดึงข้อมูลมาแล้วนั้น ผมจะใช้วิธีการนับจำนวนอาร์เรย์ทั้งหมด แล้วเอามาหารตามจำนวนแถวที่ต้องการ เพื่อสร้างอาร์เรย์ชุดใหม่ ที่ได้จำนวนคอลัมน์ และลำดับของข้อมูลตามการจัดเรียงตารางแนวตั้งที่ต้องการ ซอร์สโค้ด PHP + PDO with MySQL <?php $user = 'tobedev'; $pass = 'dev.1234'; try {     $dbh = new PDO('mysql:host=localhost:33065;dbname=tobedev_example', $user, $pass); } catch (PDOException $e) {     print "Error!: " . $e->getMessage() . "<br/>";     die(); } $stm = $dbh->prepare("SELECT name, price FROM tb_product LIMIT 14"); $stm->execute(); $no        = 1; $data ...

[สอนเขียน PHP] สร้าง PHP Builder Web Application : ระบบช่วยสร้างเว็บแอพพลิเคชั่นด้วย PHP + CodeIgniter

PHP Builder Web Application    ตอนที่          หัวข้อ/ชื่อเรื่อง PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม สนใจสั่งซื้อเพียง  4,500  บาท http://fastcoding.phpcodemania.com/ สนับสนุนค่ากาแฟผู้เขียนได้ที่

การใช้งาน GROUP_CONCAT ฟังก์ชั่นที่ MySQL ไม่ได้ซ่อนเพียงแต่เราไม่ค่อยใช้กันเอง ^^"

SELECT GROUP_CONCAT(CONCAT(`id`,'":"',`name`) SEPARATOR '", "') AS name FROM `department`; คำสั่งด้านบนนี้เมื่อคิวรี่เสร็จและเรียกข้อมูลออกมาจะได้ยาวเลยครับ ผมไม่แน่ใจว่าถ้าข้อมูลที่เยอะมากๆจะเหมาะกับการใช้ฟังก์ชั่นนี้หรือไม่ แต่ถ้าข้อมูลหลักผมเรียกใช้แบบนี้สะดวกดีครับ ไม่ต้องวนลูป while แค่เพียงเติม {" ด้านหน้า และ "} ด้านท้าย ก็จะกลายเป็นข้อมูลแบบ json แล้วล่ะครับ สามารถแปลงเป็นอาร์เรย์ด้วยคำสั่ง $row['name'] = '{"' . $row['name'] . '"}'; $array_department = json_decode($row['name']); แล้วนำไปใช้ได้เลย ไว้มีเวลาจะทำวิดีโอสาธิตแนวคิดที่ผมนำไปใช้งานให้ได้ดูกันนะครับ ^^ ที่มา : http://www.thaicreate.com/tutorial/sql-group-concat.html วิดีโอสาธิตการใช้งาน mysql_group_concat.php <?php $hostname = "localhost"; $user = "tobedev"; $password = "1234"; $dbname = "helpdesk"; $tblname4 = "tb_m_user"; try {   $db_conn = new...

PHP Javascript Diable/Enable Form การทำให้ textbox disabled หรือ readonly เมื่อกดปุ่มโหลดข้อมูล

โจทย์ปัญหาในบทความนี้ก็คือ จะทำอย่างไรให้ช่องกรอกข้อมูลมีสถานะเป็นอ่านอย่างเดียว Readonly หรือ Disable เพื่อไม่ให้ป้อนข้อมูลได้ จนกว่าจะมีการกดปุ่ม แก้ไข(Edit) การเขียนโค๊ดเพื่อให้การทำงานของหน้าเว็บตรงตามความต้องการของเรานั้น มีอยู่หลายวิธีด้วยกัน ซึ่งวิธีที่ผมนำมาเป็นตัวอย่างก็คือ การ Disable ช่องกรอกข้อมูลด้วยการเช็คค่าจาก PHP และสร้างตัวแปรแอตทริบิวต์ disabled="disabled" ให้กับช่องกรอกข้อมูลที่ต้องการ หลังจากนั้นจะเป็นการทำงานในส่วนของ Javascript เมื่อคลิกปุ่ม Edit คือยกเลิกการ disabled ช่องกรอกข้อมูลที่ต้องการให้แก้ไขได้ โดยจะมีการใช้ jQuery Selector เข้ามาช่วยให้เขียน JavaScript ได้ง่ายขึ้นด้วย ซอร์สโค๊ดตัวอย่าง disable_enable_form.php

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

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

แบ็กอัพข้อมูลในฐานข้อมูล 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)...

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

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

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

อัพเดตซอร์สโค๊ดตัวอย่าง 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 เพื่อสร้างรายงานสำหรับแสดงข้อมูลจำนวนสมาชิกแยกตามสาขาต่างๆ โดยจะสรุปข้อมูลสมาชิกทั้งหมด สมาชิกที่อยู่ในสถานะใช้งาน  และสมาชิกที่อายุการใช้งานสิ้นสุดลงแล้ว