Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > รบกวนช่วยแก้ปัญหาดึงข้อมูลออกจากฐานข้อมูลออกมาแสดงด้วย php ไม่ได้



 

รบกวนช่วยแก้ปัญหาดึงข้อมูลออกจากฐานข้อมูลออกมาแสดงด้วย php ไม่ได้

 



Topic : 136097



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์




Database Mysql

คือผมได้ตัวแบบ Web app มาตัวนึง แล้วนำมาดัดแปลงเพื่อใช้งาน แต่มีปัญหาตรงที่ว่า จากรูปดังกล่าวผมจะเพิ่มใน query เพื่อดึงข้อมูลจากตาราง edms_dms โดยเอาเฉพาะในคอลัมน์ detail ออกมาแสดง แต่ทำยังไงก็ไม่ได้ แล้วผมก็มือใหม่ซะด้วย ไม่รู้ว่าต้องเพิ่มเติมตรงไหนอีก ซึ่งผู้เขียนก็แค่บอกว่าเพิ่มตรงบรรทัดที่ 72 : return static::createQuery() เอง ซึ่งผมก็ลองหลายอย่างแล้วมันก็ไม่ออก จนปัญญาจริงๆ จึงขอรบกวนผู้รู้ช่วยแนะนำด้วยครับ ด้านล่างนี้เป็นไฟล์ php ที่เป็นต้นฉบับ พอรันออกมาก็จะปรากฏตามรูปล่างสุด แต่ผมอยากเพิ่มคอลัมน์ detail ขึ้นมาอีก ต้องทำอย่างไรครับ

Code (PHP)
<?php
/**
 * @filesource modules/dms/models/index.php
 *
 * @copyright 2016 Goragod.com
 * @license http://www.kotchasan.com/license/
 *
 * @see http://www.kotchasan.com/
 */

namespace Dms\Index;

use Gcms\Login;
use Kotchasan\Database\Sql;
use Kotchasan\Http\Request;
use Kotchasan\Language;

/**
 * module=dms
 *
 * @author Goragod Wiriya <[email protected]>
 *
 * @since 1.0
 */
class Model extends \Kotchasan\Model
{
    /**
     * Query ข้อมูลสำหรับส่งให้กับ DataTable
     *
     * @param array $params
     * @param array $login
     *
     * @return \Kotchasan\Database\QueryBuilder
     */
    public static function toDataTable($params, $login)
    {
        $where = array();
        if (!empty($params['from'])) {
            $where[] = array('A.create_date', '>=', $params['from']);
        }
        if (!empty($params['to'])) {
            $where[] = array('A.create_date', '<=', $params['to']);
        }
        $select = array('A.id', 'A.create_date', 'A.document_no', 'A.topic');
        $query = static::createQuery()
            ->from('dms A');
        $n = 1;
        foreach (Language::get('DMS_CATEGORIES') as $k => $label) {
            $query->join('dms_meta N'.$n, 'LEFT', array(array('N'.$n.'.dms_id', 'A.id'), array('N'.$n.'.type', $k)))
                ->join('category C'.$n, 'LEFT', array(array('C'.$n.'.category_id', 'N'.$n.'.value'), array('C'.$n.'.type', $k)));
            if ($k == 'department') {
                $select[] = Sql::GROUP_CONCAT('C'.$n.'.topic', $k);
                if (!empty($login['department'])) {
                    $where[] = array('N'.$n.'.value', $login['department']);
                }
            } else {
                $select[] = 'C'.$n.'.topic '.$k;
            }
            if ($params[$k] > 0) {
                $where[] = array('N'.$n.'.value', $params[$k]);
            }
            $n++;
        }
        $select[] = 'A.url';
        $q1 = $query->select($select)
            ->where($where)
            ->groupBy('A.id');
        $where = array();
        if (!empty($params['search'])) {
            $where[] = Sql::create("(A.`detail` LIKE '%$params[search]%' OR A.`document_no` LIKE '%$params[search]%' OR A.`topic` LIKE '%$params[search]%' OR F.`topic` LIKE '%$params[search]%')");
        }
        return static::createQuery()
            ->select(Sql::IFNULL('F.id', 0, 'id'), 'F.size', 'A.id dms_id', 'A.create_date', 'A.document_no', 'A.topic', 'F.topic file_name', 'F.ext', 'A.department', 'A.cabinet', 'W.downloads', 'A.url')
            ->from(array($q1, 'A'))
            ->join('dms_files F', 'LEFT', array('F.dms_id', 'A.id'))
            ->join('dms_download W', 'LEFT', array(array('W.file_id', Sql::create('CASE WHEN A.`url`="" THEN F.`id` ELSE 0 END')), array('W.dms_id', 'A.id'), array('W.member_id', $login['id'])))
            ->where($where);
    }

