Я новичок в ASP (новое задание использует сервер Windows, а раньше я использовал только Linux), и я строю «журнал», в котором эти данные хранятся в файлах XML. У меня это отлично читает XML, но сейчас я пытаюсь заставить его распечатывать данные за определенный диапазон дат.
Способ, которым я делаю это, заключается в использовании функции DateDiff для сравнения даты в записи XML с датой, определенной пользователем, после чего будет выведено число. Если это число больше 1 для даты начала и меньше единицы для даты окончания, оно будет отображаться. Часть начальной даты работает, но независимо от того, какую дату я поставил в конечной, она будет печатать все, начиная от начальной даты и выше.
Вот мой код
<%
Response.Buffer = True
session.lcid=2057
Set entries = Server.CreateObject("Microsoft.XMLDOM")
Set entry = Server.CreateObject("Microsoft.XMLDOM")
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.load (Server.MapPath("log.xml"))
set entries = xml.getElementsbyTagName("entry")
noOfEntries = entries.length
If Request.Form("findLog") = "true" Then
CheckLog
End If
%>
<html>
<head>
<title>GM Log</title>
</head>
<body>
<p>Please enter the dates that you want to view the log from</p>
<form name=form1 action=readlog.asp method=post>
<p>Start date: <input type=text name=startdate>End date: <input type=text name=enddate>
<input type=hidden name=findLog value=true> <input type=submit value="Search"></p>
</form>
<%
Sub CheckLog
startDate = Request.Form("startdate")
LastDate = Request.Form("enddate")
Response.Write("<table border=5>")
For i = 0 To (noOfEntries - 1)
Set entry = entries.item(i)
If isDate(entry.childNodes(0).text) Then
meh = CDate(entry.childNodes(0).text)
beginning = DateDiff("d", startDate, meh)
Response.Write ("<p style=""color: red"">days from startdate: " & beginning & "</p>")
ended = DateDiff("d", LastDate, meh)
Response.Write ("<p>days from today: " & ended & "</p>")
If beginning + 1 > 0 or beginning + 1 = 0 & ended < 0 or ended = 0 Then
Response.Write("<tr>"&_
"<td>" & entry.childNodes(0).text & "</td>"&_
"<td>" & entry.childNodes(1).text & "</td>"&_
"<td>" & entry.childNodes(2).text & "</td>"&_
"<td>" & entry.childNodes(3).text & "</td>"&_
"<td>" & entry.childNodes(4).text & "</td>"&_
"</tr>")
End If
End If
Next
Response.Write("<table>")
End Sub
%>
</body>
</html>
Вот мой макет файла XML.
<?xml version="1.0"?>
<GM>
<entry>
<date>15/07/2010</date>
<time>1515</time>
<conversation>Dave down the Pub</conversation>
<information>This is another test.</information>
<action>Colin Wren</action>
</entry>
<entry>
<date>20/07/2010</date>
<time>1700</time>
<conversation>Sam</conversation>
<information>this is a test</information>
<action>Colin</action>
</entry>
</GM>
Я уверен, что это просто я глупый и жарит свой мозг, слишком долго глядя на него, но любая помощь будет очень признательна.