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

HOME > PHP > PHP Forum > ปฏิทินรายสัปดาห์ ภาค2 เหอๆ...สวัสดีครับ หลังจากที่ผมเคยถามเรื่องปฏิทินรายสัปดาห์ไปก่อนหน้านี้



 

ปฏิทินรายสัปดาห์ ภาค2 เหอๆ...สวัสดีครับ หลังจากที่ผมเคยถามเรื่องปฏิทินรายสัปดาห์ไปก่อนหน้านี้

 



Topic : 033699



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



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



สวัสดีครับ หลังจากที่ผมเคยถามเรื่องปฏิทินรายสัปดาห์ไปก่อนหน้านี้ ซึ่งผม อธิบายผิดไป

พอดีผมได้นำโค้ด Class Carlendar มาจากเว็บท่าน ดุนยา ถ้าผิดก็ขออภัยนะครับ

http://www.danya-reload.com/home/article/viewArticle.php?id=42

ทีนี้ผมได้นำโค้ด ปฏิทินรายสัปดาห์ มาปรับปรุงใหม่เพื่อให้ตรงตามความต้องการของผม
แต่ปรากฏว่า มันมีปัญหาก็คือ

1. ทุกครั้งที่จะทำการเลื่อนไปสัปดาห์ถัดไป ถ้ามันอยู่ รอยต่อระหว่างเดือน เช่น 29 30 31 1 2 3 4 มันจะต้องทำการคลิก 2 ครั้งถึงจะไป
2. สัปดาห์มันเลื่อนไปได้อย่งเดียว แต่พอ ถอยกลับ มันย้อนไปตั้งแค่ถึงเดือน 11 ตลอดเลยครับ เหอๆ

ผมทำจนผมงงแล้วครับ อยากทราบว่า ในโค้ดตัวอย่าง ผมได้ทำอะไรผิดหรือเปล่าครับ ขอบพระคุณครับ

ตัวอย่างรูปครับ
กด

function getWeek($d = '', $m = '', $y = '')	{
	$day 	= 	date('j'); // แสดงเลขวันที่โดยไม่มีเลข 0 นำหน้า
	$month 	=	date('n'); // แสดงเลขเดือนโดยไม่มีเลข 0 นำหน้า
	$year 	= 	date('Y'); // แสดง ค.ศ. ปี 4 หลัก
		
	if ( is_numeric($d) && $d > 0 ) $day 	= $d * 1;
	if ( is_numeric($m) && $m > 0 ) $month 	= $m * 1;
	if ( is_numeric($y) && $y > 0 ) $year 	= $y * 1;
	
	$firstWeek=date('w', mktime( 0, 0, 0, $month, 1, $year));
		
	return ceil( ( $day + $firstWeek )  / 7 );
}



