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 > ลองทำ combo box เลือกวันที่ เดือน ปี โดยกรองปีอธิกสุรทิน กับเดือนที่ลงท้ายด้วย คม และ ยน แล้วครับ แต่ยังไม่สมบูรณ์เท่าไหร่ วานผู้รู้ช่วยแนะนำด้วยครับ



 

ลองทำ combo box เลือกวันที่ เดือน ปี โดยกรองปีอธิกสุรทิน กับเดือนที่ลงท้ายด้วย คม และ ยน แล้วครับ แต่ยังไม่สมบูรณ์เท่าไหร่ วานผู้รู้ช่วยแนะนำด้วยครับ

 



Topic : 085917



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



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



ช่วงนี้ผมวุ่นๆกับการทำอะไรเกี่ยวกับฟอร์มมากครับ แล้วก็เลยทำเกี่ยวกับวันที่ ที่เวลาเลือกเดือนกุมภาพันธ์

ที่จะมี 28 หรือ 29 วัน ตามปีอธิกสุรทินครับ ผมได้ลองเอาโค๊ตจังหวัดมานั่งดัดแปลงดู อาจจะมั่วๆหน่อยนะครับ

เพราะว่าไม่ค่อยเก่งการเขียนโปรแกรมสักเท่าไหร่ เหอๆ


ตอนนี้สิ่งที่ทำได้แล้วคือ

เดือนที่ลงท้ายด้วย คม จะมีวันให้เลือก 31 วัน

เดือนที่ลงท้ายด้วย ยน จะมีวันให้เลือก 30 วัน

เดือน กุมภาพันธ์ ตอนนี้มีวันให้เลือก 29 วันเท่านั้น แต่ยังแยกแยะปี ว่าปีไหนเป็นปีอธิกสุรทินไม่ได้ครับ

**ปีอธิกสุรทิน หรือ leap year จะมีวันในเดือนกุมภา 29 วันครับผม

ซึ่งนี่คือโค๊ตที่แสดงว่าปีไหนของเดือน กุมภาที่มีวันจำนวนเท่าไหร่ คร่าวๆครับ

Code (PHP)
<?
				$year = date("Y");			
				while ($yearGen = $year--)
				{
					if ($yearGen % 4 != 0)
						{ $leap = "28"; }
			   		elseif ($yearGen % 100 != 0) 
 				    	{ $leap = "29"; }// Leap year 
 					elseif ($yearGen % 400 != 0) 
						{ $leap = "28";}
 			  		else
						{ $leap = "29"; }// Leap year 
				echo $yearGen."=".$leap."<br />";
				
				if ($yearGen == 1980)
					{ break; }
				}

?>





ส่วนนี่คือโค๊ตที่ผมดัดแปลงครับ
ไฟล์ date.php

Code (JavaScript)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
//<![CDATA[

var year_id = <?php echo isset($_POST['year_id']) ? intval($_POST['year_id']) : '0'; ?>;
var month_id = <?php echo isset($_POST['month_id']) ? intval($_POST['month_id']) : '0'; ?>;
var day_id = <?php echo isset($_POST['day_id']) ? intval($_POST['day_id']) : '0'; ?>;

function loadSelectBoxDate(id,url,selected){
	$.get(
		url,{},function(data){
			$(id).html(data);
			if (selected!=0){
				$(id+' option[value='+selected+']').attr('selected','selected');
			}
		}
	);
}

$(function(){
	loadSelectBoxDate(
			'#year_id',
			'date_combo.php?load=year',
			year_id
	);
	loadSelectBoxDate(
			'#month_id',
			'date_combo.php?load=month&year_id='+year_id,
			month_id
	);
	loadSelectBoxDate(
			'#day_id',
			'date_combo.php?load=day&month_id='+month_id+'&year_id='+year_id,
			day_id
	);
	$('#year_id').change(function(e){
		var selected = e.target.value;
		loadSelectBoxDate(
			'#month_id',
			'date_combo.php?load=month&year_id='+selected,
			0
		);
		$('#day_id :not(option:first)').remove(); //add
	});
	$('#month_id').change(function(e){
		var selected = e.target.value;
		loadSelectBoxDate(
			'#day_id',
			'date_combo.php?load=day&month_id='+selected,
			0
		);
	});
});
//]]>
</script>



Code (PHP)
<form action="?" method="post">
	news <input type="text" name="title" value="<?php //textbox('title');?>" />
	<br />ปี <select id="year_id" name="year_id">
            <option value="0">-- เลือกปี --</option>
        </select>
	<br />เดือน <select id="month_id" name="month_id">
            <option value="0">-- เลือกเดือน --</option>
        </select>
	<br />วัน <select id="day_id" name="day_id">
            <option value="0">-- เลือกวัน --</option>
        </select>
	<br /> <input type="submit" value="submit" />
</form>





ส่วนนี่คือไฟล์
date_combo.php

