การเขียนโปรแกรมเพื่อดึงข้อมูลออกมาจากฐานข้อมูล และจัดแสดงผล แบบหลายคอลัมน์นั้น เป็นสิ่งที่เราจะพบเห็นอยู่บ่อยๆ ในเว็บไซต์ที่เป็นร้านค้าออนไลน์ ที่จะนำสินค้ามาแสดงในหน้าแรกเพื่อให้ลูกค้าได้เลือกซื้อกันได้ง่าย และหลายรายการ เพราะแสดงเป็นแถวละรายการ คงจะเปลืองพื้นที่แสดงสินค้าหลายแถว จนหน้าเว็บอาจจะยาวทะลุจอไปเลยก็ได้
สำหรับเทคนิคการแสดงผลแบบแบ่งหลายคอลัมน์นั้น ยังนิยมอย่างมากในการทำแกลอรี่รูปภาพ ซึ่งตัวอย่างที่นำมาให้ดูนี้อาจจะคุ้นตามกันอยู่แล้ว เป็นบทความที่นำมาจากเว็บไซต์ ThaiCreate.Com
PHP MySQL Multiple Column
จากตัวอย่างกำหนดให้ $intRows นับจำนวนรายการที่ดึงออกมาจากฐานข้อมูล
จะมีคำสั่งที่ใช้ตรวจสอบจำนวนคอลัมน์ว่าครบหรือยังเพื่อขึ้นบรรทัดใหม่โดยตรวจสอบ
24.25.if(($intRows)%2==0)26.{27.echo"</tr><tr>";28.}ความหมายของคำสั่งนี้ก็คือ ถ้าจำนวนรายการนั้น หาร ด้วย 2 แล้วลงตัว ก็ให้ปิดแถว เพื่อขึ้นแถวใหม่
เราก็จะได้ข้อมูล 2 คอลัมน์เหมือนตัวอย่าง
ถ้ากรณีที่เรามีหน้าเว็บกว้าง มีพื้นที่เหลือด้านขวาอีกมาก จะเพิ่มเป็น 3 หรือ 4 คอลัมน์ล่ะ จะทำยังไงดี
แก้แค่ที่เดียวนี่แหละครับ เปลี่ยนจากเลข 2 เป็นเลข 3 หรือ 4 หรือจำนวนคอลัมน์ที่เราต้องการได้เลย
แก้แค่ที่เดียวนี่แหละครับ เปลี่ยนจากเลข 2 เป็นเลข 3 หรือ 4 หรือจำนวนคอลัมน์ที่เราต้องการได้เลย
และแล้วก็มาถึงฟังก์ัชั่น array_chunk() ซะทีว่าจะนำมาใช้ในงานเขียนโปรแกรม อย่างไรได้บ้าง
ฟังก์่ชั่นนี้ จะทำหน้าที่แยกข้อมูลชนิดอาร์เรย์ (Array) ออกมาเป็นหลายๆ ชุดโดยแต่ละชุดจะมีจำนวนตามที่เราได้ระบุไว้ในพารามิเตอร์ตัวที่สองนั่นเอง
เช่น
<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
?>
จะได้ผลลัพธ์เป็น
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
อ่านรายละเอียดเพิ่มเติมได้จากคู่มือ www.php.net
<?php
$dbHost = "localhost";
$dbUser = "sunzandesign";
$dbPass = "13579";
$objConnect = mysql_connect($dbHost,$dbUser,$dbPass) or die(mysql_error());
$objDB = mysql_select_db("test");
mysql_query('SET NAMES UTF8');
$intRows = 0;
$data = array();
$strSQL = "SELECT * FROM gallery";
$objQuery = mysql_query($strSQL);
while($objResult = mysql_fetch_assoc($objQuery))
{
$intRows++;
$data[$intRows] = $objResult;
}
if($intRows > 0){//ถ้ามีข้อมูล ถึงจะทำงาน
$columns = 4;
$rows = array_chunk($data, 4);
echo "<table border='1'>\n";
foreach ($rows as $rowObject) {
echo "<tr>";
foreach ($rowObject as $objResult) {
echo "<td>
<center>
<img width='150' height='170' src='". $objResult["Picture"] ."'><br />".$objResult["GalleryName"]."<br>
</center>
</td>";
}
if($cnum = count($rowObject)){//ถ้าสร้างตารางยังไม่ครบตามคอลัมน์ที่ต้องการ ให้สร้างเพิ่มจนครบ
for($col=$cnum;$col<$columns;$col++){
echo '<td> </td>';
}
}
echo "</tr>\n";
}
echo "</table>\n";
}else{
echo "ไม่พบข้อมูล.\n";
}
?>
ผลลัพธ์ที่ได้
จำนวนคอลัมน์ที่ได้นั้น ขึ้นอยู่กับตัวแปร $columns = 4; ซึ่งสามารถกำหนดได้ตามต้องการ
ถ้าเปรียนเทียบการเขียนโปรแกรมแสดงผลข้อมูลหลายคอลัมน์ แบบ ThaiCreate.Com และของผมที่ใช้ฟังก์ชั่น array_chunk() แยกอาร์เรย์ออกจากกันเป็นหลายๆ ชุด แล้ววนลูปอีกทีนั้น ดูแล้วแบบผมจะยุ่งยากกว่าใช่ไหมล่ะครับ แต่อย่าว่ากันเลยครับ ตัวอย่างก็คือตัวอย่าง แค่อยากให้มองเห็นภาพชัดเจนขึ้น
แต่สำหรับใครที่เขียนโปรแกรม PHP ด้วย CodeIgniter Framework คงพอจะมีประโยชน์อยู่บ้าง
เมื่อใช้งานร่วมกับฟังก์่ชั่น $query = $this->db->query("YOUR QUERY");
เมื่อใช้งานร่วมกับฟังก์่ชั่น $query = $this->db->query("YOUR QUERY");
<?php
$query = $this->db->query("SELECT * FROM gallery");
$data = $query->result_array();
$rows = array_chunk($data, 4);
?>
และเริ่มวนลูปแสดงข้อมูลทั้งหมดใน $rows
จะเห็นว่าใน CodeIgniter นั้นจะมีฟังก์ชั่นที่ใ้ช้คิวรี่ข้อมูลมาเป็นอาร์เรย์ให้อยู่แล้ว หรือหลายๆ ท่านก็สร้างฟังก์ชั่นไว้ใ้ช้เองอยู่แล้ว ถ้านำวิธีการแยกข้อมูลอาร์เรย์ออกเป็นชุด เพื่อแสดงผลแบบหลายคอลัมน์ด้วย array_chunk() ก็น่าสนใจไม่น้อยทีเดียวใช่มั้ยล่ะครับ ^_^
SQL Code
SQL Code
--
-- Table structure for table `gallery`
--
CREATE TABLE IF NOT EXISTS `gallery` (
`GalleryName` text NOT NULL,
`Picture` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `gallery`
--
INSERT INTO `gallery` VALUES
('Into The New World', 'images/album_itnw.jpg'),
('The First Mini Album – Gee', 'images/album-gee.jpg'),
('Tell Me Your Wish (Genie)', 'images/album-genie.jpg'),
('The 1st Asia Tour : Into the New ', 'images/album_itnw_live.jpg'),
('Album – Girls’ Generation', 'images/album_gg.jpg'),
('The 3rd Album – The Boys', 'images/album_the_boys.jpg'),
('The 3rd Album – Mr.Taxi Ver', 'images/mrtaxi.jpg'),
('GIRL’S GENERATION ~The Boys~', 'images/theboys.jpg'),
('Baby Baby (Repackaged)', 'images/album-baby.jpg');
"PHP ไม่ได้สร้างสุดยอดโปรแกรมแต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"
PHP CI MANIA - PHP Code Generatorโปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม
สนใจสั่งซื้อเพียง 3,990 บาท
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"



ความคิดเห็น
แสดงความคิดเห็น