|
|
|
ผมจะต้อง random ข้อมูลยังไงดีกับการจัดการเข้าเวรแบบให้ระบบจัดอัตโนมัติ |
|
|
|
|
|
|
|
ยากหน่อยครับ ลองออกแบบเขียนมาก่อนครับ เผื่อจะต่อยอดและช่วยคิดได้ครับ
|
|
|
|
|
Date :
2013-09-18 06:34:32 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มีการเข้าเวรซ้ำได้หรือเปล่าครับ?
|
|
|
|
|
Date :
2013-09-18 07:30:45 |
By :
ALTELMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณ ALTELMA สามารถเข้าเวรซ้ำได้ครับ คือ สมมุตว่าเดือนนี้เดือน กันยายน เมื่อคลิกเข้าไปก็ให้ระบบจัดอัตโนมัติเลย เดือนถัดไปก็ทำเหมือนกันครับ โดยสมาชิกมีทั้งหมด 10 คน จะต้องสลับการเข้าเวร 2 คนเช้า เวรดึก 2 คน ครับ
|
|
|
|
|
Date :
2013-09-18 09:21:46 |
By :
wichasit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. สร้างตารางจัดลำดับเวรครับ ว่าใครอยู่ลำดับเท่าไหร่
2. เก็บประวัติการเข้าเวรแต่ละเดือน โดยวน INSERT ตามลำดับ
เริ่มที่เดือนกันยายนมี 30 วัน
คนเข้าเวรมีทั้งหมด 10 คน
Code (PHP)
$no = 1;
for($i=1;$i<=30;$i++){
for($j=1;$j<=4;$j++){
echo "วันที่ ", $i, " คืนที่เข้าเวรคือสมาชิกลำดับที่ ", $no;
$no++;
}
if($no > 10) $no = 1;
}
|
ประวัติการแก้ไข 2013-09-18 09:39:04
|
|
|
|
Date :
2013-09-18 09:37:43 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ พี่ Cyberman ผมจะลองทำดูครับไม่ได้ยังไงเดี๋ยวส่งข่าวครับ
|
|
|
|
|
Date :
2013-09-18 09:40:12 |
By :
wichasit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ Cyberman สร้างตารางจัดลำดับเวร จะต้องเก็บเวลาจากตารางด้านบนลงไปด้วย จะต้องวนลูปเวลาด้วยไหมครับ จะต้องเพิ่มตรงไหน
|
|
|
|
|
Date :
2013-09-18 09:57:53 |
By :
wichasit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเวลาเข้าเวรแต่ละกะ 12 ชั่วโมงก็รับไปคนละ 6 ชั่วโมง (6.00-18.00 และ 18.00-6.00)
ลำดับที่ $j=1 จะได้ช่วง 6.00-12.00
ลำดับที่ $j=2 จะได้ช่วง 12.00-18.00
ลำดับที่ $j=3 จะได้ช่วง 18.00-24.00
ลำดับที่ $j=4 จะได้ช่วง 01.00-06.00
นำไปเก็บในตารางประวัติการเข้าเวรแต่ละเดือน
|
|
|
|
|
Date :
2013-09-18 10:15:01 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
include("include/connect.php");
$s_date='2013-09-01';
$e_date='2013-09-30';
$sql=mysql_query("SELECT * FROM tb_member");
$num=mysql_num_rows($sql);
$no = 1;
for($i=1;$i<=30;$i++){
for($j=1;$j<=4;$j++){
$rows=mysql_fetch_array($sql);
echo "วันที่ ", $i, " คืนที่เข้าเวรคือสมาชิกลำดับที่ ", $no." ".$rows[name]."<br>";
$no++;
}
if($no > 10) $no = 1;
}
?>
ที่ผมลองทำดูครับผลออกมาเป็นแบบนี้ครับ
รายชื่อมันไม่วนต่อครับทำยังไงให้มันวนต่อครับ
แล้วเวลาที่แสดงให้สมาชิกทราบต้องวนไหมครับ
ถ้าขึ้นเดือนไหมบางเดือนมันมี 31 วันบ้าง 29 วันบ้าง 30 วันบ้าง เราจะต้องเปลี่ยนตรงไหนครับ
|
|
|
|
|
Date :
2013-09-18 10:16:11 |
By :
wichasit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เก็บข้อมูลชุดนี้ไว้ในอาร์เรย์ก่อนดีกว่าครับ
Code (PHP)
$sql=mysql_query("SELECT * FROM tb_member");
$num=mysql_num_rows($sql);
$member = array();
while($rows=mysql_fetch_array($sql)){
$member[] = $rows['name'];
}
$no = 0;
for($i=1;$i<=30;$i++){
for($j=1;$j<=4;$j++){
$rows=mysql_fetch_array($sql);
echo "วันที่ ", $i, " คนที่เข้าเวร ลำดับที่ ", $j ," คือสมาชิกหมายเลข ", $no." ". $member[$no] ."<br>";
$no++;
}
if($no >= $num) $no = 0;
}
ข้อมูล $member จะมีตั้งแต่ลำดับที่ 0 ถึงลำดับที่ ($num -1)
ถ้าพบว่า $no มากกว่าหรือเท่ากับสมาชิกแล้วแสดงว่า ถึงคนสุดท้ายแล้ว ให้กลับไปที่ค่าลำดับที่ 0 อีกครั้ง
----
ปล. $no ให้เริ่มต้นที่ 0 นะครับ เพราะลำดับแรกของอาร์เรย์จะเริ่มที่ 0
|
ประวัติการแก้ไข 2013-09-18 13:22:59 2013-09-18 13:24:28
|
|
|
|
Date :
2013-09-18 13:22:02 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยดูโค้ดให้หน่อยครับมันแสดงผลได้ครับแต่ทำไมยังขึ้น
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\est\test.php on line 19
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\est\test.php on line 26
ทำไงดี
Code (PHP)
<?php
ob_start();
include("include/connect.php");
$s_date='2013-09-01';
$e_date='2013-09-07';
$no = 1;
for($i=0;$i<2000;$i++){
$t_date = date('Y-m-d',strtotime($s_date.' +'.$i.' days'));
for($j=1;$j<=4;$j++){
if(!$rows=mysql_fetch_array($sql)){
$sql=mysql_query("SELECT * FROM tb_member WHERE position ='3'");
$num=mysql_num_rows($sql);
$rows=mysql_fetch_array($sql);
}
if(!$rows_time=mysql_fetch_array($sql_time)){
$sql_time=mysql_query("SELECT * FROM tb_time");
$rows_time=mysql_fetch_array($sql_time);
}
echo "วันที่ ".$t_date. " คืนที่เข้าเวรคือสมาชิกลำดับที่ ", $no." id_member ".$rows[name]." time ".$rows_time['time']."<br>";
$no++;
}
if($t_date==$e_date){
break;
}
if($no > $num) $no = 1;
}
?>
รูปประกอบครับ
|
|
|
|
|
Date :
2013-09-18 18:09:45 |
By :
wichasit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|