Page 1 of 1
สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 05/02/2018 10:56 pm
by Parichat
พอดีว่าหนูต้องการที่จะดึงข้อมูลจังหวัดมาแสดงใน listbox หนูต้องเขียนโค้ดอย่างไรค่ะ
อันนี้หนูได้โค้ด listbox มาแล้วแต่เขียนโค้ดตรง Option ไม่ถูกค่ะ ถ้าหนูเขียนแบบนี้จะถูกไหมค่ะ
Code: Select all
<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 (13.53 KiB) Viewed 1396 times
Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 06/02/2018 12:48 am
by thatsawan
Code: Select all
<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 ทำอย่างไรค่ะ
Posted: 06/02/2018 9:35 am
by Parichat
thatsawan wrote:Code: Select all
<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 ทำอย่างไรค่ะ
Posted: 06/02/2018 9:53 am
by tsukasaz
ถ้าใช้เป็น XML Form ของ Component ต้องสร้าง Field สำหรับใช้ใน XML มาก่อน
ในโฟลเดอร์ models ต้องมีโฟลเดอร์ fields ให้สร้างไฟล์ .php กำหนดชื่อตามข้อมูลที่ต้องการดึงมาแสดง เช่น provinces.php
ตัวอย่างโค้ด models/fields/provinces.php Code: Select all
<?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
Code: Select all
<field
name="xxxxx"
type="provinces"
label="xxxxx">
<option value="">xxxxx</option>
</field>
Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 06/02/2018 10:03 am
by Parichat
Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 06/02/2018 11:41 am
by Parichat
ลองทำแล้วค่ะแต่ดึงข้อมูลมาไม่ได้ไม่แน่ใจว่าผิดตรงไหนค่ะ
อันนี้เป็นโค้ดที่อยู่ใน models/fields/provinces.php
Code: Select all
<?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
Code: Select all
<field
name="province_id"
type="provinces"
label="Province"
<option value="value">text</option>
</field>
ผลลัพธ์ที่ได้ดังรูป

- list.png (3.66 KiB) Viewed 1368 times
Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 06/02/2018 11:54 am
by tsukasaz
SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้
Re: สร้าง list เพื่อดึงข้อมูลจังหวัดมาแสดงใน listbox ทำอย่างไรค่ะ
Posted: 06/02/2018 12:07 pm
by Parichat
tsukasaz wrote:SQL where ถ้าไม่มีเงื่อนไขในการดึงข้อมูลไม่ต้องใส่ก็ได้
ค่ะ ขอบคุณมากๆค่ะ