|
|
|
สอบถามการเขียนโค้ดนับคะแนนคนที่สูงสุดประจำเดือนทำไงดีคะ |
|
|
|
|
|
|
|
คือติดปัญหาตรงการเลือกมาแสดง เช่น เมื่อตรบสิ้นเดือนมกราคม ระบบควรจะนำข้อมูลคะแนนของเดือนมกราคมมาคำนวณว่าใครได้คะแนนสูงสุด 10 แล้วนำมาแสดงคะ เมื่อถึงเดือนถัดไปคือเดือนกุมภาพันธ์เมื่อสิ้นเดือนระบบก็ต้องคำนวณคะแนนคนทีมีคะแนนสูงสุดของเฉพาะเดือนกุมภาพันธืมาแสดง10 คนประมาณนี้คะควรเขียนอย่างไรดี
|
|
|
|
|
Date :
2011-07-17 12:29:30 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมื่อถึงสิ้นเดือนแล้ว นำข้อมูลมาโชว์แค่วันสิ้นเดือนวันเดียวหรอครับ หรือว่า แสดงตลอด แล้วสิ้นเดือนถัดไปก็ค่อยอัพเดท
ลำดับคะแนนสูงสุดอีกที
|
|
|
|
|
Date :
2011-07-17 14:28:17 |
By :
tomrambo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็พอสิ้นเดือนก็แสดงตลอดเดือนถัดไปคะ เช่นสิ้นเดือนมกราคมก็คำนวณสถิติของเดือนมกราคม และแสดงออกโชว์หน้าเว็บตลอดเดือนกุมภาพันธ์คะ พอสิ้นเดือนกุมภาก็คำนวณสถิติของเดือนกุมภาและแสดงออกมาตลอดเดือนมีนาคมคะ
|
|
|
|
|
Date :
2011-07-17 16:45:27 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คืองี้ครับ ผมแนะนำให้สร้างตารางมาอีกตารางไว้เก็บค่าหลังจากมันหาค่าเสร็จแล้ว และจะอัพเดทตารางนั้นของทุกๆสิ้นเดือน
โดยสร้างฟิลล์ ตามตารางหลักเลยครับ หรือเลือกสร้างเฉพาะฟิลล์ที่ต้องการเอาค่ามา 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณtOm มากคะ ลองทำแล้วนะคะแต่ติดปัญหานิดหนึ่งคะ ตรงที่มันแสดงแค่วันสิ้นเดือนเพียงวันเดียวคะ พอดีต้องการให้แสดงทุกวันในเดือนถัดไป พอสิ้นเดือนถัดไปก็คำนวณของเฉพาะเดือนนั้นเท่านั้น และก็แสดงทุกวันในของเดือนถัดไปคะ ขอบคุณมากๆเลยนะคะที่ช่วย
|
|
|
|
|
Date :
2011-07-18 17:28:31 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้อครับ ลืมไปนิดนึงครับว่ามันจะเข้าเงืื่อนไขไปคำนวนแค่วันสิ้นเดือนแค่วันเดียว วันอื่นๆจะยังคงค่าหลังจากคำนวนเสร็จแล้วอยู่
งั้นผมแก้ให้ใหม่ครับ
<?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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆคะ
|
|
|
|
|
Date :
2011-07-19 12:42:21 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สรุปใช้ได้หรือยังครับ มีติดตรงไหนอีกป่าวครับ
|
|
|
|
|
Date :
2011-07-19 12:44:02 |
By :
tomrambo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ได้แล้วคะ ไม่ติดตรงไหนคะ ขอบคุณอีกครั้งคะ
|
|
|
|
|
Date :
2011-07-19 13:00:56 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
|
|
|
|
|
Date :
2011-07-19 13:04:38 |
By :
froggy_piggy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|