|
|
|
สอบถาม เกี่ยวกับ array ค่ะ error Warning: Invalid argument supplied for foreach() in localhost/table_time.php on line 159 |
|
|
|
|
|
|
|
คือมันเป็น code ตารางสอนหน่ะค่ะ แต่พอเอามารันแล้วมัน error ขึ้น อยากสอบถามว่า
การ foreach แบบนี้มันไม่ถูกต้องแล้วหรอคะ หรือว่าต้องเขียนในรูปแบบอื่น รบกวนขอคำแนะนำด้วยนะคะ
foreach($data_schedule[$dayInSchedule_chk] as $k=>$v){
}
Code (PHP)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<style type="text/css">
.activity{
background-color:#C6EEC3;
}
</style>
<?php
// ส่วนของตัวแปรสำหรับกำหนด
$thai_day_arr=array("จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์","อาทิตย์");
$thai_month_arr=array(
"0"=>"",
"1"=>"มกราคม",
"2"=>"กุมภาพันธ์",
"3"=>"มีนาคม",
"4"=>"เมษายน",
"5"=>"พฤษภาคม",
"6"=>"มิถุนายน",
"7"=>"กรกฎาคม",
"8"=>"สิงหาคม",
"9"=>"กันยายน",
"10"=>"ตุลาคม",
"11"=>"พฤศจิกายน",
"12"=>"ธันวาคม"
);
$thai_month_arr_short=array(
"0"=>"",
"1"=>"ม.ค.",
"2"=>"ก.พ.",
"3"=>"มี.ค.",
"4"=>"เม.ย.",
"5"=>"พ.ค.",
"6"=>"มิ.ย.",
"7"=>"ก.ค.",
"8"=>"ส.ค.",
"9"=>"ก.ย.",
"10"=>"ต.ค.",
"11"=>"พ.ย.",
"12"=>"ธ.ค."
);
// ส่วนของการจัดการตารางเวลา
$sc_startTime=date("Y-m-d 08:00:00"); // กำหนดเวลาเริ่มต้ม
$sc_endtTime=date("Y-m-d 18:00:00"); // กำหนดเวลาสื้นสุด
$sc_t_startTime=strtotime($sc_startTime);
$sc_t_endTime=strtotime($sc_endtTime);
$sc_numStep="60"; // ช่วงช่องว่างเวลา หน่ายนาที 60 นาที = 1 ชั่วโมง
$num_dayShow=5; // จำนวนวันที่โชว์ 1 - 7
$sc_timeStep=array();
$sc_numCol=0;
// รูปแบบชุดข้อมูลที่ใช้งาน
$data_schedule=array(
"2015-03-17"=>array(
"0"=>array(
"start_time"=>"08:00:00",
"end_time"=>"10:00:00",
"detail"=>"test data1"
)
),
"2015-03-16"=>array(
"0"=>array(
"start_time"=>"10:00:00",
"end_time"=>"12:00:00",
"detail"=>"test data2"
),
"1"=>array(
"start_time"=>"13:00:00",
"end_time"=>"15:00:00",
"detail"=>"test data3"
),
"3"=>array(
"start_time"=>"17:00:00",
"end_time"=>"18:00:00",
"detail"=>"test data4"
),
),
"2015-03-20"=>array(
"0"=>array(
"start_time"=>"09:00:00",
"end_time"=>"12:00:00",
"detail"=>"test data5"
),
"1"=>array(
"start_time"=>"13:00:00",
"end_time"=>"16:00:00",
"detail"=>"test data6"
),
"3"=>array(
"start_time"=>"16:00:00",
"end_time"=>"18:00:00",
"detail"=>"test data7"
),
)
);
// ส่วนของการกำหนดวัน สามารถนำไปประยุกต์กรณีทำตารางเวลาแบบ เลื่อนดูแต่ละสัปดาห์ได้
$now_day=date("Y-m-d"); // วันปัจจุบัน รือกำหนดเป็นอย่างอื่นตามต้องการ
$startWeekDay_back=(date("w",strtotime($now_day))!=0)?-(date("w",strtotime($now_day)))+1:-7;
$startWeekDay_next=(date("w",strtotime($now_day))!=0)?7-(date("w",strtotime($now_day))):0;
$start_weekDay=date("Y-m-d",strtotime("+$startWeekDay_back day")); // หาวันแรกของสัปดาห์
while($sc_t_startTime<=$sc_t_endTime){
$sc_timeStep[$sc_numCol]=date("H:i",$sc_t_startTime);
$sc_t_startTime=$sc_t_startTime+($sc_numStep*60);
$sc_numCol++; // ได้จำนวนคอลัมน์ที่จะแสดง
}
?>
<div style="margin:auto;width:800px;">
<p> </p>
<p> </p>
<table width="100%"
align="center"
border="1"
cellspacing="2"
cellpadding="2"
style="border-collapse:collapse;" >
<tr>
<td align="center" valign="middle" width="120" height="50">
</td>
<?php
for($i_time=0;$i_time<$sc_numCol-1;$i_time++){
?>
<td align="center" valign="middle" width="150" height="50">
<?=$sc_timeStep[$i_time]?> - <?=$sc_timeStep[$i_time+1]?>
</td>
<?php }?>
</tr>
<?php
// วนลูปแสดงจำนวนวันตามที่กำหนด
for($i_day=0;$i_day<$num_dayShow;$i_day++){
$dayInSchedule_chk=date("Y-m-d",strtotime($start_weekDay." +".$i_day." day"));
$dayInSchedule_show=date("d-m-Y",strtotime($start_weekDay." +".$i_day." day"));
?>
<tr>
<td align="center" valign="middle" width="120" height="50">
<?=$thai_day_arr[$i_day]?>
<br>
<?=$dayInSchedule_show?>
</td>
<?php
// ตรวจสอบและกำหนดช่วงเวลาให้สอดคล้องกับช้อมูล
//$num_data=count($data_schedule[$dayInSchedule_chk]);
$num_data =7;
$arr_checkSpan=array();
$arr_detailShow=array();
$real_sc_numCol=$sc_numCol;
for($i_time=0;$i_time<$sc_numCol-1;$i_time++){
if($num_data>0){
$haveIN=0;
$dtaShow="";
foreach($data_schedule[$dayInSchedule_chk] as $k=>$v){
if(strtotime($dayInSchedule_chk." ".$sc_timeStep[$i_time].":00") ==
strtotime($dayInSchedule_chk." ".$v['start_time'])){
$haveIN++;
$dtaShow=$v['detail'];
$add=1;
while(strtotime($dayInSchedule_chk." ".$sc_timeStep[$i_time+$add].":00") <
strtotime($dayInSchedule_chk." ".$v['end_time'])){
$haveIN++;
$dtaShow=$v['detail'];
$add++;
}
}
}
$arr_checkSpan[$i_time]=$haveIN;
$arr_detailShow[$i_time]=$dtaShow;
}
}
for($i_time=0;$i_time<$sc_numCol-1;$i_time++){
$colspan="";
$css_use="";
$dataShowIN="";
if($arr_checkSpan[$i_time]>0){
$dataShowIN=$arr_detailShow[$i_time];
$css_use="class=\"activity\"";
}
if($arr_checkSpan[$i_time]>1){
$colspan="colspan=\"".$arr_checkSpan[$i_time]."\"";
$step_add=$arr_checkSpan[$i_time]-1;
$i_time+=$step_add;
}
?>
<td <?=$css_use?> <?=$colspan?> align="center" valign="middle" width="150" height="50">
<?php
echo $dataShowIN;
?>
</td>
<?php }?>
</tr>
<?php }?>
</table>
</div>
</body>
</html>
Tag : PHP
|
|
|
|
|
|
Date :
2016-04-03 12:02:16 |
By :
minted |
View :
851 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Error นี้เกิดจาก Query Error แล้วยังไปดึงค่า Result ออกมาใช้ครับ
|
|
|
|
|
Date :
2016-04-03 22:23:22 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|