    /**
     * รับค่าจาก action
     *
     * @param Request $request
     */
    public function action(Request $request)
    {
        $ret = array();
        // session, referer, member, สามารถดูหรือดาวน์โหลดเอกสารได้
        if ($request->initSession() && $request->isReferer() && $login = Login::isMember()) {
            if (Login::checkPermission($login, 'can_download_dms')) {
                // ค่าที่ส่งมา
                $file_id = $request->post('id')->toInt();
                if (preg_match('/(detail|download)_([0-9]+)/', $request->post('action')->toString(), $match)) {
                    if ($match[1] == 'detail') {
                        $document = \Dms\View\Model::get($match[2]);
                        if ($document) {
                            $ret['modal'] = Language::trans(createClass('Dms\View\View')->render($document, $login));
                        }
                    } elseif ($match[1] == 'download') {
                        if ($file_id > 0) {
                            // ดาวน์โหลดไฟล์
                            $ret = $this->fileDownload($file_id, $login['id']);
                        } else {
                            // เปิด URL
                            $ret = $this->openUrl($match[2], $login['id']);
                        }
                    }
                }
            }
        }
        // คืนค่าเป็น JSON
        echo json_encode($ret);
    }

    /**
     * เปิด URL
     *
     * @param int $id
     * @param int $member_id
     *
     * @return array
     */
    public function openUrl($id, $member_id)
    {
        $download = $this->db()->createQuery()
            ->from('dms_download')
            ->where(array(
                array('dms_id', $id),
                array('file_id', 0),
                array('member_id', $member_id),
            ))
            ->first('id', 'downloads');
        $save = array(
            'downloads' => $download ? $download->downloads + 1 : 1,
            'dms_id' => $id,
            'file_id' => 0,
            'member_id' => $member_id,
            'last_update' => date('Y-m-d H:i:s'),
        );
        if ($download) {
            $this->db()->update($this->getTableName('dms_download'), $download->id, $save);
        } else {
            $this->db()->insert($this->getTableName('dms_download'), $save);
        }
        return array();
    }

    /**
     * ดาวน์โหลดไฟล์
     *
     * @param int $file_id
     * @param int $member_id
     *
     * @return array
     */
    public function fileDownload($file_id, $member_id)
    {
        $ret = array();
        // อ่านรายการที่เลือก
        $result = $this->db()->createQuery()
            ->from('dms_files')
            ->where(array('id', $file_id))
            ->first('id', 'dms_id', 'size', 'name', 'file', 'ext');
        if ($result) {
            // ไฟล์
            $file = ROOT_PATH.DATA_FOLDER.$result->file;
            if (is_file($file)) {
                // สามารถดาวน์โหลดได้
                $download = $this->db()->createQuery()
                    ->from('dms_download')
                    ->where(array(
                        array('file_id', $result->id),
                        array('member_id', $member_id),
                    ))
                    ->first('id', 'downloads');
                $save = array(
                    'downloads' => $download ? $download->downloads + 1 : 1,
                    'dms_id' => $result->dms_id,
                    'file_id' => $result->id,
                    'member_id' => $member_id,
                    'last_update' => date('Y-m-d H:i:s'),
                );
                if ($download) {
                    $this->db()->update($this->getTableName('dms_download'), $download->id, $save);
                } else {
                    $this->db()->insert($this->getTableName('dms_download'), $save);
                }
                // id สำหรบไฟล์ดาวน์โหลด
                $id = uniqid();
                // บันทึกรายละเอียดการดาวน์โหลดลง SESSION
                $file = array(
                    'file' => $file,
                    'size' => $result->size,
                );
                if (self::$cfg->dms_download_action == 1 && in_array($result->ext, array('pdf', 'jpg', 'jpeg', 'png', 'gif'))) {
                    $file['name'] = '';
                    $file['mime'] = \Kotchasan\Mime::get($result->ext);
                } else {
                    $file['name'] = $result->name.'.'.$result->ext;
                    $file['mime'] = 'application/octet-stream';
                }
                $_SESSION[$id] = $file;
                // คืนค่า
                $ret['open'] = WEB_URL.'modules/dms/filedownload.php?id='.$id;
            } else {
                // ไม่พบไฟล์
                $ret['alert'] = Language::get('File not found');
            }
        }
        return $ret;
    }
}



Webapp



Tag : PHP, MySQL, HTML, XAMPP, Windows









ประวัติการแก้ไข
2021-05-03 17:09:35
2021-05-03 17:12:27
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-05-03 17:02:40 By : npolkhet View : 2159 Reply : 11
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


Code (PHP)
->select(Sql::IFNULL('F.id', 0, 'id'), 'F.size', 'A.id dms_id', 'A.create_date', 'A.document_no', 'A.topic', 'F.detail', 'F.topic file_name', 'F.ext', 'A.department', 'A.cabinet', 'W.downloads', 'A.url')


