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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

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

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

โดย Parichat » 06/02/2018 12:07 pm

tsukasaz เขียน:SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้
ค่ะ ขอบคุณมากๆค่ะ

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

โดย tsukasaz » 06/02/2018 11:54 am

SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้

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

โดย Parichat » 06/02/2018 11:41 am

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

อันนี้เป็นโค้ดที่อยู่ใน 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 2242 times

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

โดย tsukasaz » 06/02/2018 9:53 am

ถ้าใช้เป็น 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>

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

โดย Parichat » 06/02/2018 9:35 am

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>
ขอบคุณมากๆค่ะ

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

โดย thatsawan » 06/02/2018 12:48 am

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

<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>

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

โดย Parichat » 05/02/2018 10:56 pm

พอดีว่าหนูต้องการที่จะดึงข้อมูลจังหวัดมาแสดงใน 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 2270 times

ข้างบน