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

HOME > PHP > PHP Forum > สอบถามการเขียนโค้ดนับคะแนนคนที่สูงสุดประจำเดือนทำไงดีคะ



 

สอบถามการเขียนโค้ดนับคะแนนคนที่สูงสุดประจำเดือนทำไงดีคะ

 



Topic : 063262



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



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




ขอสอบถามเรื่องการเขียนโค้ดนับคะแนนคนที่มีคะแนนสูงสุดประจำเดือนจำนวน 10 คน ควรเขียนโค้ด PHP อย่างไรดีคะ ขอบคุณคะ



Tag : PHP, MySQL, CakePHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-07-17 11:55:39 By : froggy_piggy View : 1866 Reply : 12
 

 

No. 1



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

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

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


ไม่น่าจะใช่หน้าที่ของ php หรอกครับ ควรเป็นหน้าที่ของ database
ไม่รู้ว่าเก็บคะแนนยังไงนะ แยกหรือว่ามีแค่ฟิลด์เก็บคะแนน แต่นี่เขียนตัวอย่างแค่ฟิลด์เก็บคะแนนละกัน
Quote:
select * from table order by score_field desc limit 0,10

แค่นี้ก็คงได้ละ จากนั้นก็เขียนปกติ คิวรี่ ลูปดึงข้อมูลมาโชว์






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 12:16:39 By : PlaKriM
 


 

No. 2



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



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


คือติดปัญหาตรงการเลือกมาแสดง เช่น เมื่อตรบสิ้นเดือนมกราคม ระบบควรจะนำข้อมูลคะแนนของเดือนมกราคมมาคำนวณว่าใครได้คะแนนสูงสุด 10 แล้วนำมาแสดงคะ เมื่อถึงเดือนถัดไปคือเดือนกุมภาพันธ์เมื่อสิ้นเดือนระบบก็ต้องคำนวณคะแนนคนทีมีคะแนนสูงสุดของเฉพาะเดือนกุมภาพันธืมาแสดง10 คนประมาณนี้คะควรเขียนอย่างไรดี
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 12:29:30 By : froggy_piggy
 

 

No. 3



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



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


เมื่อถึงสิ้นเดือนแล้ว นำข้อมูลมาโชว์แค่วันสิ้นเดือนวันเดียวหรอครับ หรือว่า แสดงตลอด แล้วสิ้นเดือนถัดไปก็ค่อยอัพเดท

ลำดับคะแนนสูงสุดอีกที
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 14:28:17 By : tomrambo
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

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

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

Code
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/


เจอบทความนี้เยี่ยมดีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 16:17:59 By : webmaster
 


 

No. 5



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



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


ก็พอสิ้นเดือนก็แสดงตลอดเดือนถัดไปคะ เช่นสิ้นเดือนมกราคมก็คำนวณสถิติของเดือนมกราคม และแสดงออกโชว์หน้าเว็บตลอดเดือนกุมภาพันธ์คะ พอสิ้นเดือนกุมภาก็คำนวณสถิติของเดือนกุมภาและแสดงออกมาตลอดเดือนมีนาคมคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 16:45:27 By : froggy_piggy
 


 

No. 6



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



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


คืองี้ครับ ผมแนะนำให้สร้างตารางมาอีกตารางไว้เก็บค่าหลังจากมันหาค่าเสร็จแล้ว และจะอัพเดทตารางนั้นของทุกๆสิ้นเดือน

โดยสร้างฟิลล์ ตามตารางหลักเลยครับ หรือเลือกสร้างเฉพาะฟิลล์ที่ต้องการเอาค่ามา echo แค่นั้นก็ได้

เพิ่มเติมฟิลล์ date_update มาฟิลล์หนึ่งนะครับ ไว้ป้องกัน เมื่อเข้าเงื่อนไขวันสิ้นเดือนแล้วคนแรกที่รันหน้าเผจขึ้นมาก็จะอัพเดทเมื่อนั้น

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

ส่วน โค๊ด ผมได้ลอง เขียนระบบมาให้น่ะครับ ลองนำไปปรับใช้ดูน่ะครับ ไม่ได้ตรงติดตรงไหนถามมาครับ

<?php
$date_update=date("Ynj");
$month = date("n");
$year = date("Y");
$total_day = cal_days_in_month(CAL_GREGORIAN, $month, $year) ;
 if ($total_day==date("j")) {

//tb_name1 คือตารางหลักที่เก็บข้อมูลอยู่น่ะครับ
//tb_name2 คือตารางเก็บข้อมูลอันดับ ที่จัดเสร็จแล้วน่ะครับ
 				
			$sql1 = mysql_query("SELECT * FORM tb_name2") or die(mysql_error());	// select ตารางที่ไว้ใช้เก็บข้อมูล 10 อันดับ
			$num = mysql_num_rows($sql1);
			$sql2 = mysql_query("SELECT * FORM tb_name1 order by point desc limit 0,10") or die(mysql_error()); // select ตารางข้อมูลหลัก
				
			if ($num>=1) {
			
			$delete_data = mysql_query("DELETE FROM tb_name2 WHERE date_update<>'$date_update'") 
			if ($delete_data) {
			
			while($row1=mysql_fetch_array($sql2)){
			
			$sql3 = mysql_query("INSERT INTO tb_name2 (test1, test2, test3, test4, date_update) VALUES ('$row1','$row2','$row3','$row4','$date_update')") or die(mysql_error());
			
								}
					}
 			} else {
			
			while($row1=mysql_fetch_array($sql2)){
			$sql3 = mysql_query("INSERT INTO tb_name2 (test1, test2, test3, test4, date_update) VALUES ('$row1','$row2','$row3','$row4','$date_update')") or die(mysql_error());
					
					}	
			}
 }


