|
|
|
ลองทำ combo box เลือกวันที่ เดือน ปี โดยกรองปีอธิกสุรทิน กับเดือนที่ลงท้ายด้วย คม และ ยน แล้วครับ แต่ยังไม่สมบูรณ์เท่าไหร่ วานผู้รู้ช่วยแนะนำด้วยครับ |
|
|
|
|
|
|
|
ช่วงนี้ผมวุ่นๆกับการทำอะไรเกี่ยวกับฟอร์มมากครับ แล้วก็เลยทำเกี่ยวกับวันที่ ที่เวลาเลือกเดือนกุมภาพันธ์
ที่จะมี 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
|
|
|
|
|
Date :
2012-10-26 12:34:25 |
By :
pOnGliFE |
View :
3033 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมไม่ใช้ datepicker ละครับ ตัวเดียวอยู่
|
|
|
|
|
Date :
2012-10-26 13:03:24 |
By :
tongspy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หลายกระทู้ก็แนะนำให้ไปใช้ datepicker เพราะมันง่ายดี ผมก็เห็นด้วยอยู่นะครับ
แต่ผมอยากให้ฟอร์มมันเลือกได้แบบนี้มากกว่า ดูตรงไปตรงมาดีครับ
อีกอย่าง กำลังศึกษางานด้านนี้เลยอยากจะหัดทำด้วยครับ ถ้าทำได้ เราก็จะทำมันได้ตลอดไปครับ
|
|
|
|
|
Date :
2012-10-26 18:45:44 |
By :
pOnGliFE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Up
|
|
|
|
|
Date :
2012-10-27 00:05:30 |
By :
pOnGliFE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code จาก csg network => http://www.csgnetwork.com/directdropdowndateselector.html
มันแสดงรูปแบบเป็น เดือน/วัน/ปี อยากให้มันแสดงเป็น วัน/เดือน/ปี อ่ะค่ะ และตอนที่ request ค่าไปอีกหน้านึง อยากให้มันส่งค่าของแต่ละเดือน เช่น มกราคม == 1, กุมภาพันธ์ == 2 เพราะ หนูจะเอาไปบันทึกลงฐานข้อมูล แต่ที่ส่งมามันเป็น value ของ array อ่ะค่ะ รบกวน พี่ ๆ ผู้รู้ ช่วยหนูทีนะคะ หนูจะเอาไปทำโปรเจคจบน่ะค่ะ
|
|
|
|
|
Date :
2013-02-14 08:29:35 |
By :
pongyo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วทำไมนู๋ไม่ตั้งกระทู้ใหม่ละครับ ไปขุดกระทู้เก่าขึ้นมาทำไมอ่ะ.....ติดอะไร ก็ลองเอา Code ที่ติด DB รูปภาพ อะไรก็ได้ที่อยากจะอธิบายไปถาม ตั้งกระทู้ใหม่เลยครับ
|
|
|
|
|
Date :
2013-02-14 08:42:40 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|