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

HOME > PHP > PHP Forum > สอบถามการ merge ข้อมูลใน Table ที่ข้อมูล ซ้ำกันครับ



 

สอบถามการ merge ข้อมูลใน Table ที่ข้อมูล ซ้ำกันครับ

 



Topic : 136979



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



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




อยากให้ merge แล้ว้ป็นแบบในภาพครับ
merge


Code (PHP)
<table class="table table-bordered table-sm" border="1" align="center" cellspacing="0" cellpadding="0" valign="middle\"style="width:100%; empty-cells:show; border:1px groove;vertical-align:middle;">
<thead class="text-center">
    <tr>
      <th scope="col" class="bg-primary text-white" colspan="15" width="10%">รายละเอียดความผิดปกติเครื่องจักรกลุ่ม : <?=$get_mac[0]['motor_code_name']?></th>
    </tr>
    <tr>
      <th scope="col" width="5%">รหัสเครื่องจักร</th>
      <th scope="col" width="5%">ชื่อเครื่องจักร</th>
      <th scope="col" width="10%">ความผิดปกติ</th>
      <th scope="col" width="10%">ข้อมูลอัพเดท</th>
      <th scope="col" width="10%">หมายเหตุ</th>
    </tr>
  </thead>
  <tbody>
<?php
$get_detail = getlist("SELECT * FROM check_detail WHERE macm_id='$mac_g' AND status='2' AND 	solve_id='0' AND group_check IS NULL ORDER BY checklist_id,group_id ASC ");
print("<tr class=\"body_table \" >");
for ($s = 0; $s < sizeof($get_detail); $s++) {
    print("<td style=\"text-align:center;vertical-align: middle;\">");
    $get_group = getlist("SELECT * FROM mac_ingroup WHERE group_id='" . $get_detail[$s]['group_id'] . "' ");
    print($get_group[0]['group_name']);
    print("</td>");
    print("<td style=\"text-align:center;vertical-align: middle;\">");
    $get_list = getlist("SELECT * FROM check_list WHERE checklist_id='" . $get_detail[$s]['checklist_id'] . "' ");
    print($get_list[0]['checklist_name']);
    print("</td>");
    print("<td style=\"text-align:left;vertical-align: middle;\">");
    print($get_detail[$s]['check_comment']);
    print("</td>");
    print("<td style=\"text-align:left;vertical-align: middle;\">");
    $get_action = getlist("SELECT * FROM action_edit WHERE check_detail_id='" . $get_detail[$s]['check_detail_id'] . "'  ");
    if (empty($get_action)) {
        print("-ไม่พบข้อมูลอัพเดท");
    } else {
        for ($j = 0; $j < sizeof($get_action); $j++) {
            print("- " . $get_action[$j]['act_comment'] . "");
            if (!empty($get_action[$j + 1]['act_comment'])) {
                print("<br>");
            }
        }
    }
    print("</td>");
    print("<td style=\"text-align:center;vertical-align: middle;\">");
    print("</td>");
    print("</tr>");
}
?>
  </tbody>
</table>




Tag : PHP, CSS, HTML5, Apache, Appserv, XAMPP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-03-28 16:49:43 By : benlovehi5 View : 284 Reply : 10
 

 
merge cell ใน HTML ใช้ colspan, rowspan
https://www.w3schools.com/html/html_table_colspan_rowspan.asp

สำหรับ dynamic content หรือ การดึงข้อมูลมาแสดงจาก DB ร่วมกับ colspan, rowspan
จะมีความซับซ้อนในการเข้าลูป ตามโครงสร้าง HTML table ในกรณีนี้มีสองทางเลือก
ลองดูตัวอย่างแล้วนำไปประยุกต์

1. ทำจากฝั่ง server (ตัวอย่าง คอลัมน์เดียว)

Code (PHP)
$data = array(
    array("name" => "John", "age" => 28, "city" => "New York"),
    array("name" => "Jane", "age" => 35, "city" => "San Francisco"),
    array("name" => "Tom", "age" => 21, "city" => "New York"),
    array("name" => "Mary", "age" => 29, "city" => "San Francisco"),
    array("name" => "Peter", "age" => 33, "city" => "New York"),
    array("name" => "Kate", "age" => 24, "city" => "San Francisco")
);

