Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396

    Sviluppare un calendario

    Ciao a tutti,

    per questioni di tempo ho dovuto scaricare un calendario in asp già compilato, in pratica lo script così com'è permette di visualizzare un calendario nella pagina desiderata.

    Quello che mi occorre è un calendario con i giorni cliccabili che fanno accedere ad una pagina che stampa a video gli eventi relativi a quel determinato giorno.

    Sono riuscito nell'intento linkando i giorni, una volta cliccato su un giorno qualsiasi si passa l'id data_sel, nella pagina di visualizzazione faccio una select per data_sel. Funziona tutto.

    Quello che vorrei aggiungere è uno sfondo sui giorni in base all'evento che contengono, esempio:

    se il giorno 15/09/2009 contiene un evento sportivo, il background nel giorno 15 sarà giallo e così via.

    Nel database access che ho creato ho inserito un campo numerico categoria_eventi, in base al numero corrisponderà una categoria con un colore.

    Inizio con il postare il codice della pagina del calendario e quella di risposta:

    calendario.asp

    Codice PHP:
    <% 
    Session.LCID 1040 
     
    ' se non passiamo nessun valore parte dalla data odierna 
    If Request("data") ="" then 
      data = Date() 
    else 
      data = CDate(Request("data")) 
    end if 
     
    mese = Month(data) 
    anno = Year(data) 
     

    conta il numero di giorni in un mese 
    function giornidelmese(meseanno
      
    DataInizio CDate("01/" mese "/" anno
      
    DataFine DateAdd("m"1DataInizio
      
    giornidelmese DateDiff("d"DataInizioDataFine
    end function 
     
    %> 
    <
    table cellpadding="0" cellspacing="0" width="210">
    <
    tr>
    <
    td align="center">D</td><td align="center">L</td><td align="center">M</td><td align="center">M</td
    <
    td align="center">G</td><td align="center">V</td><td align="center">S</td>
    </
    tr
    </
    table>


    <
    table border="0" cellpadding="0" cellspacing="0"  width="210"
    <
    tr
    <
    td>[url="calendario.asp?data=<%=DateAdd("]">Indietro[/url]</td> 
    <td colspan="
    5" align="center"><%=MonthName(Month(data)) & " " & Year(data)%></td> 
    <td align="
    right">[url="calendario.asp?data=<%=DateAdd("]">Avanti[/url]</td
    </
    tr

    <% 
    DataInizio CDate("01/" mese "/" anno
     
    ' saltiamo primi giorni della settimana 
    for i = 1 to WeekDay(DataInizio)-1 
      if i = 1 then Response.Write "<tr>" 
      Response.write "<td> </td>" 
    next 
     
    '
    mostriamo il calendario e linkiamo ogni giorno
    for 1 to giornidelmese(mese,anno
      
    data Cdate(( "/" mese "/" anno)) 
      if 
    WeekDay(data) = 1 then Response.Write "<tr>" 
      
    Response.Write("<td align=""center"">[url='risposta.asp?data=" Server.UrlEncode(data) & "']" "[/url]</td>"
      if 
    WeekDay(data) = 7 then Response.Write "</tr>" 
     
    next 


     
    ' saltiamo primi giorni della settimana 
    for j = WeekDay(Data)+1 to 7 
      Response.write "<td> </td>" 
      if j mod 7 = 0 then Response.Write "</tr>" : exit for 
    next 


    %> 
    </table> 
    risposta.asp

    Codice PHP:
    <% 
     
    data_sel Request("data"
    if 
    data_sel <> "" then 




    dim strCode
    strCode
    ="innovatel"
    dim intVolta
    intVolta
    ="0"

    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn " DBQ=" Server.MapPath("mdb-database/db.mdb")
    strConn=strConn ";pwd=" strCode
    Conn
    .Open strConn

    Set rs 
    Server.CreateObject("ADODB.Recordset")

    titolo_appuntamento request.form("titolo_appuntamento")
    data_sel request("data")

    sql "SELECT * FROM calendario WHERE data='"&data_sel&"'"
    Set rs Server.CreateObject("ADODB.Recordset")
    rs.Open sqlconn ,3,3



    'se  la tbl del db è vuota allora...
    if rs.eof then
    sw_eof="1"
    end if

    if sw_eof="1" then
    %>



    Non ci sono eventi</p>

    <%
    end if
    '
    se è presente almeno un evento lo stampo..
    while 
    not rs.eof
    %>


    <%=
    rs("titolo_appuntamento")%>|<%=rs("data")%>

    <%
    rs.movenext
    wend
    end 
    if
    rs.Close
    set rs 
    Nothing
    conn
    .Close
    set conn 
    Nothing

    %> 
    il calendario verrebbe visualizzato in questo modo:




    avrei bisogno anche che al posto di "indietro" e "avanti" si visualizzasse il nome del mese precedente e viceversa. Grazie in anticipo ragazzi

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Io credo che il calendario sia opportuno crearlo in js, peserebbe il tutto molto meno per il server...
    Poi devi fare una query, giorno per giorno, per mostrare uno sfondo diverso in base alla presenza o meno di eventi.

    Roby

  3. #3
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ciao Roby,

    ero infatti combattuto per le due soluzioni.

    Ho implementato un calendario in js dovrei riuscire a fare il controllo su ogni singolo giorno, con una select nel db ho provato e sono arrivato a questo punto:

    Codice PHP:
    <%
    dim strCode
    strCode
    ="innovatel"
    dim intVolta
    intVolta
    ="0"

    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn " DBQ=" Server.MapPath("mdb-database/db.mdb")
    strConn=strConn ";pwd=" strCode
    Conn
    .Open strConn

    Set rs 
    Server.CreateObject("ADODB.Recordset")


    titolo_appuntamento request.form("titolo_appuntamento")
    data_sel request("data")


    sql "SELECT * FROM calendario WHERE data='"&data_sel&"'"
    Set rs Server.CreateObject("ADODB.Recordset")
    rs.Open sqlconn ,3,3
    %>  
      
      
      <
    style type="text/css">
          .
    highlight color#f00 !important; }
          
    .highlight2 color#0f0 !important; font-weight: bold; }
       
    </style>
       


    <
    table>
          <
    tr>
            <
    td><div id="cont"></div></td>
            <
    td></td>
          </
    tr>
        </
    table>
        <
    script type="text/javascript">//<![CDATA[

          
    var DATE_INFO = {
                  
    20090507: { klass"highlight"tooltip"%Y/%m/%d (%A)
    That was yesterday" 
    },
                  
    20090508: { klass"highlight"tooltip"And this is TODAY" }
          };

          function 
    getDateInfo(datewantsClassName) {
                  var 
    as_number Calendar.dateToInt(date);
                  if (
    as_number >= 20090518 && as_number <= 20090524)
                          return {
                                  
    klass   "highlight2",

                                  
    tooltip "<div><%=rs("data")%></div>"
                          
    };
                  return 
    DATE_INFO[as_number];
          };

          var 
    cal Calendar.setup({
                  
    cont     "cont",
                  
    fdow     1,
                  
    date     20090501,
                  
    dateInfo getDateInfo
          
    });

        
    //]]></script>

    <%
    rs.movenext


    rs
    .Close
    set rs 
    Nothing
    conn
    .Close
    set conn 
    Nothing

    %> 
    in pratica i giorni che partono dal 18 al 24 vengono colorati e al passaggio del mouse ritornano il record presente all'interno del db.
    Lasciando però la clausula where il sistema rimanda questo errore:

    Codice PHP:
    ADODB.Field (0x80020009)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
    default.
    asp 

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Fatti stampare la query... non trova nulla.

    Roby

  5. #5
    ciao!

    Hai provato x caso a fare

    data_sel = Cdate(request("data"))

    potrebbe essere che la data non venga convertita in formato corretto e dunque il DB, come già ti ha detto Roby_72, non trovi nulla. Cmq fatti stampare la query a video.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.