// ส่วนนี้คือส่วนแสดงผล 
 $sql4 = mysql_query("SELECT * FORM tb_name2 order by point desc limit 0,10") or die(mysql_error()); // select ตารางที่เก็บข้อมูล 10 อันดับ
 while($row2=mysql_fetch_array($sql4)) {
 
 echo $row2['test']."<br />\n";
 
 }



?>



ประวัติการแก้ไข
2011-07-17 19:43:46
2011-07-17 19:45:05
2011-07-17 19:48:09
2011-07-18 16:15:17
2011-07-19 15:34:59
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-17 19:39:49 By : tomrambo
 


 

No. 7



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



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


ขอบคุณ คุณtOm มากคะ ลองทำแล้วนะคะแต่ติดปัญหานิดหนึ่งคะ ตรงที่มันแสดงแค่วันสิ้นเดือนเพียงวันเดียวคะ พอดีต้องการให้แสดงทุกวันในเดือนถัดไป พอสิ้นเดือนถัดไปก็คำนวณของเฉพาะเดือนนั้นเท่านั้น และก็แสดงทุกวันในของเดือนถัดไปคะ ขอบคุณมากๆเลยนะคะที่ช่วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-18 17:28:31 By : froggy_piggy
 


 

No. 8



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



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


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

งั้นผมแก้ให้ใหม่ครับ


<?php
$date_update=date("Ynj");
$month = date("n");
$year = date("Y");
$total_day = cal_days_in_month(CAL_GREGORIAN, $month, $year) ;
 if ($total_day==date("j")) {

//tb_name1 คือตารางหลักที่เก็บข้อมูลอยู่น่ะครับ
//tb_name2 คือตารางเก็บข้อมูลอันดับ ที่จัดเสร็จแล้วน่ะครับ
 				
			$sql1 = mysql_query("SELECT * FORM tb_name2") or die(mysql_error());	// select ตารางที่ไว้ใช้เก็บข้อมูล 10 อันดับ
			$num = mysql_num_rows($sql1);
			$sql2 = mysql_query("SELECT * FORM tb_name1 order by point desc limit 0,10") or die(mysql_error()); // select ตารางข้อมูลหลัก
				
			if ($num>=1) {
			
			$delete_data = mysql_query("DELETE FROM tb_name2 WHERE date_update<>'$date_update'") 
			if ($delete_data) {
			
			while($row1=mysql_fetch_array($sql2)){
			
			$sql3 = mysql_query("INSERT INTO tb_name2 (test1, test2, test3, test4, date_update) VALUES ('$row1','$row2','$row3','$row4','$date_update')") or die(mysql_error());
			
								}
					}
 			} else {
			
			while($row1=mysql_fetch_array($sql2)){
			$sql3 = mysql_query("INSERT INTO tb_name2 (test1, test2, test3, test4, date_update) VALUES ('$row1','$row2','$row3','$row4','$date_update')") or die(mysql_error());
					
					}	
			}
 }


// ส่วนนี้คือส่วนแสดงผล 
 $sql4 = mysql_query("SELECT * FORM tb_name2 order by point desc limit 0,10") or die(mysql_error()); // select ตารางที่เก็บข้อมูล 10 อันดับ
 while($row2=mysql_fetch_array($sql4)) {
 
 echo $row2['test']."<br />\n"; // ส่วนตรงนี้ไปจัดรูปแบบตารางเอานะครับว่าจะให้โชว์ยังไง
 
 }


?>



ประวัติการแก้ไข
2011-07-19 08:02:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-19 08:01:08 By : tomrambo
 


 

No. 9



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



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


ขอบคุณมากๆคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-19 12:42:21 By : froggy_piggy
 


 

No. 10



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



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


สรุปใช้ได้หรือยังครับ มีติดตรงไหนอีกป่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-19 12:44:02 By : tomrambo
 


 

No. 11



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



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


ใช้ได้แล้วคะ ไม่ติดตรงไหนคะ ขอบคุณอีกครั้งคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-19 13:00:56 By : froggy_piggy
 


 

No. 12



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



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


Code (PHP)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-19 13:04:38 By : froggy_piggy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามการเขียนโค้ดนับคะแนนคนที่สูงสุดประจำเดือนทำไงดีคะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่