ผมไม่รู้นะว่าใช่มั้ย เพราะดูแล้วก็ไม่เข้าใจว่าไป select ตารางนั้นตรงไหน ไม่เห็น edms_dms สักแห่งหนึ่ง
เข้าใจว่าคนเขียนใช้ framework คุณควรศึกษาจากเอกสาร framework ของเขา(ถ้ามี)






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-03 21:42:59 By : mr.v
 


 
MVC ต้องแก้อย่างน้อยสองที่คือ model ตาม #1 และ view ส่วน controller อาจมีเข้ามาเกี่ยวข้องหรือไม่ก็ได้ แล้วแต่คนเขียน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-03 21:52:31 By : พญามัจจุราช
 

 

No. 3



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2021-05-03 21:42:59
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......ใช่ครับเพิ่มจากตรงนี้ผู้เขียนก็บอกมาอย่างนั้น ในส่วนการแทนค่าตารางต่างๆ อย่างเช่น ตาราง edms_dms_file ก็จะเรียกแทนว่า dms_file ใน Query พอ join ออกมาก็จะใช้คำนำหน้าคอลัมน์เป็นตัว F ส่วนตาราง edms_dms_download ก็จะ join ออกมานำหน้าคอลัมน์ด้วยตัว W อย่างเช่น F.size W.downloads ส่วน คอลัมน์ edms_dms ไม่รู้ว่าเค้าไปเรียกมาตอนไหน แต่มันก็ Query ออกมาได้ อย่างเช่น A.topic มันก็คือชื่อเรื่อง ของตาราง edms_dms แต่พอผมจะเพิ่ม Query เพื่อดึงคอลัมน์ detail ของตาราง edms_dms ออกมา โดยแทนค่าด้วย A.detail ตรงบรรทัดที่ว่านี้เท่านั้น ผลออกมา คือ จะออกจากหน้าไปทันที กลับไปหน้า Dashboard แล้วคลิกเข้าหน้านี้ไม่ได้อีกเลย
ผมก็งงมาก อีกอย่างผมก็ไม่ได้เชี่ยวชาญด้านนี้เท่าไหร่ พออ่านโค๊ดได้นิดหน่อยแล้วมาดัดแปลง ถ้าจะไปศึกษาเรื่อง Framework คงจะยาวแน่ ยังไงถ้าพออ่านโค๊ดออกช่วยดูให้ด้วยนะครับ มันไปติดตรงไหน ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:03:34 By : npolkhet
 


 

No. 4



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-03 21:52:31
รายละเอียดของการตอบ ::
โทษนะครับ MVC นี่คืออะไรครับ ผมไม่รู้จริงๆ ใช่ครับ ในความเป็นจริงต้องแก้ 2 ที่ คือส่วนของ model และ view ส่วน controller จะไม่มีผลกับการเพิ่มข้อมูลตรงนี้ แต่ว่าก็แก้ในส่วน model ในไฟล์นี้ก็พอ มันก็จะดึงข้อมูลมาให้ ในส่วน view เพียงแค่ดึงค่าตัวแปรภาษาในส่วนของหัวคอลัมน์ ให้เป็นภาษาไทยตามที่กำหนดไว้แค่นั้นครับ อย่างที่ผมลองเพิ่มคอลัมน์ size ที่เห็นในผลลัพธ์ คอลัมน์แรกสุดเลย ตามรูปด้านล่างสุด อันนี้ผมเพียงเพิ่มใน query บรรทัดที่ว่านี้ เป็น F.size ในไฟล์นี้ มันก็มา แต่ผมจะเพิ่ม A.detail เข้าไป โปรแกรมไม่ทำงานเลย จะออกจากหน้านี้ทันที ตรงนี้พอจะไล่โค๊ดได้ไหมครับว่ามันติดเงือนไขตรงไหน ขอบคุณครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:19:39 By : npolkhet
 


 
ตอบความคิดเห็นที่ : 4 เขียนโดย : npolkhet เมื่อวันที่ 2021-05-04 11:19:39
รายละเอียดของการตอบ ::
MVC = Model/View/Controller (ไม่ใช่ maximum voluntary contraction นะ ) แม้ผู้พัฒนาจะทำแบบ auto เราไม่ใช่คนเขียน จำเป็นต้องรู้/ศึกษากลไก framework ของเขา...จึงไม่มีใครช่วยแก้ไขได้ในบรรทัดเดียวทันที (นอกจากรู้โครงสร้างและที่มาที่ไป) โดยเฉพาะ framework ที่เขียนขึ้นเอง

ลองนำ view และหรือ ส่วนอื่น (หรือบอกที่มาของโปรเจค) มาดูว่า เขาดึงไปแสดงผลอย่างไร ต้องผ่านวิธีการใดบ้าง ฯลฯ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:33:58 By : พญามัจจุราช
 


 

