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 + MySQL ให้ลูปยังไงให้เรียงลำดับตามเงื่อนไขที่ต้องการครับ สามารถทำได้ไหม



 

เขียน PHP + MySQL ให้ลูปยังไงให้เรียงลำดับตามเงื่อนไขที่ต้องการครับ สามารถทำได้ไหม

 



Topic : 128957



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



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




คือมีผมฐานข้อมูล คือ

A

ผมอยากจะ Select ข้อมูลมาโชว์ทั้งหมด โดยมีเงื่อนไขในการเรียงคือ

จะต้องวนลูปรายการสินค้า เป็นรอบๆๆ ทุกจังหวัด
เช่น รอบที่ 1 จังหวัด A เรียงขึ้นมาก่อน โดยเอารายการ ก มาเรียงอันดับหนึ่ง หากยอดเงินยังไม่เกิด 50 บาท
ให้เอารายการที่ 2 คือ รายการ ข มาเรียงเพิ่มเติม ในที่นี้ รอบแรก ของ จังหวัด A จะเท่ากับ 50 พอดี

ต่อมา รอบแรก ของจังหวัด B เอารายการ ง ซึ่งเป็นรายการแรกของจังหวัด มาเรียงต่อ จากรายการที่แล้ว หากยอดเงินยังไม่เกิด 50 บาท เอารายการที่ 2 คือ รายการ จ มาต่อ พอนับยอดเงินของจังหวัด B มันเกิน 50 บาทแล้ว ก็ให้ไปเริ่มนับจังหวัด ต่อไป

จังหวัด C ก็เหมือนกัน นำรายการแรกมาเรียง หากครบ 50 บาทแล้ว ก็เอามาเรียงแค่รายการเดียว

จากนั้นก็เริ่มไปเรียงจัง A ใหม่ เรียง วนลูปแบบนี้ไปเรื่อยๆ จนกว่าจะหมด


สามารถทำได้ไหรือไหมครับ ต้องเขียนวนลูปใส่เงื่อนไขการเรียงยังไงครับ



Tag : PHP, MySQL, Oracle, HTML









ประวัติการแก้ไข
2017-09-20 16:41:08
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-09-20 16:15:08 By : the_cop View : 955 Reply : 10
 

 

No. 1



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

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

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


group ก่อน ค่อยๆหาของเก่ามี ตย.เยอะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 16:42:52 By : apisitp
 


 

No. 2



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



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


คล้ายๆ การจ่ายเงินในระบบ mlm ที่ไหนซักแห่ง เป็นการจ่ายต่อรอบ ถ้าซื้อของครบในรอบก็จ่าย
จ้างทำไหมครับอันนี้ เชื่อว่าเป็น mlm แน่นอน

จังหวัด แทนลูกค้า
รายการ คือสินค้าที่ซื้อ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 17:04:31 By : Chaidhanan
 

 

No. 3



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : apisitp เมื่อวันที่ 2017-09-20 16:42:52
รายละเอียดของการตอบ ::
Group เป็นวงเงิน หรือ จังหวัดก่อนครับ ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-09-20 17:04:31


ประวัติการแก้ไข
2017-09-20 17:07:07
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 17:06:40 By : the_cop
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-09-20 17:04:31
รายละเอียดของการตอบ ::
ไม่ใช่ MLM ครับ เป็นการจัดลำดับความสำคัญก่อนจัดซื้อครับ :)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 17:07:48 By : the_cop
 


 

No. 5



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



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


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

ส่วนวิธีการ ใช้ group ไม่ได้ ต้องใช้ order by จังหวัด รายการ
แล้วใช้โค๊ด php ในการรวม

ปล. condition ที่ใช้ตรวจสอบเยอะพอสมควร ต้องวาง อัลกอลิธึม ให้ดี


ประวัติการแก้ไข
2017-09-20 17:30:44
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 17:27:45 By : Chaidhanan
 


 

No. 6



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



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

ลองๆ วาดๆใส่ กระดาษ ดูก่อน และ ออก แบบ DB ไว้เลย
แล้ว ก็ลอง Group by ดู by อะไรก็ได้ไปก่อน
แล้ว ถ้าหาก ต้องการ ลบกับยอด คงเหลือ ก็
while กำหนด $B= $row1[""] - $row[""] ;
และ ค่อย ส่งค่าที่ได้ ไป update อีกตารางอื่นๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-20 17:29:42 By : Hararock
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-09-20 17:27:45
รายละเอียดของการตอบ ::

ขอบคุณครับผม