function calendarWeek($w='',$m='',$y='',$strsql=''){
	$defaultWeek = getWeek( date('j'), date('n'), date('Y'));
	$defaultMonth = date('n');
	$defaultYear = date('Y');
	$list = '';
	$saveday=array();
	if ( is_numeric($w) && $w > 0 && $w < 7 ) $defaultWeek = $w * 1;
	if ( is_numeric($m) && $m > 0 && $m < 13) $defaultMonth = $m * 1;
	if ( is_numeric($y) && $y > 0 ) $defaultYear = $y * 1;
		
	$totalDayInMonth = date('t', mktime( 0, 0, 0, $defaultMonth, 1, $defaultYear) );  // ค้นหาวันทั้งหมดของเดือน ตั้งแต่ 28 ถึง 31
	$firstDayOfWeek = date('w', mktime( 0, 0, 0, $defaultMonth, 1, $defaultYear) );
	$lastDayOfWeek = date('w', mktime( 0, 0, 0, $defaultMonth, date('t', mktime( 0, 0, 0, $defaultMonth, 1, $defaultYear) ), $defaultYear) );

	$backWeek	=	$defaultWeek - 1;
	$backMonth	=	$defaultMonth;
	$backYear	=	$defaultYear;	

	$nextWeek	=	$defaultWeek + 1;
	$nextMonth	=	$defaultMonth;
	$nextYear	=	$defaultYear;	
		
	if ( $defaultWeek == 1 && $firstDayOfWeek != 0 ){
		$backMonth	=	$defaultMonth -1;
		$backYear	=	$defaultYear;	
			
		if ( $backMonth < 1 ){
			$backMonth	=	12;
			$backYear	=	$defaultYear -1;
		}
			
		$backWeek = getWeek( date('t', mktime( 0, 0, 0, $backMonth, 1, $backYear) ) , $backMonth, $backYear);
			
		$totalDay = 7 - $firstDayOfWeek;

		$totalDayInBackMonth = date('t', mktime( 0, 0, 0, $backMonth, 1, $backYear) );

		$startDayInBackMonth = ( $totalDayInBackMonth - $firstDayOfWeek ) + 1;
			
		$list .= "<tr>\n";
			
		for ( $i = $startDayInBackMonth; $i <= $totalDayInBackMonth; $i++ ){
			$y = ( $showBackDay ) ? $i : 0;
//			$list .= $this->_blankFormat($y);
			$saveday[]=$i;
		}
		for ( $i = 1; $i <= $totalDay; $i++ ){
//			$list .= $this->_dayFormat($i);
			$saveday[]=$i;
		}
		$list .= "</tr>\n";
	}else{
		$m = 1;
		$startDay = ( ( 7 * ( $defaultWeek - 1 ) ) - $firstDayOfWeek ) + 1;
		
		$i = $startDay;

		$list .= "<tr>\n";

		while ( $i < ( 7 + $startDay ) ){
			if ( $i <= $totalDayInMonth ){
	//			$list .= $this->_dayFormat($i);
				$saveday[]=$i;
				$m++;
			}
			$i++;
		}

		if ( $m < 8 ){
			$nextWeek	=	1;
			$nextMonth	=	$defaultMonth +1;
			$nextYear	=	$defaultYear;	

			if ( $nextMonth > 12 ){
				$nextMonth	=	1;
				$nextYear	=	$defaultYear +1;
			}

			$total = 8 - $m;
				
			for ( $x = 1; $x <= $total; $x++ ){
				$z = ( $showNextDay ) ? $x : 0;
	//			$list .= $this->_blankFormat($z);
				$saveday[]=$x;
			}
			$list .= "</tr>\n";
		}
			
		if ( $m == 8 ){
			$list .= "</tr>\n";
		}
	}

	echo'<table border="1" style="font-size:12px;border:1px solid;">';
	echo'<tr>';
	echo'<td>date</td>';
	for($i=0;$i<count($saveday);$i++){
		echo"<tr>";
		echo "<td>".$saveday[$i]."</td>";
		echo"</tr>";
	}
	echo"</table>";
	echo"<a href='?w=$backWeek&m=$backMonth&y=$backYear'> &lt;&lt; </a>";
	echo"<a href='?w=$nextWeek&m=$nextMonth&y=$nextYear'> &gt;&gt; </a>";

}
$ss = calendarWeek($_GET['w'], $_GET['m'], $_GET['y'],$sql);
echo $ss;





Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-10-30 14:28:41 By : kalamell View : 3708 Reply : 4
 

 

No. 1



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



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


ขอบคุณครับ คงมีโอกาสไช้บริการเร็วๆนี้






Date : 2009-10-30 14:36:15 By : tingtongkub
 


 

No. 2



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



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


เอามาดัดแปลง เราต้องเข้าใจครับ

ผมอ่านโค้ดของคนอื่นที่มาดัดแปลงของผม ผมก็มึน 55555555+
Date : 2009-10-30 15:08:32 By : danya
 

 

No. 3



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



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

ในที่สุดก็ได้แล้วครับ เหอๆ หลังจากที่ใช้ความสามารถทาง ภาษาอังกฤษ แบบ งู ๆ ปลา ลองอ่านจาก Google ผมก็เลยเขียนมันใหม่หมดเลย โดยอาศัยเช็ค สัปดาห์เอา จากปี ผมนั่งไล่โค้ดจนตาลายเลยเปลี่ยนวิธีครับ ถามเอง ตอบเอง ชงเอง
แล้วก็ขอขอบพระคุณทุก ๆ ท่านนะครับ ที่มาตอบคำถาม

ลองเอาไปประยุกต์ดูครับ เผื่อมันจะพอมีประโยชน์นะครับ

ผลลัพท์ที่ได้ครับ

ddd

<?php
echo'<meta http-equiv="content-type" content="text/html;charset=utf-8"/>';
$server="localhost";
$root="root";
$pw="1234";
$db="db";