Code (PHP)
<?php
	header('Content-type:text/html;charset=UTF-8');

	if (!isset($_GET['load'])){
		$_GET['load'] = 'year';
	}
	switch($_GET['load']){
		case 'year':
			$i = date("Y");
			echo '<option value="0">-- เลือกปี --</option>';
			while ($row = $i--){
				echo '<option value="',$row,'">',
					$row,
				'</option>';
				if ($i == date("Y")-111)
				{ break; }
			}
		break;
		case 'month': 
		//	$year_id = isset($_GET['year_id'])?intval($_GET['year_id']):0;
			echo '<option value="0">-- เลือกเดือน --</option>';
			$monthName = Array('มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม');
			$i = 1;
			while ($row = $i++){
				echo '<option value="',$row,'">',
					/*$monthName*/$row,
				'</option>';
				if ($i == 13)
				{ break; }
			}
		break;
		case 'day':
				$year = ($_GET['year_id']);
				$month = $_GET['month_id'];
				
				if ($month == "2")
				{
					if ($year % 4 != 0)
						{ $leap = "28"; }
			   		elseif ($year % 100 != 0) 
 				    	{ $leap = "29"; }// Leap year 
 					elseif ($year % 400 != 0) 
						{ $leap = "28";}
 			  		else
						{ $leap = "29"; }// Leap year 
				}
				else if
				($month == "2" || $month == "4" || $month == "6" || $month == "9"|| $month == "11")
				// 246911
					{$leap = "30";}
				else
					{$leap = "31";}
			//$month_id = isset($_GET['month_id'])?intval($_GET['month_id']):0;
			echo '<option value="0">-- เลือกวัน --</option>';
			$D = 1;
			while ($row = $D++){
				echo '<option value="',$row,'">',
					$row,
				'</option>';
				if ($D == $leap+1)
				{ break; }
			}
		break;
	}
	function report(){
		return die('<option>'.htmlspecialchars(mysql_error()).'</option>');
	}
?>





มีสองไฟล์ และไม่มีฐานข้อมูลใดๆครับ

แต่มันยังไม่สมบูรณ์ครับ รบกวนผู้รู้ช่วยปรับแต่งด้วยครับ ผมเบลอละ


ปล.จริงๆอยากได้แบบของเฟสบุ๊คนะครับ www.facebook.com ตอนที่ยังไม่ล๊อคอินครับ จะมีฟอร์มให้สมัครสมาชิก

ที่เจ๋งเลยคือ สามารถเลือกวันก่อนเลือกเดือนเลือกปีได้ครับ (ซึ่งผมก็ยังทำไม่ได้ - -")

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



Tag : PHP, Ajax, jQuery









ประวัติการแก้ไข
2012-10-26 12:48:18
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-10-26 12:34:25 By : pOnGliFE View : 2983 Reply : 7
 

 

No. 1



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



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


ทำไมไม่ใช้ datepicker ละครับ ตัวเดียวอยู่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-26 13:03:24 By : tongspy
 


 

No. 2



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



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

หลายกระทู้ก็แนะนำให้ไปใช้ datepicker เพราะมันง่ายดี ผมก็เห็นด้วยอยู่นะครับ


แต่ผมอยากให้ฟอร์มมันเลือกได้แบบนี้มากกว่า ดูตรงไปตรงมาดีครับ

อีกอย่าง กำลังศึกษางานด้านนี้เลยอยากจะหัดทำด้วยครับ ถ้าทำได้ เราก็จะทำมันได้ตลอดไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-26 18:45:44 By : pOnGliFE
 

 

No. 3



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



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

Up
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-27 00:05:30 By : pOnGliFE
 


 

No. 4



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

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

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

http://th1.php.net/manual/en/function.cal-days-in-month.php

$year = ($_GET['year_id']);
$month = $_GET['month_id'];
$leap = cal_days_in_month(CAL_GREGORIAN, $month, $year);

ถ้าใช้ ajax ช่วยก็ตามนี้ครับ

แต่อาจใช้โค้ดของที่นี่ไปดัดแปลงก็ได้ครับ
http://www.csgnetwork.com/directdropdowndateselector.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-27 03:51:06 By : num
 


 

No. 5



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



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

ตอบความคิดเห็นที่ : 4 เขียนโดย : num เมื่อวันที่ 2012-10-27 03:51:06
รายละเอียดของการตอบ ::
http://th1.php.net/manual/en/function.cal-days-in-month.php

$year = ($_GET['year_id']);
$month = $_GET['month_id'];
$leap = cal_days_in_month(CAL_GREGORIAN, $month, $year);

ถ้าใช้ ajax ช่วยก็ตามนี้ครับ

แต่อาจใช้โค้ดของที่นี่ไปดัดแปลงก็ได้ครับ
http://www.csgnetwork.com/directdropdowndateselector.html



ขอบคุณมากๆเลยครับผม

ดูเหมือน codeจาก csg network จะใช้แค่ javascript แต่ได้คุณสมบัติเหมือนกัน แทบไม่ต้องใช้ ajax เลยครับ สุดยอดมาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-27 10:13:07 By : pOnGliFE
 


 

No. 6



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



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


code จาก csg network => http://www.csgnetwork.com/directdropdowndateselector.html

มันแสดงรูปแบบเป็น เดือน/วัน/ปี อยากให้มันแสดงเป็น วัน/เดือน/ปี อ่ะค่ะ และตอนที่ request ค่าไปอีกหน้านึง อยากให้มันส่งค่าของแต่ละเดือน เช่น มกราคม == 1, กุมภาพันธ์ == 2 เพราะ หนูจะเอาไปบันทึกลงฐานข้อมูล แต่ที่ส่งมามันเป็น value ของ array อ่ะค่ะ รบกวน พี่ ๆ ผู้รู้ ช่วยหนูทีนะคะ หนูจะเอาไปทำโปรเจคจบน่ะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-14 08:29:35 By : pongyo
 


 

No. 7



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

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

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


แล้วทำไมนู๋ไม่ตั้งกระทู้ใหม่ละครับ ไปขุดกระทู้เก่าขึ้นมาทำไมอ่ะ.....ติดอะไร ก็ลองเอา Code ที่ติด DB รูปภาพ อะไรก็ได้ที่อยากจะอธิบายไปถาม ตั้งกระทู้ใหม่เลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-14 08:42:40 By : apisitp
 

   

ค้นหาข้อมูล


   
 

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