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

Registered : 108,640

HOME > PHP > PHP Forum > สอบถามเรื่องการ loop ข้อมูลมาแสดงในรูปแบบตาราง กรณีหัวตารางของแต่ละข้อมูลไม่เหมือนกัน



 

สอบถามเรื่องการ loop ข้อมูลมาแสดงในรูปแบบตาราง กรณีหัวตารางของแต่ละข้อมูลไม่เหมือนกัน

 



Topic : 124001



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



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




// product ตารางสินค้า
1


// product_header ตารางหัวตารางสินค้า
2


// product_header_desc ตารางที่เก็บข้อมูลว่าสินค้านี้มีหัวตารางอะไรบ้าง
--- product_header_desc.headerId = product_header.id
--- product_header_desc.productId = product.id
3


// product_header_details ตารางที่เก็บข้อมูลย่อยของหัวตาราง
--- product_header_details.headerDescId = product_header_desc.id
4



Code (PHP)
<table class="table table-bordered f-s-12">
                    <?php
                    $pId = 1;
                    $qHeader = $connect->prepare("SELECT phd.id phdId, phd.productId phdProductId, phd.headerId phdHeaderId,
                            ph.nameTH phNameTH, ph.nameENG phNameENG
                            FROM product_header_desc phd
                            JOIN product_header ph ON phd.headerId = ph.id
                            WHERE phd.productId = ?");
                    $qHeader->bind_param('i', $pId);
                    $qHeader->execute();
                    $qHeader->bind_result($phdId, $phdProductId, $phdHeaderId, $phNameTH, $phNameENG);
                    $qHeader->store_result();
                    $nHeader = $qHeader->num_rows;
                    $idHeader = [];
                    if ($nHeader > 0) { ?>

                        <tr>
                            <?php while ($qHeader->fetch()) {
                                $idHeader[] = $phdId; ?>

                                <th><?= $phNameTH ?></th> <!-- Header table -->

                            <?php } ?>
                        </tr>

                    <?php } ?>

                    <?php
                    $im = implode(',', $idHeader);
                    $ex = explode(',', $im);

                    for ($i = 0; $i < $nHeader; $i++) { ?>
                        <tr>
                            <?php $qDesc = $connect->prepare("SELECT phdt.id phdtId, phdt.headerDescId phdtHeaderDescId,
                                    phdt.details phdtDetails
                                    FROM product_header_details phdt
                                    JOIN product_header_desc phd ON phdt.headerDescId = phd.id
                                    WHERE phdt.headerDescId = ?");
                            $qDesc->bind_param('i', $ex[$i]);
                            $qDesc->execute();
                            $qDesc->bind_result($phdtId, $phdtHeaderDescId, $phdtDetails);
                            $qDesc->store_result();
                            $nDesc = $qDesc->num_rows;
                            if ($nDesc > 0) {
                                while ($qDesc->fetch()) { ?>

                                    <td><?= $phdtDetails ?></td> <!-- Data table -->

                                <?php } ?>
                            <?php } ?>
                        </tr>
                    <?php } ?>
</table>



ตอนนี้ที่ query ออกได้แบบนี้ครับ
5


แบบที่ถูกต้อง
12312321


ซึ่งการเรียงยังผิดอยู่
พอจะมีวิธีไหนบ้างครับ ต้องเช็ค tr td ยังไง
รบกวนแนะนำวิธีการทีครับ
ขอบคุณครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2016-07-26 09:04:30
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-07-25 18:05:06 By : mrJ4m3 View : 902 Reply : 11
 

 

No. 1



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

ปรับเป็น
<tr><td></td></tr> ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 09:24:22 By : Dragons_first
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : Dragons_first เมื่อวันที่ 2016-07-26 09:24:22
รายละเอียดของการตอบ ::
ปรับแล้วได้แบบนี้ครับ


A
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 09:31:08 By : mrJ4m3
 

 

No. 3



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

td มันมี 3 ช่องก็ใส่ให้ครบครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 09:47:35 By : Dragons_first
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : Dragons_first เมื่อวันที่ 2016-07-26 09:47:35
รายละเอียดของการตอบ ::
แบบนี้หรอครับ
aA

ก็ได้แบบนี้ครับ
ฟไำไำๆ

TT

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:02:41 By : mrJ4m3
 


 

No. 5



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

ลงโค๊ดล่าสุดครับ รู้สึกคุณจะครอบมันผิดหรือเปล่าคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:21:12 By : Dragons_first
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : Dragons_first เมื่อวันที่ 2016-07-26 10:21:12
รายละเอียดของการตอบ ::
จากโค้ดเดิมผมลบ <tr> บรรทัดที่ 33 และ </tr> บรรทัด 51 ออก แล้วมาใส่ใน loop while ด้านใน loop for ครับ

ด้านล่างเป็นโค้ดปัจจุบันครับ
Code (PHP)
<table class="table table-bordered f-s-12">
                        <?php
                        $pId = 1;
                        $qHeader = $connect->prepare("SELECT phd.id phdId, phd.productId phdProductId, phd.headerId phdHeaderId,
                            ph.nameTH phNameTH, ph.nameENG phNameENG
                            FROM product_header_desc phd
                            JOIN product_header ph ON phd.headerId = ph.id
                            WHERE phd.productId = ?");
                        $qHeader->bind_param('i', $pId);
                        $qHeader->execute();
                        $qHeader->bind_result($phdId, $phdProductId, $phdHeaderId, $phNameTH, $phNameENG);
                        $qHeader->store_result();
                        $nHeader = $qHeader->num_rows;
                        $idHeader = [];
                        if ($nHeader > 0) { ?>
                            <tr>
                                <?php while ($qHeader->fetch()) {
                                    $idHeader[] = $phdId; ?>
                                    <th><?= $phNameTH ?></th>
                                <?php } ?>
                            </tr>
                        <?php } ?>
                        <?php
                        $im = implode(',', $idHeader);
                        $ex = explode(',', $im);
                        for ($i = 0; $i < $nHeader; $i++) { ?>
                            <?php $qDesc = $connect->prepare("SELECT phdt.id phdtId, phdt.headerDescId phdtHeaderDescId,
                                    phdt.details phdtDetails
                                    FROM product_header_details phdt
                                    JOIN product_header_desc phd ON phdt.headerDescId = phd.id
                                    WHERE phdt.headerDescId = ?");
                            $qDesc->bind_param('i', $ex[$i]);
                            $qDesc->execute();
                            $qDesc->bind_result($phdtId, $phdtHeaderDescId, $phdtDetails);
                            $qDesc->store_result();
                            $nDesc = $qDesc->num_rows;
                            if ($nDesc > 0) {
                                while ($qDesc->fetch()) { ?>
                                    <tr><td><?= $phdtDetails ?></td></tr>
                                    <tr><td><?= $phdtDetails ?></td></tr>
                                    <tr><td><?= $phdtDetails ?></td></tr>
                                <?php } ?>
                            <?php } ?>
                        <?php } ?>
</table>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:36:42 By : mrJ4m3
 


 

No. 7



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

ก็ใส่ผิดจริงๆนั่นแหละ
                                while ($qDesc->fetch()) { ?>
                                    <tr><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td></tr>
                                    <tr><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td></tr>
                                    <tr><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td><td><?= $phdtDetails ?></td></tr>
                                <?php } ?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:40:44 By : Dragons_first
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : Dragons_first เมื่อวันที่ 2016-07-26 10:40:44
รายละเอียดของการตอบ ::
ได้แบบนี้ครับ
awe

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:44:28 By : mrJ4m3
 


 

No. 9



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

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

เมื่อดูที่การออกแบบฐานข้อมูลแล้วรู้สึกได้ว่ามันไม่ถูกต้อง ถ้าจะทำการลูปข้อมูลแบบนี้ข้อมูลมันต้องแยกตารางกันครับ แล้วใช้ inner join เข้ามาช่วย (ตามรูปที่ 4 ) แต่ถ้าหากมันเป็นข้อมูลชุดเดียวกัน ก็ให้ทำฟิลด์เพิ่มต่อจาก detail เพื่อเก็บ ค่า A ค่า เงิน
ทีนี้มันจะมาเป็นแบบนี้
id detail tab-a price

พอจะมองออกไหมครับ จริงๆผมไม่รู้หรอกว่าคุณออกแบบฐาานข้อมูลมาแบบนี้เพื่อจุดประสงค์อะไร ลองอธิบายมาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 10:57:03 By : Dragons_first
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : Dragons_first เมื่อวันที่ 2016-07-26 10:57:03
ขอบคุณสำหรับคำแนะนำครับ

หัวตารางของสินค้าจะไม่เหมือนกัน
ซึ่งการเพิ่มข้อมูลสินค้าจะมีให้เลือกว่าสินค้านี้มีหัวตารางอะไรบ้าง และเมื่อแก้ไขก็สามารถเพิ่มหัวตารางหรือลบให้กับสินค้านี้ได้
หลังจากเพิ่มข้อมูลสินค้าและหัวตารางแล้ว

ขั้นตอนต่อไปก็เป็นการเพิ่มรายละเอียดตามหัวตารางของสินค้านั้นๆ ครับ แล้วก็สามารถแก้ไขรายละเอียดนั้นได้ด้วย

ยกตัวอย่างสินค้า 4 อย่าง
รายละเอียดของการตอบ ::

สินค้า 1
q

สินค้า 2
w

สินค้า 3
e

สินค้า 4
r

จากภาพ 4 ภาพ หัวตารางของสินค้า 4 อย่างนี้ไม่เหมือนกันครับ
ประมาณนี้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 11:12:58 By : mrJ4m3
 


 

No. 11



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



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


ทำได้แล้วครับ ขอบคุณ คุณ หมาของเซสชั่น มากๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-07-26 14:29:51 By : mrJ4m3
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องการ loop ข้อมูลมาแสดงในรูปแบบตาราง กรณีหัวตารางของแต่ละข้อมูลไม่เหมือนกัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , pangpond.com , pangpond.co.th , สำนักงานบัญชี.com , รถมือสอง

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