PHP สอบถามครับ เราไม่สามารถเรียกใช้ Function จากใน Loop ได้เหรอครับ
จากโค้ดเป็นโค้ดนับเวลาถอยหลัง ใช้ปกติแบบไม่ใส่ใน loop ก็ใช้ได้ปกติ แต่พอมาใส่ใน loop ก็มีปัญหาคือไม่สามารถใช้งาน tab อะไรได้เลย แล้วไม่มี error แจ้ง ต้องแก้ยังไงครับ
Code (PHP)
<body onLoad="begintimer()">
<script language="">
var limit="<?=$time;?>";
if (document.images){
var parselimit=limit.split(":")
parselimit=(parselimit[0]*3600)+(parselimit[1]*60)+parselimit[2]*1
//alert(parselimit);
}
function begintimer(){
if (!document.images)
return
if (parselimit==1)
// เหตุการณ์ที่ต้องการให้เกิดขึ้น
// window.location='page.php'; ถ้าต้องการให้กระโดดไปยัง Page อื่น
frmTest.submit();
else{
parselimit-=1
curhr=parseInt((parselimit%86400)/3600);
curmin=parseInt((parselimit%86400)%3600/60);
cursec=parseInt(((parselimit%86400)%3600)%60);
if (curhr!==0 && curmin!=0)
curtime="เวลาที่เหลือ <font color=red> "+curhr+"</font> ชั่วโมง <font color=red>"+curmin+" </font>นาที กับ <font color=red>"+cursec+" </font>วินาที "
else
if(cursec==0 && curmin==0 && curhr==0)
{
alert('หมดเวลาแล้วจ้า');
}
else
{
curtime="เวลาที่เหลือ <font color=red> "+curhr+"</font> ชั่วโมง <font color=red>"+curmin+" </font>นาที กับ <font color=red>"+cursec+" </font>วินาที "
}
document.getElementById('dplay').innerHTML = curtime;
setTimeout("begintimer()",1000)
}
}
//-->
</script>
<div id=dplay ></div>
Code (PHP)
<div id="menu8" class="tab-pane fade">
<?php
$machine = $db->prepare('SELECT mType,mName,maintaince,id,inuse, SUBSTRING(mName,-2,2) AS substr
FROM tbl_machine
WHERE mType = 10
ORDER BY substr ASC');
$machine->execute();
?>
<?php
$i = 0;
while($row = $machine->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="col-sm-2 col-md-2" style="padding-top: 1cm;" >
<div class="thumbnail">
<?php
$disabled = '';
if ($row['maintaince'] <> 0) {//เผื่อมีสถานะอื่นที่ไม่ใช่ 1
$pic = 'image/installation-icon.jpg';
$disabled = 'disabled';
$text = 'ชำรุด';
$alert = 'danger';
}
else if ($row['inuse'] == 1) {
$m_id = $row['id'];
$status = 'Y';
$log = $db->prepare('SELECT Id,machine_id
FROM tbl_logs
WHERE machine_id = :m_id AND status = :status
ORDER BY Id DESC');
$log->bindParam(':m_id',$m_id,PDO::PARAM_STR);
$log->bindParam(':status',$status,PDO::PARAM_STR);
$log->execute();
$r = $log->fetch(PDO::FETCH_ASSOC);
$logs_id = $r['Id'];
$mat = $db->prepare('SELECT title,barcode,call_on
FROM tbl_material
WHERE logs_id = :logs_id
ORDER BY Id DESC');
$mat->bindParam(':logs_id',$logs_id,PDO::PARAM_STR);
// $mat->bindParam(':status',$status,PDO::PARAM_STR);
$mat->execute();
$r_mat = $mat->fetch(PDO::FETCH_ASSOC);
// print_r($r_mat);
$call_on = $r_mat['call_on'];
$call = $db->prepare('SELECT result_callno,result_time
FROM tbl_result
WHERE result_callno = :call_on ');
$call->bindParam(':call_on',$call_on,PDO::PARAM_STR);
$call->execute();
$r_call = $call->fetch(PDO::FETCH_ASSOC);
$pic = 'image/User-Computer.png';
$text = 'คืน';
$alert = 'warning';
$in = 'return';
$Time = $r_call['result_time']; // หน่วยเป็นนาที
echo $t = date('H:i', mktime(0,$Time)); // แปลงเป็น xx:xx
///////////// แปลงจาก xx:xx:xx เป็นวินาที //////////////////
function secondsTime($examTime){
$time = explode(":", $examTime);
$h = $time[0]*3600;
$m = $time[1]*60;
$s = $time[2]*1;
$seconds = $h+$m+$s;
return $seconds;
}
echo "<br>วินาที : ".$seconds = secondsTime($t);
///////////////////////////////////////////////////////
///////////////// session เวลา ////////////////////
if (!isset($_SESSION['timeend'])){
unset($_SESSION['timeend']);
$endtime = time() + $seconds;
$_SESSION['timeend'] = $endtime;
}
($_SESSION['timeend'] - time()) < 0 ? $EndTime = 0 : $EndTime = $_SESSION['timeend'] - time();
if($EndTime <= 0) {
unset($_SESSION['timeend']);
//session_destroy();
}
/////////////////////////////////////////////////
///////////// แปบวจากวินาทีเป็น HH:MM:SS /////////////////
function checkTime($seconds){
$hours = floor($seconds / 3600);
$mins = floor(($seconds - ($hours*3600)) / 60);
$secs = floor(($seconds - ($hours*3600)) % 60);
$time = $hours.":".$mins.":".$secs;
return $time;
//แปลงเป็นวินาทีให้อยู่ในรูปแบบ xx:xx:xx
}
$time = checkTime($EndTime);
///////////////////////////////////////////////////
}
else {
$pic = 'image/My-Computer-icon.png';
$text = 'ยืม';
$alert = 'primary';
$in = 'add';
$r_mat['title'] = '';
$r_call['result_time'] = '';
$r_mat['call_on'] = '';
}
?>
<img src="<?=$pic?>" alt="...">
<div class="caption">
<h5><?=$row['mName'];?></h5>
<p><?=$r_mat['call_on'];?></p>
<p class="text-primary"><?=$r_mat['title'];?></p>
<p class="text-primary">ความยาว : <?=$r_call['result_time'];?> นาที</p>
<p class="text-danger">เหลืออีก : </p>
<p><a href="Machineborrowform.php?action=<?=$in;?>&&id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>" class="btn btn-<?=$alert?>" role="button" <?=$disabled?> > <?=$text?> </a><!-- <a href="javascript:if(confirm('ยืนยันการคืนทรัพยากร \r\n<?=$row['mName'] ?>')==true){window.location='return.php?id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>';}" class="btn btn-default" role="button" <?=$a?> <?=$b?> >คืน</a> --></p>
</div>
</div>
</div>
<?php
$i++;
}
?>
</div>
Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax, jQuery
Date :
2015-09-22 10:30:08
By :
littlebeer
View :
2810
Reply :
25
เรียกใช้ function ในลูป ได้ครับ แต่ เขียน function ไว้ในลูปไม่ได้ครับ
แบบข้างล่างได้
Code (PHP)
function a (){
}
for(){
a();
}
แบบข้างล่างนี้ไม่ได้
Code (PHP)
for(){
function a (){
}
a();
}
แต่ถ้าต้องการให้ function อยู่ใน loop จริงๆ ต้องเขียนตรวจสอบก่อนครับ
if( function_exists( 'ชื่อฟังก์ชั่น') )
Code (PHP)
for(){
if( !function_exists('a'){
function a (){
}
}
a();
}
ประวัติการแก้ไข 2015-09-22 10:49:57
Date :
2015-09-22 10:44:52
By :
NewbiePHP
ฟังก์ชั่นอะไรสักอย่าง.php
function nCategory($aaa)
{
if($aaa=="1"){$aaa="วิชาพื้นฐาน";}
if($aaa=="2"){$aaa="วิชาเฉพาะ";}
if($aaa=="3"){$aaa="วิชาทัวไป";}
if ($aaa == ""){
return "";
}else{
return $aaa ;
}
}
?>
show.php
include 'ฟังก์ชั่นอะไรสักอย่าง.php';
include 'mysql_connection_class.php'; //class จาก thaicreate
$mysql=new MySQL_Connection("$host","$user","$pw","$dbname");
$mysql->charset = 'utf8';
if ($mysql->query(" SELECT * FROM [course] WHERE [category] = '1' ORDER BY [id] DESC") > 0) {
$no = 1;
while ($rs= $mysql->fetch()) {
echo nCategory($rs['id_category']);
}
อันนี้อยู่ในลูป while ก็เรียกใช้งานได้นะ
Date :
2015-09-22 11:55:33
By :
apisitp
Function ทำงานใน loop แล้วครับ แต่ทำงานไม่ครบตามเงื่อนไข จากรูป คือมันจะต้องขึ้นเวลานับถอยหลังทั้ง 2 เครื่อง ครับ
Code (PHP)
<div id="menu8" class="tab-pane fade">
<?php
$machine = $db->prepare('SELECT mType,mName,maintaince,id,inuse, SUBSTRING(mName,-2,2) AS substr
FROM tbl_machine
WHERE mType = 10
ORDER BY substr ASC');
$machine->execute();
?>
<?php
$i = 0;
while($row = $machine->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="col-sm-2 col-md-2" style="padding-top: 1cm;" >
<div class="thumbnail">
<?php
$disabled = '';
if ($row['maintaince'] <> 0) {//เผื่อมีสถานะอื่นที่ไม่ใช่ 1
$pic = 'image/installation-icon.jpg';
$disabled = 'disabled';
$text = 'ชำรุด';
$alert = 'danger';
}
else if ($row['inuse'] == 1) {
$m_id = $row['id'];
$status = 'Y';
$log = $db->prepare('SELECT Id,machine_id
FROM tbl_logs
WHERE machine_id = :m_id AND status = :status
ORDER BY Id DESC');
$log->bindParam(':m_id',$m_id,PDO::PARAM_STR);
$log->bindParam(':status',$status,PDO::PARAM_STR);
$log->execute();
$r = $log->fetch(PDO::FETCH_ASSOC);
$logs_id = $r['Id'];
$mat = $db->prepare('SELECT title,barcode,call_on
FROM tbl_material
WHERE logs_id = :logs_id
ORDER BY Id DESC');
$mat->bindParam(':logs_id',$logs_id,PDO::PARAM_STR);
// $mat->bindParam(':status',$status,PDO::PARAM_STR);
$mat->execute();
$r_mat = $mat->fetch(PDO::FETCH_ASSOC);
// print_r($r_mat);
$call_on = $r_mat['call_on'];
$call = $db->prepare('SELECT result_callno,result_time
FROM tbl_result
WHERE result_callno = :call_on ');
$call->bindParam(':call_on',$call_on,PDO::PARAM_STR);
$call->execute();
$r_call = $call->fetch(PDO::FETCH_ASSOC);
$pic = 'image/User-Computer.png';
$text = 'คืน';
$alert = 'warning';
$in = 'return';
$Time = $r_call['result_time'];
echo $t = date('H:i', mktime(0,$Time));
if( !function_exists('secondsTime')) {
///////////// แปลงจาก xx:xx:xx เป็นวินาที //////////////////
function secondsTime($examTime){
$time = explode(":", $examTime);
$h = $time[0]*3600;
$m = $time[1]*60;
$s = $time[2]*1;
$seconds = $h+$m+$s;
return $seconds;
}
//echo "<br>วินาที : ".$seconds = secondsTime($t);
///////////////////////////////////////////////////////
}
///////////////// session เวลา ////////////////////
if (!isset($_SESSION['timeend'])){
unset($_SESSION['timeend']);
$endtime = time() + $seconds;
$_SESSION['timeend'] = $endtime;
}
($_SESSION['timeend'] - time()) < 0 ? $EndTime = 0 : $EndTime = $_SESSION['timeend'] - time();
if($EndTime <= 0) {
unset($_SESSION['timeend']);
//session_destroy();
}
/////////////////////////////////////////////////
if( !function_exists('checkTime')) {
///////////// แปบวจากวินาทีเป็น HH:MM:SS /////////////////
function checkTime($seconds){
$hours = floor($seconds / 3600);
$mins = floor(($seconds - ($hours*3600)) / 60);
$secs = floor(($seconds - ($hours*3600)) % 60);
$time = $hours.":".$mins.":".$secs;
return $time;
//แปลงเป็นวินาทีให้อยู่ในรูปแบบ xx:xx:xx
}
$time = checkTime($EndTime);
//////////////////////////////////////////////////
}
}
else {
$pic = 'image/My-Computer-icon.png';
$text = 'ยืม';
$alert = 'primary';
$in = 'add';
$r_mat['title'] = '';
$r_call['result_time'] = '';
$r_mat['call_on'] = '';
}
?>
<img src="<?=$pic?>" alt="...">
<div class="caption">
<h5><?=$row['mName'];?></h5>
<p><?=$r_mat['call_on'];?></p>
<p class="text-primary"><?=$r_mat['title'];?></p>
<p class="text-primary">ความยาว : <?=$r_call['result_time'];?> นาที</p>
<p class="text-danger" id="dplay">เหลืออีก : </p>
<p><a href="Machineborrowform.php?action=<?=$in;?>&&id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>" class="btn btn-<?=$alert?>" role="button" <?=$disabled?> > <?=$text?> </a><!-- <a href="javascript:if(confirm('ยืนยันการคืนทรัพยากร \r\n<?=$row['mName'] ?>')==true){window.location='return.php?id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>';}" class="btn btn-default" role="button" <?=$a?> <?=$b?> >คืน</a> --></p>
</div>
</div>
</div>
<?php
$i++;
}
?>
</div>
Date :
2015-09-22 13:45:53
By :
littlebeer
106.$time = checkTime($EndTime);
107.//////////////////////////////////////////////////
108.}
เอา 106 มาอยู่ หลัง 108 ครับ
Code (PHP)
if( !function_exists('checkTime')) { //ตรวจสอบว่ามี ฟังก์ชั่นอยู่หรือเปล่า
//ถ้าไม่มีให้สร้าง ฟังก์ชั่นขึ้นมา
}
//ตรวจสอบเสร็จก็ไปทำคำสั่ง
$time = checkTime($EndTime);
Date :
2015-09-22 14:08:19
By :
NewbiePHP
ยังขึ้นถอยหลังแค่อันเดียวเหมือนในรูปอยู่ครับ
Date :
2015-09-22 14:41:08
By :
littlebeer
ขอโทษนะครับ เอาโค๊ดที่แก้ไขแล้วมาดูด้วยครับ
โค๊ดเก่า คห 3 ผมหาความสัมพันธ์ ของ function กับตัวแปรอื่นๆ ไม่ได้
Date :
2015-09-22 17:28:26
By :
NewbiePHP
Code (PHP)
document.getElementById('dplay').innerHTML = curtime;
div ที่มี id dplay มันมีหลายตัวหรือเปล่าครับ เห็นคุณสร้างมันไว้ที่ loop while
Date :
2015-09-23 09:40:51
By :
WiTT
011.$i = 0; $time = array(); //กำหนด $time ให้เก็บเป็น array ไว้เก็บ กำหนดส่ง
012.while($row = $machine->fetch(PDO::FETCH_ASSOC)) {
$time[$i]=''; // กำหนดค่า default ให้ $time[$i]
077.echo "<br>วินาที : ".( $seconds = secondsTime($t)) ; ใส่ลงเล็บครอบไว้หน่อยสีแดง
078.///////////////////////////////////////////////////////
079.}
ข้างบน สลับกันเหมือนกัน เอา 77 มาต่อท้าย 79
109.$time[$i] = checkTime($EndTime); // เพิ่มสีแดง เพื่อกำหนดเป็น array
128.<p class="text-danger dplay" data-i="<?=$i?>" ></p>
เปลี่ยน id=dplay เป็น คลาส และเพิ่ม data-i ไว้อ้างอิง
ส่วนของ script
Code (JavaScript)
var times=JSONparse("<?=json_encode($time);?>"); // กำหนดตัวแปร times เป็น array
var column=0; // กำหนดตัวแปร pointer สำหรับ column
ส่วนฟังก์ชั่น แสดงรายการ ถอยหลัง ลองคิดใหม่นะครับ
มันต้องมีเวลา กำหนดส่ง ลบด้วย เวลาปัจจบัน
ผมหา ฟีลด์ กำหนดส่งไม่เจอ ควรจะกำหนดไว้ เอาไว้ลบกับเวลาปัจจุบัน
แล้วเก็บไว้ในตัวแปร $time เป็น array ส่งไปให้ javascript
ลองค้นหา timediff datediff มาประยุกต์ นะครับ
Date :
2015-09-23 10:48:06
By :
NewbiePHP
funcition begintimer ต้องเขียนใหม่ ให้รองรับ $time ที่เป็น array
ครับ
ส่วน
document.getElementById('dplay').innerHTML=curtime;
อ้างอิง array
document.getElementsByClassname('dplay')[colmun].innerHTML=curtime;
หรืออ้างอิง dataset เพราะตัวอย่างผมทำเป็น dataset
document.querySelector("[data-i='"+column+"']").innerHTML=curtime;
ประวัติการแก้ไข 2015-09-23 15:35:35 2015-09-23 15:37:10
Date :
2015-09-23 15:33:23
By :
NewbiePHP
นี่เป็นตัวอย่าง การใช้ เวลาของกำหนดส่ง กับเวลาปัจจุบัน
Code (PHP)
<html>
<head>
<script language="">
var times=JSONparse("<?=json_encode($time);?>");
var column = 0;
function chk_time(){
var c = false;
for( var i=0; i<times.length; i++) if( times[i]>'') { c=true; break;};
return c;
}
function begintimer(){
if ( !chk_time() ) return // ตรวจสอบ element ที่ยังอยู่ในการนับถอยหลัง
if(times[column]==''){
//ตรวจสอบ column ปัจจุบัน ไม่อยู่ในการนับถอยหลัง
column += (column+1)% times.length;
setTimeout( 'begintimer()' , 100);
return;
}
var tm = times[column];
var curtime = new Date();
var target = new Date(tm);
var sec=Math.floor((target.getTime() - curtime.getTime())/1000);
var s=sec%60;
var m=Math.floor(sec/60) % 60;
var h=Math.floor(sec/3600);
if(h|m|s){
curtime = "เวลาที่เหลือ <font color=red> "+h+"</font> ชั่วโมง "+
"<font color=red>"+m+" </font>นาที กับ <font color=red>"+s+" </font>วินาที ";
}else{ curtime = "หมดเวลาแล้วจ้า"; times[column]='';}
document.querySelector("[data-i='"+column+"']").innerHTML=curtime;
setTimeout("begintimer()",1000)
}
</script>
</head>
<body onload="begintimer()">
***** data *****
<body>
</html>
ปล.แต่คุณต้องไปเปลี่ยน endtime ตัวกำหนดส่งให้เป็นเวลามาตรฐาน
จากโค๊ดผมเห็นคุณไปเอามาจาก $_SESSION['timeend'] ซึ่งเป็นตัวแปรปรกติ ไม่ใช่ array
ซึ่งจะเก็บค่าของ กำหนดส่งได้แค่รายการเดียว ต้องไปแก้ให้เก็บ ตัวแปรกำหนดส่ง ได้หลายรายการ
การกำหนดค่าหลายๆ ค่า ต้องกำหนดเป็น array ลองเขียนใหม่ครับ
ศึกษาการเก็บข้อมูลให้เป็น array ให้ดีครับ
ประวัติการแก้ไข 2015-09-25 17:20:22
Date :
2015-09-24 10:42:14
By :
NewbiePHP
ไม่รู้ถูกมั้ยผลลัพธ์ยังไม่ได้เหมือนเดิม คงยังไม่ถูก รบกวนอีกหลาย ๆ ทีครับ
ตอบความคิดเห็นที่ : 16 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-09-24 16:13:19
รายละเอียดของการตอบ ::
Code (PHP)
<div id="menu8" class="tab-pane fade">
<?php
$machine = $db->prepare('SELECT mType,mName,maintaince,id,inuse, SUBSTRING(mName,-2,2) AS substr
FROM tbl_machine
WHERE mType = 10
ORDER BY substr ASC');
$machine->execute();
?>
<?php
$i = 0;
$time = array(); //กำหนด $time ให้เก็บเป็น array ไว้เก็บ กำหนดส่ง
$_SESSION['timeend']=array();
while($row = $machine->fetch(PDO::FETCH_ASSOC)) {
$time[$i] = ''; // กำหนดค่า default ให้ $time[$i]
?>
<div class="col-sm-2 col-md-2" style="padding-top: 1cm;">
<div class="thumbnail">
<?php
$disabled = '';
if ($row['maintaince'] <> 0) {//เผื่อมีสถานะอื่นที่ไม่ใช่ 1
$pic = 'image/installation-icon.jpg';
$disabled = 'disabled';
$text = 'ชำรุด';
$alert = 'danger';
}
else if ($row['inuse'] == 1) {
$m_id = $row['id'];
$status = 'Y';
$log = $db->prepare('SELECT Id,machine_id
FROM tbl_logs
WHERE machine_id = :m_id AND status = :status
ORDER BY Id DESC');
$log->bindParam(':m_id',$m_id,PDO::PARAM_STR);
$log->bindParam(':status',$status,PDO::PARAM_STR);
$log->execute();
$r = $log->fetch(PDO::FETCH_ASSOC);
$logs_id = $r['Id'];
$mat = $db->prepare('SELECT title,barcode,call_on
FROM tbl_material
WHERE logs_id = :logs_id
ORDER BY Id DESC');
$mat->bindParam(':logs_id',$logs_id,PDO::PARAM_STR);
// $mat->bindParam(':status',$status,PDO::PARAM_STR);
$mat->execute();
$r_mat = $mat->fetch(PDO::FETCH_ASSOC);
// print_r($r_mat);
$call_on = $r_mat['call_on'];
$call = $db->prepare('SELECT result_callno,result_time
FROM tbl_result
WHERE result_callno = :call_on ');
$call->bindParam(':call_on',$call_on,PDO::PARAM_STR);
$call->execute();
$r_call = $call->fetch(PDO::FETCH_ASSOC);
$pic = 'image/User-Computer.png';
$text = 'คืน';
$alert = 'warning';
$in = 'return';
$Ti = $r_call['result_time']; // จาก DB เวลาหน่วยเป็นนาที
$t = date('H:i', mktime(0,$Ti)); //แปลงเป็น XX:XX:XX
if( !function_exists('secondsTime')) {
///////////// แปลงจาก xx:xx:xx เป็นวินาที //////////////////
function secondsTime($examTime){
$time = explode(":", $examTime);
$h = $time[0]*3600;
$m = $time[1]*60;
$s = $time[2]*1;
$seconds = $h+$m+$s;
return $seconds;
}
// echo "<br>วินาที : ".$seconds = secondsTime($t);
///////////////////////////////////////////////////////
}
$seconds = secondsTime($t);
// ///////////////// session เวลา ////////////////////
if (!isset($_SESSION['timeend'][$i])){
unset($_SESSION['timeend'][$i]);
$endtime = time() + $seconds;
$_SESSION['timeend'][$i] = $endtime;
}
($_SESSION['timeend'][$i] - time()) < 0 ? $EndTime = 0 : $EndTime = $_SESSION['timeend'][$i] - time();
if($EndTime <= 0) {
unset($_SESSION['timeend'][$i]);
//session_destroy();
}
////////////////////////////////////////////////////////
// /////////////////////////////////////////////////
if( !function_exists('checkTime')) {
///////////// แปบวจากวินาทีเป็น HH:MM:SS /////////////////
function checkTime($seconds){
$hours = floor($seconds / 3600);
$mins = floor(($seconds - ($hours*3600)) / 60);
$secs = floor(($seconds - ($hours*3600)) % 60);
$time = $hours.":".$mins.":".$secs;
return $time;
//แปลงเป็นวินาทีให้อยู่ในรูปแบบ xx:xx:xx
}
//$time = checkTime($EndTime);
//////////////////////////////////////////////////
}
$time[$i] = checkTime($EndTime);
print_r($time);
}
else {
$pic = 'image/My-Computer-icon.png';
$text = 'ยืม';
$alert = 'primary';
$in = 'add';
$r_mat['title'] = '';
$r_call['result_time'] = '';
$r_mat['call_on'] = '';
}
?>
<button type="button" id="rev" class="btn btn-danger btn-xs" data-container="body" data-toggle="popover" data-placement="top" data-content='<form>รหัสนักศึกษา<input type="text" class="form-control" /><br> <button type="submit" class="btn btn-success btn-xs">ตกลง</button> <button type="reset" class="btn btn-warning btn-xs">ยกเลิก</button></form>'>จอง</button>
<img src="<?=$pic?>" alt="...">
<div class="caption">
<h5><?=$row['mName'];?></h5>
<p>
<?=$r_mat['call_on'];?>
</p>
<p class="text-primary">
<?=$r_mat['title'];?>
</p>
<p class="text-primary">ความยาว :
<?=$r_call['result_time'];?> นาที</p>
<p class="text-danger" id="dplay" data-i="<?=$i?>"></p>
<p><a href="Machineborrowform.php?action=<?=$in;?>&&id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>" class="btn btn-<?=$alert?>" role="button" <?=$disabled?> > <?=$text?> </a>
<!-- <a href="javascript:if(confirm('ยืนยันการคืนทรัพยากร \r\n<?=$row['mName'] ?>')==true){window.location='return.php?id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>';}" class="btn btn-default" role="button" <?=$a?> <?=$b?> >คืน</a> --></p>
</div>
</div>
</div>
<?php
$i++;
}
?>
</div>
Code (PHP)
<script language="">
var times=JSONparse("<?=json_encode($time);?>");
var column = 0;
function chk_time(){
var c = false;
for( var i=0; i<times.length; i++) if( times[i]>'') { c=true; break;};
return c;
}
function begintimer(){
if ( !chk_time() ) return // ตรวจสอบ element ที่ยังอยู่ในการนับถอยหลัง
if(times[column]==''){
//ตรวจสอบ column ปัจจุบัน ไม่อยู่ในการนับถอยหลัง
column += (column+1)% times.length;
setTimeout( 'begintimer()' , 100);
return;
}
var tm = times[column];
var curtime = new Date();
var target = new Date(tm);
var sec=Math.floor((target.getTime() - curtime.getTime())/1000);
var s=sec%60;
var m=Math.floor(sec/60) % 60;
var h=Math.floor(sec/3600);
if(h|m|s){
curtime = "เวลาที่เหลือ <font color=red> "+h+"</font> ชั่วโมง "+
"<font color=red>"+m+" </font>นาที กับ <font color=red>"+s+" </font>วินาที ";
}else{ curtime = "หมดเวลาแล้วจ้า"; times[column]='';}
document.querySelector("[data-i='"+column+"']").innerHTML=curtime;
setTimeout("begintimer()",1000)
}
</script>
Date :
2015-09-25 09:50:52
By :
littlebeer
// ///////////////// session เวลา ////////////////////
086.if (!isset($_SESSION['timeend'][$i])){
087.unset($_SESSION['timeend'][$i]);
088.$endtime = time() + $seconds;
089.$_SESSION['timeend'][$i] = $endtime;
090.}
091.
092.($_SESSION['timeend'][$i] - time()) < 0 ? $EndTime = 0 : $EndTime = $_SESSION['timeend'][$i] - time();
093.
094.if($EndTime <= 0) {
095.unset($_SESSION['timeend'][$i]);
096.//session_destroy();
097.}
098.
ข้างบน เป็นกำหนดส่งที่เอามาจาก session มันส่งค่ามายังไงครับ
มันมีการลบ ข้อมูลทำให้ลำดับของ array ไม่คงที่ ให้ลำดับที่ในการกำหนด pointer ไม่ได้
ต้องกำหนดด้วย keyname
และที่สำคัญและง่ายกว่า น่าจะเอาเวลากำหนดส่งมาจาก ตารางเลยครับ ไม่ต้องเอามาจาก session
เข้าถึงแหล่งข้อมูลแล้ว เอาจากมันโดยตรงดีกว่า
Date :
2015-09-25 11:40:44
By :
NewbiePHP
Code (PHP)
067.$Ti = $r_call['result_time']; // จาก DB เวลาหน่วยเป็นนาที
068.$t = date('H:i', mktime(0,$Ti)); //แปลงเป็น XX:XX:XX
result_time ซึ่งเก็บนาทีมาจาก DB เลยครับ แล้วก็เอามาแปลงเป็นในรูปแบบ XX:XX:XX
Date :
2015-09-25 13:34:35
By :
littlebeer
ปรับใหม่ ไม่ต้องแปลง เวลาเอามาดิบๆ นั่นแหล่ะครับ
067 - 114 เอาออก
115.$time[$i] = date('Y-m-d H:i:s', strtotime($r_call['วันเวลาที่ยืม']) + ($r_call['result_time'] * 60) );
ใช้เวลากำหนดส่งที่เป็นจำนวนนาที ตรงๆ ไมได้ ต้องรวมกับ วันเวลาที่ยืม
แล้วทำให้เป็น Y-m-d H:i:s เพื่อเอาไปใช้นับเวลาถอยหลัง
Date :
2015-09-25 14:16:50
By :
NewbiePHP
มาช้าไปหน่อยครับ พอดีเพิ่งได้ลองทำ ตัด 067 - 114 เอาออก
แล้วเอา $time[$i] = date('Y-m-d H:i:s', strtotime($r_call['วันเวลาที่ยืม']) + ($r_call['result_time'] * 60) ); ใส่ไปแทน ก็ยังไม่ได้ครับ
เวลาที่แสดงก็ไม่ตรง
Code (PHP)
<div id="menu8" class="tab-pane fade">
<?php
$machine = $db->prepare('SELECT mType,mName,maintaince,id,inuse, SUBSTRING(mName,-2,2) AS substr
FROM tbl_machine
WHERE mType = 10
ORDER BY substr ASC');
$machine->execute();
?>
<?php
$i = 0;
$time = array(); //กำหนด $time ให้เก็บเป็น array ไว้เก็บ กำหนดส่ง
$_SESSION['timeend']=array();
while($row = $machine->fetch(PDO::FETCH_ASSOC)) {
$time[$i] = ''; // กำหนดค่า default ให้ $time[$i]
?>
<div class="col-sm-2 col-md-2" style="padding-top: 1cm;">
<div class="thumbnail">
<?php
$disabled = '';
if ($row['maintaince'] <> 0) {//เผื่อมีสถานะอื่นที่ไม่ใช่ 1
$pic = 'image/installation-icon.jpg';
$disabled = 'disabled';
$text = 'ชำรุด';
$alert = 'danger';
}
else if ($row['inuse'] == 1) {
$m_id = $row['id'];
$status = 'Y';
$log = $db->prepare('SELECT Id,machine_id,start
FROM tbl_logs
WHERE machine_id = :m_id AND status = :status
ORDER BY Id DESC');
$log->bindParam(':m_id',$m_id,PDO::PARAM_STR);
$log->bindParam(':status',$status,PDO::PARAM_STR);
$log->execute();
$r = $log->fetch(PDO::FETCH_ASSOC);
$logs_id = $r['Id'];
$mat = $db->prepare('SELECT title,barcode,call_on
FROM tbl_material
WHERE logs_id = :logs_id
ORDER BY Id DESC');
$mat->bindParam(':logs_id',$logs_id,PDO::PARAM_STR);
// $mat->bindParam(':status',$status,PDO::PARAM_STR);
$mat->execute();
$r_mat = $mat->fetch(PDO::FETCH_ASSOC);
// print_r($r_mat);
$call_on = $r_mat['call_on'];
$call = $db->prepare('SELECT result_callno,result_time
FROM tbl_result
WHERE result_callno = :call_on ');
$call->bindParam(':call_on',$call_on,PDO::PARAM_STR);
$call->execute();
$r_call = $call->fetch(PDO::FETCH_ASSOC);
$pic = 'image/User-Computer.png';
$text = 'คืน';
$alert = 'warning';
$in = 'return';
echo $time[$i] = date('Y-m-d H:i:s', strtotime($r['start']) + ($r_call['result_time'] * 60) );
}
else {
$pic = 'image/My-Computer-icon.png';
$text = 'ยืม';
$alert = 'primary';
$in = 'add';
$r_mat['title'] = '';
$r_call['result_time'] = '';
$r_mat['call_on'] = '';
}
?>
<button type="button" id="rev" class="btn btn-danger btn-xs" data-container="body" data-toggle="popover" data-placement="top" data-content='<form>รหัสนักศึกษา<input type="text" class="form-control" /><br> <button type="submit" class="btn btn-success btn-xs">ตกลง</button> <button type="reset" class="btn btn-warning btn-xs">ยกเลิก</button></form>'>จอง</button>
<img src="<?=$pic?>" alt="...">
<div class="caption">
<h5><?=$row['mName'];?></h5>
<p>
<?=$r_mat['call_on'];?>
</p>
<p class="text-primary">
<?=$r_mat['title'];?>
</p>
<p class="text-primary">ความยาว :
<?=$r_call['result_time'];?> นาที</p>
<p class="text-danger" id="dplay" data-i="<?=$i?>"></p>
<p><a href="Machineborrowform.php?action=<?=$in;?>&&id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>" class="btn btn-<?=$alert?>" role="button" <?=$disabled?> > <?=$text?> </a>
<!-- <a href="javascript:if(confirm('ยืนยันการคืนทรัพยากร \r\n<?=$row['mName'] ?>')==true){window.location='return.php?id=<?=$row['id'];?>&&inuse=<?=$row['inuse'];?>';}" class="btn btn-default" role="button" <?=$a?> <?=$b?> >คืน</a> --></p>
</div>
</div>
</div>
<?php
$i++;
}
?>
</div>
Date :
2015-09-29 09:25:25
By :
littlebeer
Date :
2015-09-29 12:23:33
By :
littlebeer
อยากเห็นโค๊ด HTML ทั้งหมดที่ถูกสร้างขึ้นเรียบร้อยที่อยู่บน Browser ครับ
ช่วย วิวซอร์ส มาลงให้ดูหน่อยครับ
Date :
2015-09-29 19:26:12
By :
NewbiePHP
ึคห. 24-25 แก้เป็นแบบ คห 26 ก็ดีนะครับ 5555 ยาวเกิน แต่ผมก๊อปมาแล้ว เดี๋ยวดูให้ครับ
Date :
2015-09-30 13:15:11
By :
NewbiePHP
Load balance : Server 04