10. oktober 2007 - 12:15Der er
133 kommentarer og 1 løsning
Kalender til den store guldmedalje
Hey derude.
Jeg sidder og vil gerne skrive min egen kalender, for mange af man finder gratis på nettet kan kun en del af det jeg gerne vil have - eller rettere jeg har fundet to scripts hvor jeg gerne vil benytte noget fra det ene og noget fra det andet.
Derfor vil jeg høre om der er en/eller flere herinde der ville være behjælplig med dette??
Desuden er der også en masse config-sider med som jeg gerne ville undlade at bruge og evt. skrive det hele i et scrip (hvis muligt)
Jeg har to .zip filer der bruges til de to kalendre.
Det jeg gerne ville ende med som resultat:
På min side vil der i højre side være en lille kalender (kun tekst/tal) de dage hvor der er noget i kalenderen makers med fed. (script A)
Når man klikker på en vilkårlig dag i kalenderen skal en 'ny side' åbne hvor en stor kalender vises med flere detaljer for hver enkelt dag. (script B)
OBS! den 'nye side' skal stadig indeholde den lille kalender ude i højre side
Altsammen kædet til en og samme databse (Access)
- og en admindel til at oprette/redigere/slette - evt. en funktion så man som gæst kan rette en forespørgsel og derved reservere dagen/dagene i kalenderen
Blev måske lige lidt kludret i startet fordi jeg bare gerne ville fortælle hvordan jeg ville have det til at se ud. tænkte bare at det var nemmere når nu de fleste funktioner jeg gerne ville have var kodet - så skulle det bare rykkes lidt rundt *G
Kristian
- godt eksempel til den 'lille kalender' (script A) men kan ikke lige se hvordan jeg skal kunne udbygge denne til script B..
Script B er vel bare en side, som viser poster i databasen for en given dag, er det ikke? Så mit eksempel svarede til Script A. Dagene skal så bare laves til links, der eksempelvis linker til scriptb.asp?date=12/03/2006
scriptb.asp henter så fra databasen, hvor dagen er Request.Querystring("date")
så man kan lave det med querystring!? smart så giver det hele lidt mere mening igen.. tror bare jeg starter fra bunden med det script du skrev.. så kan jeg jo altid spørge dig her når det går i hårknude...?
jow.. jeg har lige to spm allerede (mere skønhedsfejl) jeg ville lave det sådan at der står 01 i stedet for bare 1 og så vil jeg os gerne lave at dage i forrige næste måned skrives og laves en anden farve i stedet for et (-)tegn
den første er vel noget med at if day (hved ikke hvilket script) <= (er mindre end eller lig med) 9 så skal der skrives "0(script for dag)"
ved ikke helt om det hjælper med i det andet script bruges dette til disse dage i den næst kommende måned:
' If the dates for the month are exhausted, start printing next month's dates ' in grayed font If intPrintDay > intLastDay Then Write_TD NextMonthDate, "NON" NextMonthDate = NextMonthDate + 1 EndRows = True
hmm okay, som sagt en skønhedsfejl (i min verden!) Med hensyn til at gøre en dato fed når der findes noget på datoen, så har jeg en ide, men igen mangler jeg evnen til at skrive det om til asp-kode (hvis man kan gøre det sådan som jeg har tænkt?!)
Ville tage fat i dtmCurDate og hvis den er lige med en værdi (strstatus) evt true then respone.write "<font......." (ligesom dags dato farves rød)
så hvordan laver jeg strstatus til en funtion der tjekker om dato er i db'en? og hvis den er sætter strstatus til true/optaget/'noget andet) ??
Problemet er jo load-tid. Så mere optimalt kunne det lade sig gøre at loade alle unikke datoer (fra måneden) over i et javascript-array. Dette array kunne så løbes igennem, når siden _er_ loadet, og dagene kunne så gøres fed dér. Dvs. vha. JavaScript.
Den sidste løsning. Den vil loade siden hurtigt, og så vil alle datoerne blive "loadet" fede herefter. =) Den anden løsning vil gå slemt ud over loadtiden på samtlige sider, hvor kalenderen er sat ind. Og i øvrigt tror jeg, det vil gå superhurtigt med javascript.
Har lige strikket koden sammen. Tror den virker, men har ikke haft mulighed for at afprøve den: ----------------------------------------- <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ var arrDates="02/04/2007,03/04/2007,12/04/2007".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).parentNode.style.fontWeight="bold"; } }) </script> ----------------------------------------- Funktionen appendEvent sørger for at tilføje vores "Fed"-funktion, når hele siden er loadet. Vi kan jo ikke have, at den bliver kørt, inden kalenderen eksisterer, for så får vi en fejlmeddelelse. Og appendEvent er lavet som funktion, fordi den skal kunne fungere i både Internet Explorer, Firefox og andre browsere. Browserne har nemlig, desværre, deres egne koder til dette, så man kan ikke nøjes med at bruge koden til den ene browser.
Og arrDates skal så indlæses fra databasen og adskilles med komma.
så det skal ind sammen med kalenderen dette script? kan man ikke snyde lidt ved at hente måned og år via de funktioner der allerede er lavet så man ikke skal lave en for hver måned specifikt? evt. noget er der 30/31 dage?
Ja, det skal bare ind, hvor du synes. Men nok mest logisk i nærheden af kalenderen. Hvis du har en ekstern fil med javascript, kunne du putte appendEvent derind, da den er god at genbruge.
Ikke sikker på, jeg forstår dit andet spørgsmål. Men det vil nok være mest hensigtsmæssigt at have den fulde dato liggende i databasen, så man ikke skal omregne til en anden dato hver gang. Hvis den matcher dtmCurDate er det optimalt.
I øvrigt manglede jeg lige at skrive, hvad der skulle rettes i kalenderen, for at min javascriptkode virker:
Og i javascripten kan du så rette: document.getElementById(arrDates[i]).parentNode.style.fontWeight="bold"; Til: document.getElementById(arrDates[i]).style.fontWeight="bold";
Tror det så må blive: ------------------------------------ <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ var arrDates="<%Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../fpdb/database.mdb")
Set rs=Conn.Execute("SELECT [date] FROM [calendar] WHERE [date]>#01/"&Month(now)&"/"&Year(now))
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("date") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold" } }) </script> ------------------------------------ Navnene i SELECT'en skal selvfølgelig ændres til dine navne.
Set rs=Conn.Execute("SELECT [date] FROM [calendar] WHERE [date]>#01/"&Month(now)&"/"&Year(now)) skal være: Set rs=Conn.Execute("SELECT [date] FROM [calendar] WHERE [date]>#01/"&Month(now)&"/"&Year(now)&"#")
Nej, [ ] er en god idé altid at bruge. Nogle feltnavne er nemlig "reserverede" og vil give fejl. Kan ikke huske, om password er en af de reserverede ord. Havde engang en liste over dem, men den er væk lige nu. I hvert fald sikrer [ ] at du kan skrive hvad som helst derinde.. Stort set.
(Et godt eksempel er selvfølgelig ordet SELECT. Hvis din tabel hedder det, har du et problem:
SELECT select FROM select WHERE select='select'
:) Den vil fucke fuldstændig op.
Der er dog mange andre mindre åbenlyse reserverede ord.)
Hvis du højreklikker ser du, at der er en asp-fejl. Hvis du rykker javascriptdelen ned under kalender delen og ser filen på nettet igen, vil du kunne se hele kalenderen. Men der er åbenbart noget galt i ASP-delen i Javascriptkoden:
<p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face="Arial" size=2>error '80004005'</font> <p> <font face="Arial" size=2>[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x3370 Thread 0x3314 DBC 0xa25d024 Jet'.</font> <p> <font face="Arial" size=2>/KalenderTEST/index.asp</font><font face="Arial" size=2>, line 69</font>
Hvad er linje 69? Hvordan ser din ASP-kode ud der?
<p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face="Arial" size=2>error '80004005'</font> <p> <font face="Arial" size=2>[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x3370 Thread 0x33b4 DBC 0x3766074 Jet'.</font> <p> <font face="Arial" size=2>/KalenderTEST/index.asp</font><font face="Arial" size=2>, line 100</font>
Først og fremmest kan du rette: If dtmCurDate = dtmToday Then Response.Write "<strong><font color=#ff0000>" End If til: If dtmCurDate = dtmToday Then Response.Write "<strong><font color=#ff0000>" Det er langt mere overskueligt sådan, synes jeg.
2 linjer under står der: Response.Write "</strong></td>" Det bør så være: If dtmCurDate = dtmToday Then Response.Write "</strong>" Response.Write "</td>"
Lige nu afsluttes strong for alle datoer, selvom det kun skrives ved én.
forresten angående fremhævning har jeg prøvet at rode lidt med også at farve denne: kiggede på denne linie: document.getElementById(arrDates[i]).style.fontWeight="bold" prøvede at forlænge med ;style.fontColor="#ff0000"
Ang. forlængelse med også at farve dagene, skal du lave en ny linje: document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000"
Er du sikker på, datoen er præcis ens med den i querystringen?
Er dato-feltet i databasen af typen dato?
Muligvis skal denne linje: strSQL = "select * from [jobdata] where [dato] = " & Request.Querystring("dato") Så være: strSQL = "select * from [jobdata] where [dato] = #"&Request.Querystring("dato")&"#"
Set rs=Conn.Execute("select [dato] from [jobdata] where [dato]=#"&Request.Querystring("date")&"#") If Not rs.EOF Then response.write "hej<br>" response.write rs("dato") Else response.write "Ingen poster her" End If
Conn.Close Set Conn=Nothing%>
stadig ingen post - jeg har valg stadart datoformat ddmmåååå tt:mm:ss i access
Du skal dog nok ændre: Set rs=Conn.Execute("select [dato] from [jobdata] where [dato]='"&Request.Querystring("date")&"'" Til: Set rs=Conn.Execute("select [dato] from [jobdata] where [dato]='"&Request.Querystring("date")&"'" Når du bruger tekst- og ikke datoformat i din db.
så vi tæt på. det hele virker pånær at første gang siden inlæses vises der intet med fed - når man så har klikket på en dato vises show rigtigt! bruger man så tilbage-knappe i ie vises kalenderen korrekt igen!
så kom de tilbage igen! MEN MEN MEN show viser kun datoen 11-10-2007 lige meget hvilken dag man vælger også når der ikke er nogen post oprettet eks 13-10-2007
ved ikke rigtig lige hvad der sker. hver gang jeg har rette det du har skrevet virker det efter noget tid kommer så der fejl igen. kan du ikke sende den stykke kode du har på din computer??
hmm okay. det roder nemlig stadig med nogle fejl hist og her..
MEN til selve kalendere hvorfor er dags dato makeret med fed syns ikke jeg kan finde nogen del i scriptet der skulle gøre dette.. ville hellere have det understreget sådan så det ikke går ud over om der er noget på datoen.
Så ville jeg evt gerne føje en if mere på sådan så hvis et felt kaldet status er lig med book så bliver dato i kalenderen gul (ikke fed) og hvis felt er lig med godkendt så skal det blive rød og fed ligsom nu.
kan man skrive en mere eller skal det skrives samme med det jeg har nu evt. med noget if et eller andet then else if the or...
hmm så står jeg sku af.. kan se den bliver lavet rød men hvor kommer der noget fed ind i billedet det er ikke <strong> vel? prøvede at skrive text-decoration: underline men ingen effekt i netop denne linie...
- Jeg tror der er noget i dit script der hopper af, for den laver stadig fejl når jeg bladre i kalenderen (skrifter måned). Så har prøvet at starte forfra 5-6 gange nu er det er først når din funtion til at farve/markere at der sker noget på en given dag at der kommer den fejl...??
Desuden kan jeg heller ikke helt gennemskue hvordan jeg skal lave det sådan at hvis status-feltet i db'en er: *** booking så skal datoen i kalenderen være gul/ikke fed
og hvis status er: *** godkendt så skal datoen i kalenderen være rød/fed (som det er nu)
jeg prøvede selv at fjerne lidt hist og her men satte det tilbage igen som det var originalt (tror jeg) men så gik min computer ned og er derfor ikke sikker på at den har gemt det jeg rettede tilbage til....det kommer her det jeg har:
<script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ var arrDates="<%Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#")
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold" document.getElementById(arrDates[i]).style.color="#ff0000" } }) </script>
og det står lige efter </table> tagget før </body> har det noget at sige?
Tror, det må være: -------------------------------- <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ var arrDates="<%Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='booking'")
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="normal" document.getElementById(arrDates[i]).style.color="#ffcc00" } arrDates="<%Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='godkendt'")
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold" document.getElementById(arrDates[i]).style.color="#ff0000" } }) </script>
Hov, jeg havde lige glemt ; igen. --------------------------------- <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ var arrDates="<%Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='booking'")
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="normal"; document.getElementById(arrDates[i]).style.color="#ffcc00" } arrDates="<%Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='godkendt'")
i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000" } }) </script> --------------------------------------- Ser lige på den anden fejl.
Hvis der er javascript-fejl kan du ikke gå ind i originalfilen og finde linjenr. Javascript ta'r nemlig ikke højde for ASP, så alle ASP-linjer tælles ikke med. For at få den rigtige linje, skal du finde den i Vis kilde for siden, altså ude på nettet.
linie 58 er en (}) før står dette 53 <script type="text/javascript"> 54 function appendEvent(a,b,c){ 55 if(a.attachEvent){a.attachEvent("on"+b,c)} 56 else if(a.addEventListener){a.addEventListener(b,c,false)} 57 else{a["on"+b]=c} 58 } 59 appendEvent(window,"load",function(){ 60 var arrDates="".split(","); 61 for(i=0;i<arrDates.length;i++){
-- i fejlbeskrivelsen skriver den tegn 13 ?. hva betyder det når der kun er det ene tegn?? 62 document.getElementById(arrDates[i]).style.fontWeight="normal"; 63 document.getElementById(arrDates[i]).style.color="#ffcc00" 64 } 65 arrDates="10/11/2007,10/1/2007".split(","); 66 for(i=0;i<arrDates.length;i++){ 67 document.getElementById(arrDates[i]).style.fontWeight="bold"; 68 document.getElementById(arrDates[i]).style.color="#ff0000" 69 } 70 }) 71 </script>
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='booking'") If Not rs.EOF Then Response.Write "var arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="normal"; document.getElementById(arrDates[i]).style.color="#ffcc00" } <%End If Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE [dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"# AND [status]='godkendt'") If Not rs.EOF Then Response.Write "arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000" } <%End If%> }) </script>
altså lige fra du skrev koden til også at kigge i status viser den ikke noget i kalenderen når alle poster er godkendt. Men hvis alle poster er booking eller en post booking og en anden godkent så vises de i kalenderen.
-----> lige en enkelt ting: du skrev noget med load tid og javacript der skulle kører efter siden var indlæst.. kan det passe den kun tjekker for den aktuelle måned? ville nemlig gerne bruge det til noget booking hejs så ville det jo være passende at man kunne kigge et par måneder frem i tiden ;)
<script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ <%If Request.Querystring("date")="" Then strDate="[dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#" Else strDate="[dato]>#"&Request.Querystring("date")&"# AND [dato]<#"&DateAdd("d",-1,DateAdd("m",1,CDate(Request.Querystring("date"))))&"#" End If
Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='booking'") If Not rs.EOF Then Response.Write "var arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="normal"; document.getElementById(arrDates[i]).style.color="#ffcc00" } <%End If Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='godkendt'") If Not rs.EOF Then Response.Write "arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000" } <%End If%> }) </script>
<--- Er gået i gang med zoom.asp (som den hedder nu) Det virker nogenlunde dog er der lidt knas når man klikker på en dato før dags dato vises der ingen oplysninger på zoom-siden. (dvs der skrives 'Ingen poster her') Desuden kan man heller ikke se oplysninger hvis man går en måned frem eller tilbage. (igen 'Ingen poster her')...
min script ser sådan ud: <% Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("select [datostempel] from [jobdata] where [datostempel]=#"&Request.Querystring("date")&"#") If Not rs.EOF Then Response.Write "hej<br>" Response.Write rs("datostempel") Else response.write "Ingen poster her" End If rs.Close %>
Ja, fejlen i koden ser ud til at være, fordi der også vælges 11/10/2007 selvom vi er i November. Og den dato findes jo ikke, og så kokser den. Prøv at indsætte: Response.Write "alert('"&strDate&"');"
Lige efter: If Request.Querystring("date")="" Then strDate="[dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#" Else strDate="[dato]>#"&Request.Querystring("date")&"# AND [dato]<#"&DateAdd("d",-1,DateAdd("m",1,CDate(Request.Querystring("date"))))&"#" End If
If Request.Querystring("date")="" Then strDate="[dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#" Else strDate="[dato]>#"&Request.Querystring("date")&"# AND [dato]<#"&DateAdd("d",-1,DateAdd("m",1,CDate(Request.Querystring("date"))))&"#" End If Response.Write "alert('"&strDate&"');"
Ok, så løser vi det på en anden måde. Fejlen opstår, når f.eks. datoen 11-10-2007 ikke findes på siden. Oprindeligt skulle den slet ikke have lyst til at lede efter 11-10-2007, når det er en anden måned, men hvis det ikke kan være anderledes, tjekker vi da bare, om den findes: ------------------------------------- <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ <%If Request.Querystring("date")="" Then strDate="[dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#" Else strDate="[dato]>#"&Request.Querystring("date")&"# AND [dato]<#"&DateAdd("d",-1,DateAdd("m",1,CDate(Request.Querystring("date"))))&"#" End If
Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='booking'") If Not rs.EOF Then Response.Write "var arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ if(document.getElementById(arrDates[i]){ document.getElementById(arrDates[i]).style.fontWeight="normal"; document.getElementById(arrDates[i]).style.color="#ffcc00" } } <%End If Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='godkendt'") If Not rs.EOF Then Response.Write "arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ if(document.getElementById(arrDates[i]){ document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000" } } <%End If%> }) </script>
Manglede lige en ) to steder: ------------------------------------------ <script type="text/javascript"> function appendEvent(a,b,c){ if(a.attachEvent){a.attachEvent("on"+b,c)} else if(a.addEventListener){a.addEventListener(b,c,false)} else{a["on"+b]=c} } appendEvent(window,"load",function(){ <%If Request.Querystring("date")="" Then strDate="[dato]>#01/"&Month(now)&"/"&Year(now)&"# AND [dato]<#31/"&Month(now)&"/"&Year(now)&"#" Else strDate="[dato]>#"&Request.Querystring("date")&"# AND [dato]<#"&DateAdd("d",-1,DateAdd("m",1,CDate(Request.Querystring("date"))))&"#" End If
Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='booking'") If Not rs.EOF Then Response.Write "var arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ if(document.getElementById(arrDates[i])){ document.getElementById(arrDates[i]).style.fontWeight="normal"; document.getElementById(arrDates[i]).style.color="#ffcc00" } } <%End If Set rs=Conn.Execute("SELECT [dato] FROM [jobdata] WHERE "&strDate&" AND [status]='godkendt'") If Not rs.EOF Then Response.Write "arrDates=""" i=0 Do While Not rs.EOF If i>0 Then Response.Write "," Response.Write rs("dato") i=i+1 rs.MoveNext Loop rs.Close%>".split(","); for(i=0;i<arrDates.length;i++){ if(document.getElementById(arrDates[i])){ document.getElementById(arrDates[i]).style.fontWeight="bold"; document.getElementById(arrDates[i]).style.color="#ff0000" } } <%End If%> }) </script>
tænke på at lave feltet 'kalenderstatus' om til et ja/nej felt 'godkendt' og så rette til i koden.. hvlket jeg også har prøvet, men det virker hverken med ja/nej eller yes/no HJÆLP!
her er lige en stump hvor det indgår:
Set rs=Conn.Execute("SELECT [datostempel] FROM [jobdata] WHERE "&strDate&" AND [godkendt]='yes'")
nu har jeg føjet en masse poster ind i kalenderen og på nogle dage er der mere end en. hvordan kan jeg skrive i min zoom.asp så alle poster for én dato udskrives?
Har bygget min kode sådan op:
<% Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("select * from [jobdata] where [datostempel]=#"&Request.Querystring("date")&"#")
If Not rs.EOF Then if rs("godkendt") = false and rs("heledagen") = false then Response.Write rs("datostempel")&"<br>(" & FormatDateTime(rs("starttid"),4)&"-" & FormatDateTime(rs("sluttid"),4)&") reserveret <br><br><a href='book.asp'>lav booking nu!</a><br><a href='java script:history.back(-1)'>tilbage..</a>" if rs("godkendt") = false and rs("heledagen") = true then Response.Write rs("datostempel")&"<br>(HELE DAGEN) reserveret <br><br><a href='book.asp'>lav booking nu!</a><br><a href='java script:history.back(-1)'>tilbage..</a>" if rs("godkendt") = true and rs("heledagen") = falset then Response.Write rs("datostempel")&"<br>OPTAGET " & FormatDateTime(rs("starttid"),4)&"-" & FormatDateTime(rs("sluttid"),4)&"<br><br><a href='book.asp'>lav booking nu!</a><br><a href='java script:history.back(-1)'>tilbage..</a>" if rs("godkendt") = true and rs("heledagen") = true then Response.Write rs("datostempel")&"<br>OPTAGET HELE DAGEN<br><br><a href='book.asp'>lav booking nu!</a><br><a href='java script:history.back(-1)'>tilbage..</a>" Else Response.write "INGEN BOOKING" Response.write "<br><a href='book.asp'>lav booking nu!</a>"
Det må bestemt ikke være der. Det skal blot være før Do while :) Hvis du sætter det før if'en, bli'r det vist, hvis der ikke er poster.. Og det vil gi' fejl.
kommer her: <% Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kristhedj.mdb")
Set rs=Conn.Execute("select * from [jobdata] where [datostempel]=#"&Request.Querystring("date")&"# order by starttid asc")
If Not rs.EOF Then Response.Write "<b>"&rs("datostempel")&"</b><br>" Do While Not rs.EOF if rs("godkendt") = false and rs("heledagen") = false then Response.Write "(" & FormatDateTime(rs("starttid"),4)&"-" & FormatDateTime(rs("sluttid"),4)&") reserveret" if rs("godkendt") = false and rs("heledagen") = true then Response.Write "(HELE DAGEN) reserveret <br>" if rs("godkendt") = true and rs("heledagen") = falset then Response.Write "OPTAGET " & FormatDateTime(rs("starttid"),4)&"-" & FormatDateTime(rs("sluttid"),4)&"<br>" if rs("godkendt") = true and rs("heledagen") = true then Response.Write "OPTAGET HELE DAGEN<br>" if rs("godkendt") = false and rs("heledagen") = false then strlink = "<br><a href='booking.asp'>lav booking</a><br><a href='../kristhedj/chart/index.asp'>skjul detaljer</a>" if rs("godkendt") = false and rs("heledagen") = true then strlink = "<br><a href='booking.asp'>lav booking</a><br><a href='../kristhedj/chart/index.asp'>skjul detaljer</a>" if rs("godkendt") = true and rs("heledagen") = false then strlink = "<br><a href='booking.asp'>lav booking</a><br><a href='../kristhedj/chart/index.asp'>skjul detaljer</a>" if rs("godkendt") = true and rs("heledagen") = true then strlink = "<br><a href='../kristhedj/chart/index.asp'>skjul detaljer</a>" rs.MoveNext Loop Response.Write strLink Else Response.write "<b>INGEN BOOKING</b>" Response.write "<br><a href='booking.asp'>lav booking</a><br><a href='../kristhedj/chart/index.asp'>skjul detaljer</a>"
hop hey hej.. så har jeg tæsket kalenderen synd og sammen!.. en masse poster her og der for at tjekke at alt er som det skal være
og desværre er jeg løbet ind i dato-format problemer ;(
Har lavet et eksempel med 01.11.2007 (01.nov.2007) er sat til at være 'godkent' og 'optaget hele dagen' og 11.01.2007 (11.jan.2007) er sat som 'booking' og tidsrum angives
det vises rigtigt i kalenderen altså at 1/11 er fed/rød og 11/1 er alm/gul så tror de er zoom.asp den er gal i får når man så vælger fx. 11/1 vises datoen som 01-11-2007 og optaget hele dagen...
Jeg har faktisk (desværre) samme problem, når jeg koder for tiden. Tror problemet ligger i Access. Men siger til, hvis jeg skulle finde en løsning. Ellers må du måske blive nødt til at lave et nyt spørgsmål omkring det. Andre har sikkert en løsning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.