18. december 2001 - 16:26
#1
Det er fordi SQL-serveren er sat til engelsk dato-format, så du er skal validere din datoer før du indsætter dem i databasen, altså søge for at der står mm/dd/yy og ikke dd/mm/yy. Jeg bruger altid
select-boxe til dato angivelse og checker med en onSubmit i min form om datoen er valid.
Her er min client-side funktion som jeg bruger:
<script language=\"javascript\">
var MaanedArr = new Array();
MaanedArr = [31,28,31,30,31,30,31,31,30,31,30,31];
function checkStartDate(tObj){
var yObj = tObj.startYear;
var mObj = tObj.startMonth;
var dObj = tObj.startDay;
var year = parseInt(yObj.value);
if(isNaN(year))
{
return false;
}else
{
if(year<1900) year=1900;
yObj.value = year;
var month = mObj.value;
if(month==2)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
MaanedArr[1] = 29;
}
}
if(dObj.value>MaanedArr[month-1])
{
dObj.options[MaanedArr[month-1]-1].selected=true;
}
return true;
}
MaanedArr[1] = 28;
}
</script>
Og her er HTML\'en:
<table border=\"0\">
<form name=\"minForm\" method=\"post\">
<tr>
<td><b>StartDate:</b></td>
<td>
<select name=\"startDay\" class=\"iframeInput\" onChange=\"checkStartDate(this.form);\">
<%
var Y = 2000;
var Year = new Array();
for(i=0;i<=50; i++)
{
Year[i] = Y;
Y++;
}
var dateNumber = [\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'10\',\'11\',\'12\',\'13\',\'14\',\'15\',\'16\',\'17\',\'18\',\'19\',\'20\',\'21\',\'22\',\'23\',\'24\',\'25\',\'26\',\'27\',\'28\',\'29\',\'30\',\'31\'];
var MonthNumber = [\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'10\',\'11\',\'12\'];
var Month = [\'Jan\',\'Feb\',\'Mar\',\'Apr\',\'May\',\'Jun\',\'Jul\',\'Aug\',\'Sep\',\'Oct\',\'Nov\',\'Dec\'];
var toDay = new Date();
var startDay = \"\"+toDay.getDate();
var startMonth = toDay.getMonth();
var startYear = toDay.getYear();
//Response.write(startDay+\"-\"+startMonth+\"-\"+startYear);
//Response.write(\"\");
for(i=0; i<dateNumber.length; i++)
{
if(dateNumber[i] == startDay)
{
%>
<option value=\"<%=dateNumber[i] %>\" selected><%=dateNumber[i] %>
<%
}
else
{
%>
<option value=\"<%=dateNumber[i] %>\"><%=dateNumber[i] %>
<%
}
}
%>
</select>
<select name=\"startMonth\" class=\"iframeInput\" onChange=\"checkStartDate(this.form);\">
<%
for(i=0; i<MonthNumber.length; i++)
{
if(MonthNumber[i] == (startMonth + 1))
{
%>
<option value=\"<%=MonthNumber[i] %>\" selected><%=Month[i] %>
<%
}
else
{
%>
<option value=\"<%=MonthNumber[i] %>\"><%=Month[i] %>
<%
}
}
%>
</select>
<select name=\"startYear\" class=\"iframeInput\" onChange=\"checkStartDate(this.form);\">
<%
for(i=0;i<Year.length;i++)
{
if(parseInt(Year[i]) == parseInt(startYear))
{
%>
<option value=\"<%=Year[i] %>\" selected><%=Year[i] %>
<%
}
else
{
%>
<option value=\"<%=Year[i] %>\"><%=Year[i] %>
<%
}
}
%>
</select>
</td>
<td></td>
</tr>
</form>
</table>
Michael
19. december 2001 - 01:06
#2
igen grund til sådan lang kode.. :0)
Du laver 3 text felter, et til dag, måned og år...
Felterne kalder du dag,maned og ar..
og så kan du køre denne kode...
<%
dag = request.form(\"dag\")
maned = request.form(\"maned\")
ar = request.form(\"ar\")
dato = dateserial(year(ar),month(maned),day(dag))
\' Og så indsætter du det i din datebase...
%>
Dette kræver at dit felt i databasen er en datofelt.
Når du skal udskrive det, så vil det se sådan ud:
<%
\' her er der blevet åbnet til din db.
response.write day(rs(\"dato\")) & \".\" & month(rs(\"dato\")) & \".\" & year(rs(\"dato\"))
%>
Håber at du forstår
Thomas