// Group the data by city
$cities = array();
foreach ($data as $item) {
    $city = $item['city'];
    if (!isset($cities[$city])) {
        $cities[$city] = array();
    }
    array_push($cities[$city], $item);
}

// Output the table
echo "<table>";
echo "<thead><tr><th>Name</th><th>Age</th><th>City</th></tr></thead>";
echo "<tbody>";
foreach ($cities as $city => $items) {
    $rowspan = count($items);
    foreach ($items as $key => $item) {
        echo "<tr>";
        echo "<td>{$item['name']}</td>";
        echo "<td>{$item['age']}</td>";
        if ($key == 0) {
            echo "<td rowspan='$rowspan'>$city</td>";
        }
        echo "</tr>";
    }
}
echo "</tbody>";
echo "</table>";




2. ใช้ JS แก้ output Table
https://stackoverflow.com/a/56588036
https://jsfiddle.net/shed/bn3u63pe/






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-28 22:51:09 By : 009
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : 009 เมื่อวันที่ 2023-03-28 22:51:09
รายละเอียดของการตอบ ::
ผมลองทำตามวิธีนี้ https://jsfiddle.net/shed/bn3u63pe/
ใช้ได้ครับ แต่ติดปัญหาตรงเวลากดพิมพ์แล้วมันเพี้ยนแบบนี้ครับ ต้องแก้ยังไงหรอครับ
print


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 10:10:17 By : benlovehi5
 

 
ตอบความคิดเห็นที่ : 2 เขียนโดย : benlovehi5 เมื่อวันที่ 2023-03-29 10:10:17
รายละเอียดของการตอบ ::
bug ของ browser จนทุกวันนี้ยังไม่มีวิธีแก้โดยตรง

เลี่ยงโดย
ลองปรับขนาด border ของ table ให้มีขนาด <> 1 (จากที่เคยทำมา border = 1px จะทำให้ขนาดเส้นเพี้ยน)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 10:22:06 By : 009
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : 009 เมื่อวันที่ 2023-03-29 10:22:06
รายละเอียดของการตอบ ::
แต่ถ้าอันที่ข้อมูลน้อยๆ ฟอร์มมันไม่เพี้ยน เลยไม่แน่ใจว่าเป็นที่ข้อมูลมันเลยแผ่นรึเปล่าครับ
55




ประวัติการแก้ไข
2023-03-29 10:57:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 10:56:39 By : benlovehi5
 


 
ตอบความคิดเห็นที่ : 4 เขียนโดย : benlovehi5 เมื่อวันที่ 2023-03-29 10:56:39
รายละเอียดของการตอบ ::
ลองปรับ CSS ตรง table border-width ตามที่ผมบอก

Code (CSS)
table {
    border-width: 0.5px;
}

