Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/03/2010, 07:18
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Calendario: que empiece por lunes en vez de domingo.

Hola

Hace poco acabe de montar este

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <% Option Explicit %>
  3. <%
  4. Dim oConn, SQL, rs, registros, j
  5. Dim Fecha
  6. Fecha = 0
  7. 'conexion
  8. ' ==== campos ===
  9. 'Fecha = 23/04/2010, 24/05/2010, .....
  10. 'AnyoMes = 20104, 20105, ....
  11. ' ============
  12.  
  13. SQL ="SELECT Fecha, AnyoMes FROM Calendario WHERE AnyoMes >= "&CInt(Year(Date)) & CInt(Month(Date))&""
  14. set rs = oConn.Execute(SQL)
  15. registros = rs.getrows()
  16. rs.Close
  17. Set rs = Nothing
  18. oConn.Close
  19. Set oConn = Nothing
  20.  
  21. Dim arreglo()
  22. Redim arreglo(UBound(registros,2))
  23. For j = 0 to UBound(registros,2)
  24. arreglo(j) = registros(Fecha,j)
  25. Next 'j
  26. %>
  27. <html>
  28. <head>
  29. <title>Horarios</title>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  31. <style type="text/css">
  32. .calFondoCalendario {background-color:#EEEEEE;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
  33. #calFondoMes {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px;font-weight:bold;text-align:center;}
  34. .calFondoDias, .calFondoSemanas, .calFondoNumeroSemanas {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900; }
  35. #calDias, #calFinSemana {font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;}
  36. #calDias a:link, #calDias a:visited {color:#333333;text-decoration:none;}
  37. #calDias a:hover, #calDias a:active {color:#333333;text-decoration:none;}
  38. #calDiasMarcado, #calFinSemanaMarcado {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;}
  39. #calDiasMarcado a:link, #calDiasMarcado a:visited {color:#FFFFFF;text-decoration:none;}
  40. #calDiasMarcado a:hover, #calDiasMarcado a:active {color:#FFFFFF;text-decoration:none;}
  41. #calFinSemanaMarcado a:link, #calFinSemanaMarcado a:visited {color:#FF0000;text-decoration:none;}
  42. #calFinSemanaMarcado a:hover, #calFinSemanaMarcado a:active {color:#FF0000;text-decoration:none;}
  43. #calFinSemana a:link, #calFinSemana a:visited {color:#FF0000;text-decoration:none;}
  44. #calFinSemana a:hover, #calFinSemana a:active {color:#FF0000;text-decoration:none;}
  45. .calDiaVacio {background-color:#FFFFFF;color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;text-align:center;}
  46. #paginador {background-color:#EEEEEE;height:30px;padding-top:7px;}
  47. #paginador a:link, #paginador a:visited{background-color:#A4A4A4;color:#FFFFFF;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
  48. #paginador a:hover, #paginador a:active{background-color:#EEEEEE;color:#333333;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3pxborder: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
  49. </style>
  50. </head>
  51. <body bgcolor="#FFFFFF">
  52. <%
  53. Const URL = "OtraPagina.asp"
  54. Dim Mes, ElMes
  55. Dim Anyo, ElAnyo
  56. Dim FechaInicio, FechaActual, FechaFinal
  57. Dim DiaActual
  58. Dim i, SumarMesQuery, MesAnyo
  59. Dim PrimerDiaMes
  60. Dim Semana, nSemanas01, nSemanas31
  61. Dim DiasMesSiguiente, DiasMesAnterior
  62. Dim Columna, Fila
  63. Dim UltimoDiaMesAnterior
  64. Dim EstamosEnEl, cad
  65. Dim unmesmenos, unmesmas, menos, mas, mesmenos, mesmas, anyomas, anyomenos
  66.  
  67. ' Si viene vacía o no es numerica
  68. If Request.Querystring("mes") = "" or Not IsNumeric(Request.Querystring("mes")) then
  69. Mes = CInt(Month(Date))
  70. Else
  71. Mes = CInt(Request.Querystring("mes"))
  72. End If
  73. If Request.Querystring("anyo") = "" or Not IsNumeric(Request.Querystring("anyo")) then
  74. Anyo = CInt(Year(Date))
  75. Else
  76. Anyo = CInt(Request.Querystring("anyo"))
  77. End If
  78. FechaInicio = CDate("1/" & Month(Date) & "/" & Year(Date))
  79. FechaActual = CDate("1/" & Mes & "/" & Anyo)
  80. FechaFinal = DateAdd("m", 6, FechaInicio)
  81. %>
  82. <div style="background-color:#EEEEEE;padding-top:20px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;">
  83. <!-- Empezamos a montar el Calendario -->
  84. <div id="ContenedorCalendario">
  85. <table border="0" cellspacing="0px" cellpadding="0px" width="85%" align="center">
  86. <tr>
  87. <%
  88. IF FechaActual > FechaFinal then ' Aún no ha progresado un año (empezó 01/03/2010 termina 01/09/2010)
  89. %>
  90. <td id="calFondoMes">No puede hacer una reserva con mas de 6 meses de antelación</td></tr></table>
  91. <div id="paginador" align="center">
  92. <a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=Month(FechaFinal)%>&anyo=<%=Year(FechaFinal)%>">Atr&aacute;s</a>
  93. </div>
  94. <%
  95. ELSEIF FechaActual < FechaInicio then ' Se ha manipulado las var con una fecha menor a la de inicio (empezó 01/03/2010 quiere imprimir 01/02/2010)
  96. %>
  97. <td id="calFondoMes">No puede hacer una reserva con una fecha ya pasada</td></tr></table>
  98. <div id="paginador" align="center">
  99. <a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=Month(Date)%>&anyo=<%=Year(Date)%>">Atr&aacute;s</a>
  100. </div>
  101. <%
  102. ELSE
  103. For i = 0 to 2
  104. SumarMesQuery = DateAdd("m", i, DateSerial(Anyo, Mes, 1))
  105. MesAnyo = Split(SumarMesQuery,"/")
  106. ElMes = MesAnyo(1)
  107. ElAnyo = MesAnyo(2)
  108. %>
  109. <td>
  110. <table border="0" cellspacing="1px" cellpadding="3px" width="200px" align="center" class="calFondoCalendario">
  111. <tr align="center">
  112. <td colspan="8">
  113. <div id="calFondoMes">
  114. <%=Nombre_Mes(ElMes)%>,&nbsp;<%=ElAnyo%>
  115. </div>
  116. <%
  117. Call Dias()
  118. DiaActual = 1
  119. PrimerDiaMes = DatePart("w", DateAdd("d", -1, DateSerial(ElAnyo, ElMes, 1)), vbMonday)
  120. Semana = DatePart("ww", CDate("01/" & ElMes & "/" & ElAnyo), vbMonday, vbFirstFourDays) ' Número de la semana del mes actual
  121. nSemanas31 = DatePart("ww", CDate("12/31/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semanas del año
  122. nSemanas01 = DatePart("ww", CDate("01/01/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semana de la primera semana del año siguiente
  123. DiasMesSiguiente = 0
  124. For Fila = 0 to 5
  125. %>
  126. <tr height="20px">
  127. <%
  128. ' ============== Número de la Semana ==============
  129. IF Fila = 0 then
  130. If Semana = nSemanas01 then  'La última semana del año anterior comprende algún día del siguiente año
  131. %>
  132. <td class="calFondoNumeroSemanas"><%=Semana%></td>
  133. <%
  134. Else
  135. %>
  136. <td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
  137. <%
  138. End If
  139. ELSE
  140. If Semana >= nSemanas31 then 'Primera semana del año
  141. Semana = 1
  142. Else
  143. Semana = Semana +1
  144. End If
  145. %>
  146. <td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
  147. <%
  148. END IF
  149. ' ============== Fin  Número de la Semana ==============
  150. For Columna = 0 to 6
  151. IF Fila = 0 and Columna < PrimerDiaMes then ' No hay día
  152. UltimoDiaMesAnterior = UltimoDia((ElMes-1),ElAnyo)
  153. DiasMesAnterior = ((UltimoDiaMesAnterior - (PrimerDiaMes-1)) + Columna)
  154. %>
  155. <td class="calDiaVacio"><%=DiasMesAnterior%></td>
  156. <%
  157. ELSEIF DiaActual > UltimoDia(ElMes, ElAnyo) then ' No hay día
  158. DiasMesSiguiente = DiasMesSiguiente +1
  159. %>
  160. <td class="calDiaVacio"><%=DiasMesSiguiente%></td>
  161. <%
  162. ELSE
  163. EstamosEnEl = CDate(DiaActual & "/" & ElMes & "/" & ElAnyo)
  164. cad = EstamosEnEl & " = " & Join(arreglo, " or " & EstamosEnEl & " = ")
  165. %>
  166. <td bgcolor="#FFFFFF" align="center">
  167. <%
  168. If Columna = 5 or Columna = 6 then ' es fin de semana
  169. if eval(cad) Then ' lo marcamos con reservado
  170. %>
  171. <div id="calFinSemanaMarcado">
  172. <a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
  173. </div>
  174. <%
  175. else
  176. %>
  177. <div id="calFinSemana">
  178. <a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
  179. </div>
  180. <%
  181. end if
  182. Else
  183. if eval(cad) Then ' lo marcamos como reservado
  184. %>
  185. <div id="calDiasMarcado">
  186. <a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
  187. </div>
  188. <%
  189. else
  190. %>
  191. <div id="calDias">
  192. <a href="<%=URL%>?day=<%=DiaActual%>&month=<%=ElMes%>&year=<%=ElAnyo%>"><%=DiaActual%></a>
  193. </div>
  194. <%
  195. end if
  196. End If
  197. %>
  198. </td>
  199. <%
  200. DiaActual = DiaActual +1
  201. END IF
  202. Next ' Columna
  203. %>
  204. </tr>
  205. <%
  206. Next ' Fila
  207. %>
  208. </table></td>
  209. <%
  210. Next 'i
  211. %>
  212. </tr>
  213. </table>
  214. </div>
  215. <!-- Fin Calendario -->
  216. <!-- Paginador  -->
  217. <div id="paginador" align="center">
  218. <%
  219. unmesmenos = DateAdd("m", -3, DateSerial(ElAnyo, ElMes, 1))
  220. unmesmas = DateAdd("m", -1, DateSerial(ElAnyo, ElMes, 1))
  221. menos = split(unmesmenos, "/")
  222. mas = split(unmesmas, "/")
  223. mesmenos = menos(1)
  224. anyomenos = menos(2)
  225. mesmas = mas(1)
  226. anyomas = mas(2)
  227. %>
  228. <a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=mesmenos%>&anyo=<%=anyomenos%>">Anterior</a>
  229. <a href="<%=Request.Servervariables("SCRIPT_NAME")%>?mes=<%=mesmas%>&anyo=<%=anyomas%>">Siguiente</a>
  230. </div>
  231. <%
  232. END IF
  233. %>
  234. </div>
  235. <!-- Fin Paginador  -->
  236. </body>
  237. </html>
  238. <%
  239. Sub Dias()
  240. %>
  241. </td>
  242. </tr>
  243. <tr align="center">
  244. <td rows="6"><div class="calFondoSemanas">Sem</div></td>
  245. <td><div class="calFondoDias">Lun</div></td>
  246. <td><div class="calFondoDias">Mar</div></td>
  247. <td><div class="calFondoDias">Mi&eacute;</div></td>
  248. <td><div class="calFondoDias">Jue</div></td>
  249. <td><div class="calFondoDias">Vie</div></td>
  250. <td><div class="calFondoDias">S&aacute;b</div></td>
  251. <td><div class="calFondoDias">Dom</div></td>
  252. </tr>
  253. <%
  254. ' Sub y Funciones
  255. End Sub
  256.  
  257. Function Nombre_Mes(ElMes)
  258. Select Case ElMes
  259. Case 1
  260. Nombre_Mes = "Enero"
  261. Case 2
  262. Nombre_Mes = "Febrero"
  263. Case 3
  264. Nombre_Mes = "Marzo"
  265. Case 4
  266. Nombre_Mes = "Abril"
  267. Case 5
  268. Nombre_Mes = "Mayo"
  269. Case 6
  270. Nombre_Mes = "Junio"
  271. Case 7
  272. Nombre_Mes = "Julio"
  273. Case 8
  274. Nombre_Mes = "Agosto"
  275. Case 9
  276. Nombre_Mes = "Septiembre"
  277. Case 10
  278. Nombre_Mes = "Octubre"
  279. Case 11
  280. Nombre_Mes = "Noviembre"
  281. Case 12
  282. Nombre_Mes = "Diciembre"
  283. Case Else
  284. Nombre_Mes = "ERROR!"
  285. End Select
  286. End Function
  287.  
  288. Function UltimoDia(ElMes, ElAnyo)
  289. Select Case ElMes
  290. Case 1, 3, 5, 7, 8, 10, 12
  291. UltimoDia = 31
  292.  
  293. Case 4, 6, 9, 11
  294. UltimoDia = 30
  295.  
  296. Case 2
  297. If IsDate(ElAnyo & "-" & ElMes & "-" & "29") Then UltimoDia = 29 Else UltimoDia = 28
  298.  
  299. Case Else
  300. UltimoDia = 31
  301. End Select
  302. End Function
  303. %>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />