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

HOME > PHP > PHP Forum > โจทย์มีอยู่ว่า ต้องการวนลูปค่าของ สัปดาห์ในเดือนนั้น และเช็คว่า แต่ละสัปดาห์มีวันที่เท่าไหร่บ้างครับ



 

โจทย์มีอยู่ว่า ต้องการวนลูปค่าของ สัปดาห์ในเดือนนั้น และเช็คว่า แต่ละสัปดาห์มีวันที่เท่าไหร่บ้างครับ

 



Topic : 080542



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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




ปฏิทิน

จากรูปครับ เสต๊ปคือ คุณจะเลือกวันที่เท่าไหร่ก้ช่างครับ

1. ระบบก็จะหาวันเริ่มต้นของเดือนนั้น // ทำได้แล้ว
2. ระบบจะหาวันสุดท้ายของเดือนนั้น // ทำได้แล้วครับ
3. ต้องการหาว่า เดือนนั้น มีกี่สัปดาห์ (นับวันจันทร์เป็นวันเริ่มต้น) โดยในรูปคือ เดือนนี้ มี 6 สัปดาห์ครับ
สัปดาห์ที่ 1 มี 1 วัน
สัปดาห์ที่ 2-5 มี 7 วัน
สัปดาห์ที่ 6 มี 2 วัน

อันนี้แหละครับคือผมจะต้องวนลูปและเช็คค่าแบบไหนครับ



Tag : PHP, MySQL, JavaScript







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-07-03 16:58:18 By : ddsiam View : 3471 Reply : 13
 

 

No. 1



โพสกระทู้ ( 5,146 )
บทความ ( 26 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


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






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-03 17:02:01 By : deawx
 


 

No. 2



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


Code (PHP)
list($today, $tomonth, $toyear) = split('[/.-]', $RpDate);  // อันนี้ผมเอามาแยกวันที่  เดือน  ปี  ออก

$fromDate = $tomonth . "/" . "01" . "/".$toyear;  อันนี้คือค่าเริ่มต้นของเดือนครับ
$frd=$toyear."-".$tomonth."-"."01";

	 
$datewe= date("t",strtotime($frd));  // อันนี้หาค่าวันสุดท้ายของเดือนครับ 


$toDate = $tomonth . "/" . $datewe . "/".$toyear;

$dateMonthYearArr = array();
$fromDateTS = strtotime($fromDate);
$toDateTS = strtotime($toDate);
for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) { // ส่วนนี้วนลูปหาทุกวัน 

$currentDateStr = date("Y-m-d",$currentDateTS);
$sldate = date("d-M-Y",$currentDateTS);

		$gitem_id[$g] = $value['IdBank'];		//เก็บ id สำหรับกำหนดเงื่อนไขในการวนลูปแนวกว้าง
		$gitem[$g] = $sldate;
		$gitemac[$g] = $currentDateStr ;  	//เก็บตัวแปร item สำหรับแสดงผลหัว column
		$g ++;
	}


Out Put ที่ผมต้องการคือ
| สัปดาที่ 1 (วันที่ 1) | สัปดาที่ 2 (2-8) | สัปดาห์ที่ 3 (9-15) | ... | สัปดาห็ที่ 6(30-31)


แบบนี้อะครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-03 18:08:08 By : ddsiam
 

 

No. 3



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (7*60 * 60 * 24)) { // เอา 7 ตูณเข้าไป วันจะวนออกมาแบบนี้

01-Jul-2012
08-Jul-2012
15-Jul-2012
22-Jul-2012
29-Jul-2012
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-03 23:42:20 By : ddsiam
 


 

No. 4



โพสกระทู้ ( 5,146 )
บทความ ( 26 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


Code (PHP)
function rangweek ( $year, $month ) {
    $last_month_day_num = cal_days_in_month(CAL_GREGORIAN, $month, $year); 

    $first_month_day_timestamp = strtotime($year.'-'.$month.'-01');
    $last_month_daty_timestamp = strtotime($year.'-'.$month.'-'.$last_month_day_num );

    $first_month_week = date('W', $first_month_day_timestamp);
    $last_month_week = date('W', $last_month_daty_timestamp);

    $mweek = array();
    for( $week = $first_month_week; $week <= $last_month_week; $week ++ ) {
        #echo sprintf('%d-%02d-1', $year, $week ), "\n <br>";
        array_push( $mweek, array(  
            date("Y-m-d", strtotime( sprintf('%dW%02d-1', $year, $week ) ) ),
            date("Y-m-d", strtotime( sprintf('%dW%02d-7', $year, $week ) ) ),
        ) );
    }
    return $mweek;
}
$mweek = rangweek(2012, 07);
$cm = count($mweek);


for($i=0;$i<=$cm-1;$i++){
	echo $i.". ".$mweek[$i][0]." - ".$mweek[$i][1]."<hr>";
}


อันนี้คือโค้ดที่ผมทดสอบนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 09:01:46 By : deawx
 


 

No. 5



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


สุดยอด ครับผม ทีนี้ก็เหลืออยู่ว่า วันที่ไหนที่อยู่นอกเหนือเดือนนั้นๆ เราจะตัดออกยังไงครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 10:23:20 By : ddsiam
 


 

No. 6



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


0. 2012-05-28 - 2012-06-03
1. 2012-06-04 - 2012-06-10
2. 2012-06-11 - 2012-06-17
3. 2012-06-18 - 2012-06-24
4. 2012-06-25 - 2012-07-01

ทีนี้คือสิ่งที่ผมต้องการคือ

0. 2012-06-01 - 2012-06-03
1. 2012-06-04 - 2012-06-10
2. 2012-06-11 - 2012-06-17
3. 2012-06-18 - 2012-06-24
4. 2012-06-25 - 2012-06-30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 16:59:10 By : ddsiam
 


 

No. 7



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


อันนี้ที่ผมเอามาจัดเข้ากับตารางที่ผมต้องการ

Code (PHP)
<?
extract($_POST);
extract($_GET);
date_default_timezone_set("Asia/Bangkok");
$year='2012';
$month='06';
function rangweek ( $year, $month ) {
    $last_month_day_num = cal_days_in_month(CAL_GREGORIAN, $month, $year); 

    $first_month_day_timestamp = strtotime($year.'-'.$month.'-01');
    $last_month_daty_timestamp = strtotime($year.'-'.$month.'-'.$last_month_day_num );

    $first_month_week = date('W', $first_month_day_timestamp);
    $last_month_week = date('W', $last_month_daty_timestamp);

    $mweek = array();
    for( $week = $first_month_week; $week <= $last_month_week; $week ++ ) {
        #echo sprintf('%d-%02d-1', $year, $week ), "\n <br>";
        array_push( $mweek, array(  
            date("Y-m-d", strtotime( sprintf('%dW%02d-1', $year, $week ) ) ),
            date("Y-m-d", strtotime( sprintf('%dW%02d-7', $year, $week ) ) ),
        ) );
    }
    return $mweek;
}
$mweek = rangweek($year, $month);
$cm = count($mweek);




 

?>

<table width="100%" border="0" cellpadding="1" cellspacing="1"  bgcolor="#800040">
  <tr bgcolor="#FFFFFF">
    <?
	for($i=0;$i<=$cm-1;$i++){
?>
    <td align="center"><strong><?
      echo $i.". ".$mweek[$i][0]." - ".$mweek[$i][1];
	  ?>
    </strong></td>
    <?
	}
?>
  </tr>
   <tr bgcolor="#FFFFFF">
    <?
	$gitem_id=='5';
	
	for($g=0;$g<=$cm-1;$g++){  

?>
    <td align="center">Data</td>
    
<?
	}
?>
  </tr>
  <tr bgcolor="#C09230">
    <?

	for($g=0;$g<=$cm-1;$g++){
?>
    <td align="center"><b>SUM</b></td>
<?
	}
?>
  </tr>
</table>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 18:47:08 By : ddsiam
 


 

No. 8



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


หุหุ ในที่สุด เชื่อแล้วหละว่าความพยายามอยุ่ที่ไหน ความสำเร็จ อยุ่ที่นั่นจริงๆๆๆ แต่ โคตอาจจะยาวไปหน่อย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 19:49:43 By : ddsiam
 


 

No. 9



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


Code (PHP)
<?

extract($_POST);
extract($_GET);
date_default_timezone_set("Asia/Bangkok");
$year='2012';
$month='05';
function rangweek ( $year, $month ) {
    $last_month_day_num = cal_days_in_month(CAL_GREGORIAN, $month, $year); 

    $first_month_day_timestamp = strtotime($year.'-'.$month.'-01');
    $last_month_daty_timestamp = strtotime($year.'-'.$month.'-'.$last_month_day_num );

    $first_month_week = date('W', $first_month_day_timestamp);
    $last_month_week = date('W', $last_month_daty_timestamp);

    $mweek = array();
    for( $week = $first_month_week; $week <= $last_month_week; $week ++ ) {
        #echo sprintf('%d-%02d-1', $year, $week ), "\n <br>";
        array_push( $mweek, array(  
            date("Y-m-d", strtotime( sprintf('%dW%02d-1', $year, $week ) ) ),
            date("Y-m-d", strtotime( sprintf('%dW%02d-7', $year, $week ) ) ),
        ) );
    }
    return $mweek;
}
$mweek = rangweek($year, $month);
$cm = count($mweek);




 

?>
<style type="text/css">
<!--
.style1 {
	font-family: Tahoma;
	font-size: 12px;
	font-weight:normal;
}
-->
</style>


<table width="100%" border="0" cellpadding="1" cellspacing="1"  bgcolor="#800040">
  <tr bgcolor="#FFFFFF">
    <?
	for($i=0;$i<=$cm-1;$i++){
	$w=$i+1;
	//echo $cm-1;
	
?>
    <td align="center"><strong><?
      echo "Week ".$w.".<br/> ";
	  
	   if($i=='0'){
	  
		$DateStart='01';
	   } else {
	    list($toyear, $tomonth, $DateStart) = split('[/.-]', $mweek[$i][0]);
	   }
	   if($i==$cm-1){
	   $DateEnd='31';
	   } else {
	      list($toyear1, $tomonth1, $DateEnd) = split('[/.-]', $mweek[$i][1]);
	   }
	   $DateShow=$DateStart."-".$DateEnd."/".$month."/".$year;
	   echo "<span class='style1'>".$DateShow."</span>";
	//  $mweek[$i][0]." - ".$mweek[$i][1];
	  ?>
    </strong></td>
    <?
	}
?>
  </tr>
   <tr bgcolor="#FFFFFF">
    <?

	
	for($g=0;$g<=$cm-1;$g++){  

?>
    <td align="center">Data</td>
    
<?
	}
?>
  </tr>
  <tr bgcolor="#C09230">
    <?

	for($g=0;$g<=$cm-1;$g++){
?>
    <td align="center">SUM</td>
<?
	}
?>
  </tr>
</table>


เอามาแบ่งปันครับ เผื่อมีใครจะได้ใช้เหมือนผม ขอบคุณ คุณ deawx ที่ให้แนวทางครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 21:10:20 By : ddsiam
 


 

No. 10



โพสกระทู้ ( 5,146 )
บทความ ( 26 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


บ่เป็นหยังครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 22:08:04 By : deawx
 


 

No. 11



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ครับผม กะส่อยๆกันไปเนาะ คือคำโบราณเผิ่นว่า หนักส่อยกันหาบ หยาบส่อยกันดึง ว่าซั่นว่า....
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-04 23:21:00 By : ddsiam
 


 

No. 12



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



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


code มีปัญหาใช้ไม่ได้นะครับ ถ้าเป็นเดือน 12 จะวนลูปออกมาไม่ได้ครับ ลองทดสอบดูนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-04-12 12:33:21 By : rockhd
 


 

No. 13



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



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


เดือน 1 กับ 12 หาไม่ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-04-12 13:28:56 By : rockhd
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : โจทย์มีอยู่ว่า ต้องการวนลูปค่าของ สัปดาห์ในเดือนนั้น และเช็คว่า แต่ละสัปดาห์มีวันที่เท่าไหร่บ้างครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 03
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 อัตราราคา คลิกที่นี่