table td {
    border-width: 0.5px;
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 11:02:15 By : 009
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : 009 เมื่อวันที่ 2023-03-29 11:02:15
รายละเอียดของการตอบ ::
ตอบความคิดเห็นที่ : 5 เขียนโดย : 009 เมื่อวันที่ 2023-03-29 11:02:15
รายละเอียดของการตอบ ::
ไม่เพี้ยนแล้วครับผม ขอบคุณครับ
แต่สอบถามหน่อยครับถ้าต้องการแบ่งหน้า เพราะบางที่รายการที่มันข้อมูลเยอะๆมันตกหน้า
สามารถใช้อะไรเข้ามาได้บ้างครับช่วยครับ
ิ้เเ





ประวัติการแก้ไข
2023-03-29 12:00:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 11:59:56 By : benlovehi5
 


 
ลองทำตามนี้ เผื่อช่วยได้
https://stackoverflow.com/a/65024889
https://www.geeksforgeeks.org/how-to-apply-css-page-break-to-print-a-table-with-lots-of-rows/
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 12:44:25 By : 009
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : 009 เมื่อวันที่ 2023-03-29 12:44:25
รายละเอียดของการตอบ ::
ขอบคุณมากๆครับ ใช้ตัวนี้
table td, table th {
page-break-inside: avoid;
}
ช่วยได้เลยครับ

สอบถามเพื่อเป็นความรู้หน่อยครับถ้ากรณีที่มากกว่า 2 คอมลัมต้องเขียนประมาณไหนครับ ผมลองแล้วมัน loop ซ้อนไปอีก
Code (PHP)
$data = array(
    array("name" => "John", "age" => 28, "city" => "New York"),
    array("name" => "Jane", "age" => 35, "city" => "San Francisco"),
    array("name" => "Tom", "age" => 21, "city" => "New York"),
    array("name" => "Mary", "age" => 29, "city" => "San Francisco"),
    array("name" => "Peter", "age" => 33, "city" => "New York"),
    array("name" => "Kate", "age" => 24, "city" => "San Francisco")
);

// Group the data by city
$cities = array();
foreach ($data as $item) {
    $city = $item['city'];
    if (!isset($cities[$city])) {
        $cities[$city] = array();
    }
    array_push($cities[$city], $item);
}

// Output the table
echo "<table>";
echo "<thead><tr><th>Name</th><th>Age</th><th>City</th></tr></thead>";
echo "<tbody>";
foreach ($cities as $city => $items) {
    $rowspan = count($items);
    foreach ($items as $key => $item) {
        echo "<tr>";
        echo "<td>{$item['name']}</td>";
        echo "<td>{$item['age']}</td>";
        if ($key == 0) {
            echo "<td rowspan='$rowspan'>$city</td>";
        }
        echo "</tr>";
    }
}
echo "</tbody>";
echo "</table>";





ประวัติการแก้ไข
2023-03-29 13:10:32
2023-03-29 13:11:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 13:08:58 By : benlovehi5
 


 
ตอบความคิดเห็นที่ : 8 เขียนโดย : benlovehi5 เมื่อวันที่ 2023-03-29 13:08:58
รายละเอียดของการตอบ ::
ต้องมี ตัวอย่าง data ครับ
ถ้าตั้งแต่สองคอลัมน์ ต้องนับช่อง <td> ให้ถูกต้อง
ดูลิงค์จาก w3schools ใน No.1 ประกอบ

จุดสังเกต แถว <tr> ใด มี <td>, <th> ใส่ rowspan แล้ว <tr> ถัดไปอีกตามที่ระบุจำนวนให้กับ rowspan-1
จะต้องไม่มี <td>, <th> แนวเดียวกัน ไม่งั้น ตารางจะพัง อย่างตารางนี้

Code
<table style="width:100%"> <tr> <th>Name</th> <td>Jill</td> </tr> <tr> <th rowspan="2">Phone</th> <td>555-1234</td> </tr> <tr> จะต้องไม่มี <th> ใน <tr> ถัดไปอีก rowspan-1 = 2-1 = 1 tr ซึ่งก็คือ tr นี้ ลองเล่นโดยใส่ th ดูจะทำให้เข้าใจมากขึ้น <td>555-8745</td> </tr> </table>


สองคอลัมน์ก็เช่นกัน จะเพิ่มความซับซ้อนของโครงสร้าง HTML table
ให้ร่างออกมาก่อน ค่อยไปลูปใน PHP แบบ dynamically

ผมไม่ทำตัวอย่างให้ดูเลย เพราะ 1. ใช้เวลาและขึ้นอยู่กับ sample data 2. ไม่มี sample data
ดังนั้น ลองนำหลักการไปวิเคราะห์ และเรียนรู้ดูครับ



หวังว่าจะสำเร็จนะ ถ้าทำได้แล้วกลับมาบอกด้วย


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 13:31:59 By : 009
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : 009 เมื่อวันที่ 2023-03-29 13:31:59
รายละเอียดของการตอบ ::
ขอบคุณครับผม เดี๋ยวลองไปศึกษาต่อครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-03-29 14:16:24 By : benlovehi5
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามการ merge ข้อมูลใน Table ที่ข้อมูล ซ้ำกันครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 03
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 อัตราราคา คลิกที่นี่