No. 6



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


มันดูเหมือนไม่มีทางเลือกนอกจากต้องศึกษาคู่มือของเขาครับ เพราะ framework แต่ละตัวมันไม่เหมือนกัน ถ้าไม่เคยใช้ก็คงจะไม่สามารถรู้ครอบจักรวาลไปถึงที่เขาทำได้
ถ้าไม่อย่างนั้นก็อาจต้องหาโปรแกรมลักษณะนี้ที่เขาทำแจก แต่ไม่ใช่ framework ของเจ้านี้ อย่างเช่นถ้าเป็น Codeigniter, Laravel จะมีคนเคยใช้มากก็จะหาคนช่วยได้ง่าย


แล้วก็ตรวจดูให้แน่ใจด้วยว่าคุณเปิดแสดง error เอาไว้ทั้งหมด เพราะส่วนใหญ่ชอบทำแบบผิดๆ ไปปิดมันในขั้นตอน development แล้วพอผิดพลาดก็ไม่รู้เรื่องอะไรเลย


ประวัติการแก้ไข
2021-05-04 18:39:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 18:12:22 By : mr.v
 


 

No. 7



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : npolkhet เมื่อวันที่ 2021-05-04 11:19:39
รายละเอียดของการตอบ ::
เข้าใจอะไรผิดไปหรือเปล่าครับ


หลักๆ เริ่มต้น ที่ controller จะทำอะไร ส่วนใหญ่จะทำที่ส่วนนี้ เพราะเป็นด่านแรก จะทำงานในส่วนนี้ส่วนเดียวยังได้เลย ไม่ต้องมี views และ model

ตอไปก็ควบคุมการแสดงผล ด้วย views แยกส่วนการ แสดงผลออกไปต่างหาก แค่ส่ง ตัวแปร ข้อมูลที่จำเป็น ไปให้ส่วน views ทำงาน

ส่่วน model จะเป็นส่วนที่เราทำงาน ซ้ำๆ กัน เหมือนเป็น function ที่เราสร้างขึ้นใช้เอง
ตัวอย่าง class mysql ซื้อเป็น ออปเจค ชุดคำสั่ง database ลักษณะการทำงานเหมือน model จะใช้งาน ก็ค่อยโหลดมาใช้


ประวัติการแก้ไข
2021-05-05 11:53:33
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 20:56:46 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2021-05-04 20:56:46
รายละเอียดของการตอบ ::
ใช่ครับ หน้าที่แสดงตารางนี้ต้องใช้ส่วน Controller ควบคุมด้วย แต่เพียงผมกำลังหมายถึง Query ที่เพิ่มเข้าไปเพื่อดึงข้อมูลออกมา ไม่ต้องแก้ไขในส่วน Contriller เพิ่มเติมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-05 10:59:47 By : npolkhet
 


 

No. 9



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-04 11:33:58
รายละเอียดของการตอบ ::
https://kotchasan.com/knowledge/%E0%B9%81%E0%B8%88%E0%B8%81%E0%B8%9F%E0%B8%A3%E0%B8%B5_%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B9%80%E0%B8%81%E0%B9%87%E0%B8%9A%E0%B9%80%E0%B8%AD%E0%B8%81%E0%B8%AA%E0%B8%B2%E0%B8%A3%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C_php_electronic_document_manageme.html

นี่เป็นที่มาของที่เค้าแจกฟรีให้มาพัฒนาเองครับ ผมเห็นว่ามีประโยชน์ดีน่านำไปใช้ ถ้าไม่เหลือบ่ากว่าแรง ช่วยดูและให้คำแนะนำด้วยนะครับ ผมเพียงแค่ต้องการดึงข้อมูลในส่วน detail ของตาราง edms_dms มาแสดงเพิ่มเติมจากรายการเท่านั้นครับ
ขอบคุณครับ



ประวัติการแก้ไข
2021-05-05 11:13:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-05 11:06:03 By : npolkhet
 


 

No. 10



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


น่าจะเป็น บันทัด 44
$select=array( ...., 'A.detail'); เป็นการกำหนด field ที่จะนำมาใช้

หรือบันทัดที่ 73 ตาม คห.1

แบบไม่ชัวร์นะครับ ควรจะอ่าน คู่มือของเขา ตาม คห 5 นั้นแหล่ะครับ
ส่วนจะให้ผมไปอ่านให้ คงไม่ไหวล่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-05 11:51:03 By : Chaidhanan
 


 

No. 11



โพสกระทู้ ( 67 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกความคิดเห็นครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-06 21:16:54 By : npolkhet
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนช่วยแก้ปัญหาดึงข้อมูลออกจากฐานข้อมูลออกมาแสดงด้วย php ไม่ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่