มันเป็นสิทธิของจังหวัดในการจัดซื้อครับ...ขึ้นอยู่กับว่าจังหวัดเลือกรายการอะไรมาอันดับต้นๆ.
แล้วก็วนในแต่ละจังหวัดในแต่ระรอบ โดยแต่ละรอบหากเกินวงเงินก็ตัดไปจังหวัดอื่นครับ
หากยังไม่เกินที่กำหนด ก็เอารายการของจังหวัดตัวเองมาต่ออีกครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-21 01:03:16 By : the_cop
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 6 เขียนโดย : Hararock เมื่อวันที่ 2017-09-20 17:29:42
รายละเอียดของการตอบ ::
ครับผม ยัง งงๆ อยู่ เดี่ยต้องลองมั่วใส่กระดาษดูก่อนจริงๆละครับ ขอบคุณมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-21 01:04:17 By : the_cop
 


 

No. 9



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



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


Code (PHP)
<?php
session_start();
////////////////////////////////
$con=new mysqli('localhost','user','paswd','dbname');
if($con->errno)die($con->connect_error);
//////////////////////////////
/// สร้างตารางเก็บค่า record ที่ทำงานไปแล้ว
$rs=$con->query('select 1 from round_status');
if($con->errno){
	$con->multi_query("
# ตารางคิวแก้ไขให้ถูกต้องด้วยครับ เป็นการเพิ่ม field ไว้ตรวจสอบ
ALTER TABLE `que_list`
  ADD `status` int(10) UNSIGNED NOT NULL;
#ตารางเก็บข้อมูลจังหวัดที่ทำงานแล้วต่อรอบ ป้องกัน server/client หยุดการทำงานโดยไม่ตั้งใจ
CREATE TABLE `round_status` (
  `id` int(10) UNSIGNED NOT NULL,
  `section_time` datetime NOT NULL,
  `prov` varchar(60) NOT NULL,
  `amt` int(10) UNSIGNED NOT NULL  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `round_status`
  ADD PRIMARY KEY (`id`),
  ADD KEY `section_time` (`section_time`,`prov`);
ALTER TABLE `round_status`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
");
}
//////////////////////////////
/// function สำหรับ insert ตาราง round_status
function add_status($con, $sectimt, $prov, $amt ){
	$con->query('insert into round_status .......');
}
//////////////////////////////
// กำหนด section_time ไว้ตรวจสอบ
$sectime=isset($_SESSION['sectime'])? $_SESSION['sectime'] :
	$_SESSION['sectime']=time();
//////////////////////////////
// query รายการทั้งหมด ที่ยังไม่จัดสรรงบประมาณ
$sql = "
select id, province, product, amount from que_list as q
where status=0 and not exists(
	select 1 from round_status 
	where prov=q.province and section_time='$sectime'
)
order by province, product, id
";
$rs=$con->query($sql) or die($con->error . '<br>' . $sql);
do{
	if($rs->num_rows==0){
	//// เคลียร์ session เมื่อทำงานเสร็จ
		unset $_SESSION['sectime'];
		echo 'Complete'; break;
	}else{
		$sum_amt=0; $old_prov='';
		while($ro=$rs->fetch_assoc()){
			if($old_prov!==$ro->province){
				if($sum_amt>0){
					add_status($con, $sectime, $old_prov, $sum_amt);
				} $sum_amt=0; $old_prov=$ro->province;
			}
			if($sum_amt<50){
				$sum_amt+=$ro->amt;
				$con->query('update que_list set status=1 where id='.$ro->id);
				if($sum_amt>=50){
					add_status($con, $sectime, $old_prov, $sum_amt);
				}
			}			
		}
		if($sum_amt<50){
			add_status($con, $sectime, $old_prov, $sum_amt);
		}
	}	
	$rs=$con->query($sql) or die($con->error . '<br>' . $sql);
}

ตัวอย่างข้างบนมีข้อจำกัด
1 ทำงานหลายเครื่อง พร้อมกันไม่ได้
2 ถ้า server|client ตายเดี้ยง ยังจัด event ไม่ครบ
3 function add_status ยังไม่สมบูรณ์

ที่เหลือคิดเอาเองบ้างนะครับ แค่พอจะเป็นตัวอย่างให้ต่อยอดได้บ้าง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-21 09:44:07 By : Chaidhanan
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-09-21 09:44:07
รายละเอียดของการตอบ ::
ขอบคุณมากครับผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-25 13:59:43 By : the_cop
 

   

ค้นหาข้อมูล


   
 

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