สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 4859
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย Parichat »

พอดีว่าหนูต้องการที่จะดึงข้อมูลจังหวัดมาแสดงใน listbox หนูต้องเขียนโค้ดอย่างไรค่ะ
อันนี้หนูได้โค้ด listbox มาแล้วแต่เขียนโค้ดตรง Option ไม่ถูกค่ะ ถ้าหนูเขียนแบบนี้จะถูกไหมค่ะ

โค้ด: เลือกทั้งหมด

<field name="mylistvalue" type="list" default="" label="Select an option" description="">
 <?php
 $stmt = $db->listProvince();
 $num_rows = 0;
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<option value="<?= $row["id"] ?>"><?= $row["name"]; ?></option>
</field>
อยากทำ listbox ดังรูป
listbox.png
listbox.png (13.53 KiB) Viewed 2250 times
Live Simply, Laugh Often, Love Deeply.....
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย thatsawan »

โค้ด: เลือกทั้งหมด

<select name="month" id="month">
 <?php
 $stmt = $db->listProvince();
 $num_rows = 0;
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<option value="<?= $row["id"] ?>"><?= $row["name"]; ?></option>

 <?php
}
?>

</select>
Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 4859
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย Parichat »

thatsawan เขียน:

โค้ด: เลือกทั้งหมด

<select name="month" id="month">
 <?php
 $stmt = $db->listProvince();
 $num_rows = 0;
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<option value="<?= $row["id"] ?>"><?= $row["name"]; ?></option>

 <?php
}
?>

</select>
ขอบคุณมากๆค่ะ
Live Simply, Laugh Often, Love Deeply.....
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21911
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ถ้าใช้เป็น XML Form ของ Component ต้องสร้าง Field สำหรับใช้ใน XML มาก่อน

ในโฟลเดอร์ models ต้องมีโฟลเดอร์ fields ให้สร้างไฟล์ .php กำหนดชื่อตามข้อมูลที่ต้องการดึงมาแสดง เช่น provinces.php

ตัวอย่างโค้ด models/fields/provinces.php

โค้ด: เลือกทั้งหมด

<?php
defined('_JEXEC') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldProvinces extends JFormFieldList
{
 
    protected $type = 'Provinces';

    public function getOptions()
    {
        $db = Joomla\CMS\Factory::getDbo();
        $query = $db->getQuery(true)
            ->select('xx AS value, xx AS text')
            ->from('#__xxxxxxxxx')
            ->where($db->qn('xxxx') . '=' . $db->q('xxxx'));
        $db->setQuery($query);
        $arr_options = $db->loadObjectList();

        return array_merge(parent::getOptions(), $arr_options);
    }
}
- การตั้งชื่อ Class ขึ้นต้นด้วย JFormField แล้วต่อด้วยชื่อไฟล์ เช่น ไฟล์ชื่อ provinces.php จะได้ JFormFieldProvinces
- protected $type เอามาจากชื่อไฟล์
- ใน function getOptions() เป็นการดึงข้อมูลจากตารางที่ต้องการ
- ใน select จะต้องกำหนดค่าที่จะเป็น value และข้อความที่แสดงใน Options นึกถึงตอนเขียน <select> จะมี <option value="***">***</option>

หลังจากเสร็จจากการสร้าง Field ให้นำ Field ไปใช้ใน Form

โค้ด: เลือกทั้งหมด

<field 
        name="xxxxx" 
        type="provinces" 
        label="xxxxx">
        <option value="">xxxxx</option>
</field>
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 4859
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย Parichat »

ขอบคุณมากๆค่ะ :) :) :)
Live Simply, Laugh Often, Love Deeply.....
Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 4859
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย Parichat »

ลองทำแล้วค่ะแต่ดึงข้อมูลมาไม่ได้ไม่แน่ใจว่าผิดตรงไหนค่ะ

อันนี้เป็นโค้ดที่อยู่ใน models/fields/provinces.php

โค้ด: เลือกทั้งหมด

<?php
defined('_JEXEC') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldProvinces extends JFormFieldList
{
 
    protected $type = 'Provinces';

    public function getOptions()
    {
        $db = Joomla\CMS\Factory::getDbo();
        $query = $db->getQuery(true)
            ->select('id AS value, name AS text')
            ->from('#__province')
            ->where($db->qn('id') . '=' . $db->q('id'));
        $db->setQuery($query);
        $arr_options = $db->loadObjectList();

        return array_merge(parent::getOptions(), $arr_options);
    }
}
สร้าง Field ให้นำ Field ไปใช้ใน Form

โค้ด: เลือกทั้งหมด

<field 
            name="province_id" 
            type="provinces" 
            label="Province"
            <option value="value">text</option>
        </field>
ผลลัพธ์ที่ได้ดังรูป
list.png
list.png (3.66 KiB) Viewed 2222 times
Live Simply, Laugh Often, Love Deeply.....
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21911
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 4859
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย Parichat »

tsukasaz เขียน:SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้
ค่ะ ขอบคุณมากๆค่ะ
Live Simply, Laugh Often, Love Deeply.....
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 44