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

การใช้ CGridView ในการทำ Data List สำหรับแสดงรายการข้อมูลจาก Database

บ่อยครั้งที่ต้องเขียนการแสดงรายการข้อมูลต่างๆ รายชื่อผู้ใช้ระบบ, รายชื่อสินค้า, รายชื่อประเภทสินค้า ฯลฯ ในรูปแบบซ้ำๆ เดิมๆ ซึ่งบางครั้งก็มีส่วนของการค้นหาข้อมูล หรือ เงื่อนไขการกรองข้อมูล ที่ไม่เหมือนกัน ยกตัวอย่าง เช่น การกรองรายชื่อผู้ใช้ที่ยืนยันอีเมล สำหรับ Yii ได้เพิ่มเครื่องมือในการเรียกข้อมูลมาแสดงแบบง่ายๆ ด้วย CGridview

ตัวอย่างที่ 1
//===============================================================
// Controller
//===============================================================

// ดึงข้อมูลผู้ใช้จากฐานข้อมูล
$model = new User();

// เอาข้อมูลที่ Query มาอัดลง CActiveDataProvider
$dataProvider = new CActiveDataProvider('Post', array(
    'pagination'=>array(
        'pageSize' => 10,
    ),
));

// ส่งตัวแปรไปยังส่วนของ View
$this->render('user', array('dataProvider ' => $dataProvider ))

//===============================================================
// View
//===============================================================

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=> $dataProvider,
    'columns'=>array(
        array(
            'name' => 'title',
            'htmlOptions' => array(
                'width' => '100',
                'style' => 'text-align: center;',
            ),
        ),
        array(
            'name' => 'content',
            'htmlOptions' => array(
                'width' => '100',
                'style' => 'text-align: center;',
            ),
        ),
    ),
));

ซึ่งมีข้อสังเกตว่า การที่เราจะใช้ CGridview ได้จำเป็นจะต้องสร้างกล่องมารองรับข้อมูลที่เรา Query มาเสมอ จากนั้นเราจึงจะนำตัวแปรนั้น มาใช้ในการจัดวางตามรูปแบบของ CGridview ได้

โพสต์ยอดนิยมจากบล็อกนี้

การเพิ่ม Font ภาษาไทยอื่นๆ เข้าไปใช้งานใน MPDF

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

มาเข้าใจ และใช้ Datatable ดึงข้อมูลแบบ Server-side ด้วย PHP, MySQL กันเถอะ

มีช่วงหนึงผมเคยนำ datatable มาพัฒนาในงานแต่เกิดปัญหาเนื่องจากมีข้อมูลขนาดใหญ่ ทำให้เกิดการโหลดในครั้งแรกที่โหลดหน้าเพจนั้นๆ เนื่องจากผมใช้ Ajax ในการโหลดข้อมูลทั้งหมดมาในครั้งเดียวด้วยจำนวนข้อมูล 1000 ขึ้น ซึ่งตอนนั้นผมคิดว่าการทำ preload น่าจะช่วยได้ แต่ว่าถ้า user เกิดเผลอไปกด refesh หรือแก้ไขข้อมูลเวลากลับมาที่หน้าข้อมูลก็ต้องโหลดใหม่อีก ทำให้ผมเลิกใช้ datatable ไปเลย เพราะคิดว่ามันคงไม่เหมาะ

แต่ในความจริงแล้ว datatable ก็ได้มีสิ่งที่มาแก้ในจุดนั้นได้ ซึ่งเรียกว่า server-side โดยการที่อนุญาตให้เรา query ข้อมูลออกมาก่อนแล้วส่งมาให้ datatable อ่านข้อมูลในจำนวนที่น้อยลง หลักการก็เหมือนๆ กับบทความการทำสร้าง XML จากข้อมูลขนาดใหญ่นั่นแหละครับ แต่มีเงื่อนไขเพียงแต่ว่า ต้อง Filter และส่งข้อมูลออกมาในรูปแบบที่ตรงตามหลักของ datatable เท่านั้น ( บางครั้งเวลาเข้าไปอ่าน Document หรือดู Example จะงงๆ ว่าอะไรเยอะแยะ ) โดยวันนี้จะมาแนะนำการใช้งานแบบง่ายๆ กันเลย :D

ปลดล็อคความสามารถให้กับ Sublime Text ตอนที่ 2

ความเดิมจากตอนที่แล้วสำหรับตอนที่ 2 นี้ ผมจะมาแนะนำ plugin ที่น่าใช้สำหรับ Web Development นะครับ ซึ่งความจริงแล้วก็มีให้เราเลือกเลือกใช้มากมาย สามารถ search google ได้ด้วยคำว่า "sublime popular package" ซึ่งทาง Sublime Text ได้จัดอันดับไว้ให้เราด้วย สามารถเข้าไปเลือกดู เลือกโหลดกันตามใขชอบเลยครับ แต่ผมจะมาขอแนะนำ ตัวที่คิดว่าลงแล้วใช้งานได้จริงแน่ๆ มาฝากกันครับ