$cndb=@mysql_connect($server,$root,$pw);
if(!$cndb){
	echo'<p style="text-align:center;font-size:14px;font-weight:bold;color:red;">กรุณาตรวจสอบ file cfg.inc | error massage : '.mysql_error().'</p>';
	exit();
}else{
	$rsdb=@mysql_select_db($db);
	if(!$rsdb){
		echo'<p style="text-align:center;font-size:14px;font-weight:bold;color:red;">กรุณาตรวจสอบ มีแนวโน้มว่า ไม่พบ ฐานข้อมูลที่คุณต้องการ error massage : '.mysql_error().'</p>';
		exit();
	}
}
function rsQuery($strsql=""){
	if($strsql==""){
		echo'<p style="color:red">ERROR</p>';
		exit();
	}else{
		mysql_query("SET NAMES utf8");
		$rs=mysql_query($strsql);
		if($rs){
			return $rs;
		}else{
			echo'<p style="color:red">'.mysql_error().'</p>';
			exit();
		}
	}
}	
function findWeekDates($weekNumber=null, $year=null ) {
// ให้ จำนวนสัปดาห์ของปีนั้นออกมาเป็นจำนวน array (0 ถึง 52)
// ถ้าไม่ใช่สัปดาห์ มันจะส่งค่าสัปดาห์ ของวันที่นั้น ๆ 
    $weekNumber = ($weekNumber=='') ? date('W'): $weekNumber ;
    $year = ($year=='') ? date('Y'): $year ;

    $weekNumber=sprintf("%02d", $weekNumber);
    for ($i=1;$i<=7;$i++) {
        $arrdays[] = strtotime($year.'W'.$weekNumber.$i);
    }
    return $arrdays;
}

$week= (isset($_GET['week']) && $_GET['week'] !=='')? $_GET['week'] : date('W') ;
$year =  (isset($_GET['year']) && $_GET['year'] !=='')? $_GET['year'] : date('Y') ;

if($week>52) {
    $week = 1;
    $year++;
}elseif($week<1) {
        $week=52;
        $year--;
}

$backyear=$year;
$nextyear=$year;


$week_days = findWeekDates($_GET['week'],$_GET['year']);

// $starting_date = date('Y-m-d', $week_days[0]); วันเริ่มต้นของสัปดาห์ ยึดเอาวันจันทร์
// $ending_date = date('Y-m-d', $week_days[6]); วันสิ้นสุดของสัปดาห์ ยึดเอาวันอาทิตย์
// สามารถนำเอาค่า $week_days[] ไปเช็คหาวันจันทร์ - อาทิตย์ ทำเป็น label ส่วนหัวได้อีก ลองหาวิธีดูนะครับ เหอๆ
echo"<br>";

$nextweek = $week+1; // หาสัปดาห์ถัดไป
$backweek=$week-1; // หาสัปดาห์ก่อนหน้า

if($backweek==0){
	$backweek=52;
	$backyear=$year-1;
}
if($nextweek==0){
	$nextyear=$year+1;
}


echo"<a href=\"?week=".$backweek."&year=".$backyear."\">ย้อนกลับ</a>&nbsp;<a href=\"?week=".$nextweek."&year=".$nextyear."\">ถัดไป</a><br>";
echo'<table width="100%" border="1">';
echo'<tr>';
echo'<td>วันที่</td>';
// ผมสั่งให้เรียก query เวลาที่ได้ทำการบันทึกใน database
$sql="Select * From tbl_timefix order by timeid";
$rs=rsQuery($sql);
while($row=mysql_fetch_array($rs)){
	echo'<td>'.$row['timename'].'</td>';
	$arr[]=$i;
	$i++;
}
echo'</tr>';
for($i=0;$i<count($week_days);$i++){
	echo'<tr>';
	echo '<td>'.date('Y-m-d',$week_days[$i]).'</td>';
	for($j=0;$j<count($arr);$j++){
		echo'<td>&nbsp;</td>';
	}
	echo'<tr>';
}
echo'</table>';
?>


ความพยายามอยู่ที่ไหน ความสำเร็จอยู่ที่นั่น ขอให้กำลังใจทุกคนครับ
Date : 2009-10-30 17:10:08 By : kalamell
 


 

No. 4



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



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

ตอนนี้กำลังทำอยู่เลยค่ะ
Date : 2012-11-18 20:22:25 By : MySeason22
 

   

ค้นหาข้อมูล


   
 

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