รบกวนดูโค้ดให้หน่อยครับ อยากให้มันรวมผลลัพธ์ของคอลัมน์
อาจจะทำลูป 2 วง โดยคิวรี่แยกกัน อันนึง where type ตัวนี้ อีกอัน ตัวนี้ แต่ถ้าแบบนี้เราก็ไม่รู้มันมีกี่ type ต้องใช้กี่วง
ก็อาจจะทำเป็นลูปเพื่อหาจำนวนของแต่ละประเภทก่อนว่าแต่ละประเภทนึงมีกี่ชิ้นจะได้รู้ว่าต้องวนกี่รอบถึงจะเปลี่ยนประเภท โดยให้ ORDER BY type,name อันนี้ไม่แน่ใจว่าจะเรียงประเภทขึ้นก่อนแล้วค่อยเรียงชื่อให้รึป่าวนะ
ผมก็เขียนโปรแกรมงูๆปลาๆ ทำได้แค่ O(n2 ) TT
Date :
2015-11-14 02:24:06
By :
axyz987
Code (PHP)
<?php
$buffer_ประเภท=''; $buffer_qty=0; $buffer_price=0;
while($ro=$result->fetch_assoc().){
if( ตรวจสอบ $buffer_ประเภท !== $ro['ประเภท'] ว่าเท่ากันหรือไม่){
//ถ้าไม่เท่ากัน
if( ให้ ตรวจสอบ $buffer_ประเภท >'' หรือ ไม่){
//ถ้า มากกว่า แสดงว่าไม่ใช่ รายการแรก
echo "ให้ print ยอดรวม record ก่อนหน้า", '<br>';
$buffer_qty=0; $buffer_price=0; // เคลียร์ยอดรวม ให้เป็น 0
}
echo $buffer_ประเภท = $ro['ประเภท'], '<br>'; // กำหนดค่า $buffer_ประเภทด้วยค่าใหม่ พิมพ์ $buffer_ประเภท
}
echo "พิมพ์ รายละเอียดสินค้า", '<br>';
// บวกจำนวน , ราคา ไปไว้ที่ $buffer_qty, $buffer_price ตามลำดับ
$buffer_qty += $ro['qty']; $buffer_price += $ro['price'];
}
if( ถ้า $buffer_ประเภท > '') echo "ให้ print ยอดรวม รายการ สุดท้าย";
ประวัติการแก้ไข 2015-11-14 05:58:45
Date :
2015-11-14 05:57:56
By :
NewbiePHP
คือผมเอาไปใช้ไม่ถูกครับงงว่าต้องใส่ตอนไหน ช่วยแนะนำหน่อยได้มั้ยครับ
ขอบคุณครับ
ประวัติการแก้ไข 2015-11-14 09:47:20
Date :
2015-11-14 09:46:47
By :
comcom00dd
เป็น flow control ครับ อ่าน แล้วทำความเข้าใจ จากคอมเม้นที่ให้ไป อ่านไปที่ละ บันทัด
เข้าใจแล้วก็หาโค๊ดมาใส่ โค๊ดที่เอามาใส่ ก็เป็นโค๊ดที่คุณทำไว้แล้ว
เปรียบเทียบเอาครับ ควรจะใส่อะไร
Date :
2015-11-14 10:02:50
By :
NewbiePHP
ไม่เข้าใจจริงๆครับ เพราะผมสร้าง output เป็น table แบบที่จะให้ output ออกมา
แต่ทีนี้จะเอา if ไปใส่อะไรยังไง ผมงงครับ เพราะมันใส่ if ซ้อน if ตามลำดับใน table ไม่ได้
ช่วยชี้แนะหน่อยครับ
Date :
2015-11-14 12:49:35
By :
comcom00dd
<?
$type = "";
while($row = mysql_fetch_array($query))
{
?>
<table width="100%" height="100" border="0" cellpadding="0" cellspacing="8">
<tr>
<td>
<? if($type != $row['type'])
{
echo $row['type'];
// **** บรรทัดนี้ แหละครับคือส่วนที่ต้องการ ****//
}
$type = $row['type'];
?>
</td>
</tr>
<tr>
<td width="11%" height="36" align="center"></td>
<td width="7%" align="left"><? echo $row['ID'];?></td>
<td width="10%" align="left"><? echo $row['Name'];?></td>
<td width="10%" align="left"><? echo $row['amount'];?></td>
<td width="12%" align="right"><? echo $row['Price'];?></td>
<td width="12%" align="right"><? echo $row['sumPrice'];?></td>
<tr>
<td>
</td>
</tr><? }?>
</table>
Date :
2015-11-14 13:50:50
By :
{Cyberman}
if( ตรวจสอบ $buffer_ประเภท !== $ro['ประเภท'] ว่าเท่ากันหรือไม่){
บันทัดข้างบน แทนที่ค่า ดูสิครับ ว่าแทนที่ได้ไหม ซึ่งมันควรจะเหมือน ตัวแปร $type ของคุณ
if( $type !== $ro['type'] ){
ก็ไปต่อบันทัดต่อไป
if( ให้ ตรวจสอบ $buffer_ประเภท >'' หรือ ไม่){
อ้างอิงจาก $type ก็ต้องเป็น
if( $type > ''){
ส่วนบันทัด echo ลองวิเคราห์ดูว่าควรจะใส่ tag tr อย่างไรดี
เอา tag tr ของคุณมาเลียนแบบ ตัดนู่นเสิรมนี่ เปลี่ยนตัวแปร แต่นั้นเองครับ
แค่อ่าน แต่ละบันทัด ใส่ตัวแปรตามที่บอก ซึ่งของคุณมันก็มีตัวอย่างที่ทำไว้อยู่แล้ว
นำมาประกอบกัน มันยากจริงๆ เลยนะครับเนี่ย
มันอยู่ที่ว่าคุณตั้งใจอ่านหรือเปล่า หรือแค่อ่านผ่านๆก็กลัวซะแล้ว
Date :
2015-11-14 14:26:11
By :
NewbiePHP
Code (PHP)
<?php
include("config.php");
$strSQL = "SELECT * FROM product ";
$query=mysql_query($strSQL) or die(mysql_error());
?>
<?
$type = "";
while($row = mysql_fetch_array($query))
{
?>
<table width="100%" height="100" border="0" cellpadding="0" cellspacing="8">
<tr>
<td>
<? if($type != $row['type'])
{
echo $row['type'];
}
$type = $row['type'];
?>
</td>
</tr>
<tr>
<td width="11%" height="36" align="center"></td>
<td width="7%" align="left"><? echo $row['ID'];?></td>
<td width="10%" align="left"><? echo $row['Name'];?></td>
<td width="10%" align="left"><? echo $row['amount'];?></td>
<td width="12%" align="right"><? echo $row['Price'];?></td>
<td width="12%" align="right"><? echo $row['sumPrice'];?></td>
<tr>
<td>รวม</td>
</tr><? }?>
</table>
คือตอนนี้ที่ผมเข้าใจว่า ผมจะใส่ if ตรงบรรทัดที่ 32 ยังไงครับเพราะบรรทัดที่ 16-21 มันเช็คว่าถ้า type ไม่เท่ากับ ให้แสดงชื่อประเภท
แล้วบรรทัดต่อๆมาก็ echo แสดงข้อมูลตามฐานข้อมูล
ประวัติการแก้ไข 2015-11-14 16:43:42 2015-11-14 16:46:49
Date :
2015-11-14 16:41:16
By :
comcom00dd
อย่าเอาโค๊ดคุณเป็นหลักสิครับ flow control มันผิด
เอา ของผมไปอ่านไปคิด
ถ้ายังคิดไม่ออกไปเริ่มต้นนับ 1 ใหม่ดีครับ
ศึกษาพื้นฐาน ไวยกรณ์ของภาษาให้มากกว่านี้
ไปเอาโค๊ดเขามา แต่ไม่รู้จะต่อยังไงเพราะพื้นฐานไม่ดี
ลองเข้าไปอ่านลิงค์นี้ดูครับ https://www.thaicreate.com/php.html
Date :
2015-11-14 18:02:03
By :
NewbiePHP
อ๋อถ้าแบบนั้น ผมเข้าใจแล้วครับ code แบบพี่ตอนแสดง ก็ให้ echo ตารางไป
ถ้าไม่เป็นการรบกวนจนเกินไป พี่พอบอกวิธีใส่ code ตาม code ของผมได้มั้ยครับ
คือผมออกแบบ output จาก Dreamweaver ก่อนแล้วค่อยใส่ code ตอนหลัง มันจะทำให้ผมเข้าใจมากกว่าครับ
เพราะผมเพิ่งหัดทำยังไม่ชำนาญ
Date :
2015-11-14 18:19:51
By :
comcom00dd
ทำเป็นตัวอย่างให้แค่นี้นะครับ เอาโค๊ดของคุณมาแทนรายละเอียด
ที่เหลือคิดทำเอาเองครับ
คอมเม้นท์สุดท้ายของ topic นี้ครับ ขอให้โชคดี
ย้ายส่วนหัวตารางไว้ นอกลูป โครงสร้างเป็นแบบนี้
<table ..>
<tr>แสดชื่อฟีลด์ หัวตาราง</tr>
<?PHP loop while แสดงรายละเอียด tr ?>
</table>
ตัวอย่างโค๊ด
Code (PHP)
<table width="100%" height="100" border="0" cellpadding="0" cellspacing="8">
<?php
$buffer_ประเภท=''; $buffer_qty=0; $buffer_price=0;
while($ro=$result->fetch_assoc().){
if( ตรวจสอบ $buffer_ประเภท !== $ro['ประเภท'] ว่าเท่ากันหรือไม่){
//ถ้าไม่เท่ากัน
if( ให้ ตรวจสอบ $buffer_ประเภท >'' หรือ ไม่){
//ถ้า มากกว่า แสดงว่าไม่ใช่ รายการแรก
echo "ให้ print ยอดรวม record ก่อนหน้า", '<br>';
$buffer_qty=0; $buffer_price=0; // เคลียร์ยอดรวม ให้เป็น 0
}
echo $buffer_ประเภท = $ro['ประเภท'], '<br>'; // กำหนดค่า $buffer_ประเภทด้วยค่าใหม่ พิมพ์ $buffer_ประเภท
}
//echo "พิมพ์ รายละเอียดสินค้า", '<br>'; แทนด้วยโค๊ดข้างล่าง
?>
<tr>
<td width="11%" height="36" align="center"></td>
<td width="7%" align="left"><?php echo $row['ID'];?></td>
<td width="10%" align="left"><?php echo $row['Name'];?></td>
<td width="10%" align="left"><?php echo $row['amount'];?></td>
<td width="12%" align="right"><?php echo $row['Price'];?></td>
<td width="12%" align="right"><?php echo $row['sumPrice'];?></td>
</tr>
<?php
// บวกจำนวน , ราคา ไปไว้ที่ $buffer_qty, $buffer_price ตามลำดับ
$buffer_qty += $ro['qty']; $buffer_price += $ro['price'];
}
if( ถ้า $buffer_ประเภท > '') echo "ให้ print ยอดรวม รายการ สุดท้าย";
?>
</table>
Date :
2015-11-14 18:51:25
By :
NewbiePHP
Load balance : Server 03