Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26

    problemi con calendario php

    ho trovato uno script calendario in php con la possibilità anche di inserire eventi. ho un problema: il calendario presenta la domenica come primo giorno della settimana e il sabato l'ultimo. come bisogna modificare questo script per fare in modo che il primo giorno della settimana sia il lunedi e l'ultimo la domenica?

    script:

    Codice PHP:
    <? 
    require_once("includes/config.php");

    if(!isset(
    $installed))
    {
        
    header("Location: install.php");
        exit;
    }
    else
    {
        if(
    file_exists('install.php'))
        {
            
    header("Location: install.php");
            exit;
        }
    }

    $db_connection mysql_connect ($DBHost$DBUser$DBPass) OR die (mysql_error());  
    $db_select mysql_select_db ($DBName) or die (mysql_error());
    $db_table $TBL_PR "events";

    function 
    getmicrotime(){ 
        list(
    $usec$sec) = explode(" ",microtime()); 
        return ((float)
    $usec + (float)$sec); 


    $time_start getmicrotime();

    IF(!isset(
    $_GET['year'])){
        
    $_GET['year'] = date("Y");
    }
    IF(!isset(
    $_GET['month'])){
        
    $_GET['month'] = date("n")+1;
    }

    $month addslashes($_GET['month'] - 1);
    $year addslashes($_GET['year']);

    $query "SELECT event_id,event_title,event_day,event_time FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time";
    $query_result mysql_query ($query);
    while (
    $info mysql_fetch_array($query_result))
    {
        
    $day $info['event_day'];
        
    $event_id $info['event_id'];
        
    $events[$day][] = $info['event_id'];
        
    $event_info[$event_id]['0'] = substr($info['event_title'], 012);;
        
    $event_info[$event_id]['1'] = $info['event_time'];
    }

    $todays_date date("j");
    $todays_month date("n");

    $days_in_month date ("t"mktime(0,0,0,$_GET['month'],0,$_GET['year']));
    $first_day_of_month date ("w"mktime(0,0,0,$_GET['month']-1,1,$_GET['year']));
    $first_day_of_month $first_day_of_month 1;
    $count_boxes 0;
    $days_so_far 0;

    IF(
    $_GET['month'] == 13){
        
    $next_month 2;
        
    $next_year $_GET['year'] + 1;
    } ELSE {
        
    $next_month $_GET['month'] + 1;
        
    $next_year $_GET['year'];
    }

    IF(
    $_GET['month'] == 2){
        
    $prev_month 13;
        
    $prev_year $_GET['year'] - 1;
    } ELSE {
        
    $prev_month $_GET['month'] - 1;
        
    $prev_year $_GET['year'];
    }


    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>PHPCalendar</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="images/cal.css" rel="stylesheet" type="text/css">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    function MM_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
    }
    //-->
    </script>
    </head>

    <body>
    <div align="center"><span class="currentdate"><? echo date ("F Y"mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); ?></span>

    </div>
    <div align="center">

      <table width="700" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td><div align="right">[url="<? echo "]">[img]http://images-1.findicons.com/files/icons/1688/web_blog/48/arrow_left.png[/img][/url]</div></td>
          
    <td width="200" style="border: 1px solid #F2F2F2"><div align="center">
                
              <
    select name="month" id="month" onChange="MM_jumpMenu('parent',this,0)">
                <?
                for (
    $i 1$i <= 12$i++) {
                    
    $link $i+1;
                    IF(
    $_GET['month'] == $link){
                        
    $selected "selected";
                    } ELSE {
                        
    $selected "";
                    }
                    echo 
    "<option value=\"index.php?month=$link&amp;year=$_GET[year]\" $selected>" date ("F"mktime(0,0,0,$i,1,$_GET['year'])) . "</option>\n";
                }
                
    ?>
              </select>
              <select name="year" id="year" onChange="MM_jumpMenu('parent',this,0)">
              <?
              
    for ($i 2009$i <= 2015$i++) {
                  IF(
    $i == $_GET['year']){
                    
    $selected "selected";
                } ELSE {
                    
    $selected "";
                }
                  echo 
    "<option value=\"index.php?month=$_GET[month]&amp;year=$i\" $selected>$i</option>\n";
              }
              
    ?>
              </select>
            </div></td>
          <td><div align="left">[url="<? echo "]">[img]http://images-2.findicons.com/files/icons/1688/web_blog/48/arrow_right.png[/img][/url]</div></td>
        
    </tr>
      </
    table>
      

    </
    div>
    <
    table width="1050" border="0" align="center" cellpadding="0" cellspacing="0">
      <
    tr>
        <
    td><table border="0" width="100%" cellpadding="0" cellspacing="1" bgcolor="#DDDDDD">
            <
    tr class="topdays"
              <
    td><div align="center">Domenica</font></div></td>
              <
    td><div align="center">Lunedì</div></td>
              <
    td><div align="center">Martedì</div></td>
              <
    td><div align="center">Mercoledì</div></td>
              <
    td><div align="center">Giovedì</div></td>
              <
    td><div align="center">Venerdì</div></td>
              <
    td><div align="center">Sabato</div></td>
            </
    tr>
            <
    tr valign="top" bgcolor="#FFFFFF"
            <?
            for (
    $i 1$i <= $first_day_of_month-1$i++) {
                
    $days_so_far $days_so_far 1;
                
    $count_boxes $count_boxes 1;
                echo 
    "<td width=\"100\" height=\"100\" class=\"beforedayboxes\"></td>\n";
            }
            for (
    $i 1$i <= $days_in_month$i++) {
                   
    $days_so_far $days_so_far 1;
                    
    $count_boxes $count_boxes 1;
                IF(
    $_GET['month'] == $todays_month+1){
                    IF(
    $i == $todays_date){
                        
    $class "highlighteddayboxes";
                    } ELSE {
                        
    $class "dayboxes";
                    }
                } ELSE {
                    IF(
    $i == 1){
                        
    $class "highlighteddayboxes";
                    } ELSE {
                        
    $class "dayboxes";
                    }
                }
                echo 
    "<td width=\"100\" height=\"100\" class=\"$class\">\n";
                
    $link_month $_GET['month'] - 1;
                echo 
    "<div align=\"right\"><span class=\"toprightnumber\">\n<a style=\"color: #222222\"  href=\"javascript:MM_openBrWindow('event_add.php?day=$i&amp;month=$link_month&amp;year=$_GET[year]','','width=500,height=300');\">$i</a></span></div>\n";
                IF(isset(
    $events[$i])){
                    echo 
    "<div align=\"center\"><span class=\"eventinbox\">\n";
                    while (list(
    $key$value) = each ($events[$i])) {
                        echo 
    "
    <table class=\"corner\"><tr><td><a href=\"javascript:MM_openBrWindow('event.php?id=
    $value','','width=500,height=200');\" style=\"color: #3D3D3D; font-size: 13px; text-decoration: none; text-shadow: 0px 1px 1px #FFF;\">" $event_info[$value]['1'] . " - " $event_info[$value]['0']  . "</a></td></tr></table>\n
    \n"
    ;
                    }
                    echo 
    "</span></div>\n";
                }
                echo 
    "</td>\n";
                IF((
    $count_boxes == 7) AND ($days_so_far != (($first_day_of_month-1) + $days_in_month))){
                    
    $count_boxes 0;
                    echo 
    "</TR><TR valign=\"top\">\n";
                }
            }
            
    $extra_boxes $count_boxes;
            for (
    $i 1$i <= $extra_boxes$i++) {
                echo 
    "<td width=\"100\" height=\"100\" class=\"afterdayboxes\"></td>\n";
            }
            
    $time_end getmicrotime();
            
    $time round($time_end $time_start3);
            
    ?>
            </tr>
          </table></td>
      </tr>
    </table>
    </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    è un po' lungo il codice... puoi postare uno snapshot di cosa esce?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26
    Buonasera! certo, ecco: http://i43.servimg.com/u/f43/15/33/56/67/snap10.png. sapresti aiutarmi?

  4. #4
    ciao,
    hai provato - banalmente - a mettere

    <td><div align="center">Domenica</font></div></td>
    come ultimima cella subuto dopo
    <td><div align="center">Sabato</font></div></td>

    cosa succede?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    purtroppo non ho tempo ora... aspetta qualche altro post o prova tu stesso, ci sono vari modi... ho capito la logica dello script che non è tanto complessa: il primo ciclo, cioè:

    Codice PHP:
     for ($i 1$i <= $first_day_of_month-1$i++) { 
                
    $days_so_far $days_so_far 1
                
    $count_boxes $count_boxes 1
                echo 
    "<td width=\"100\" height=\"100\" class=\"beforedayboxes\"></td>\n"
            } 
    serve a saltare le prime caselline bianche... dovresti "giostrare" con queste variabili... io riscriverei tutto, ma se vuoi puoi anche "barare" modificando la variabile "$first_day_of_month" che registra il primo giorno della settimana del mese... potresti diminuirla di 1 (avendo cura del modulo) in modo che se - come nello snapshot - inizia di giovedì, tu gli fai credere che inizi di mercoledì, così ti anticipa la stampa dei giorni e poi cambi le intestazioni (quelle sono in "chiaro") da dom a sab.



    Prova così, giusto per fare una prova, a togliere (commentando) la riga "$first_day_of_month = $first_day_of_month + 1;", cioè metti:
    Codice PHP:
    // $first_day_of_month = $first_day_of_month + 1; 
    e naturalmente cambia i nomi dei giorni della settimana in modo che partano da lunedì... e fai sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26
    ho provato a togliere la stringa che hai indicato e ha sostituirla con quello che hai scritto e mettere la colonna "domenica" sotto a quella del sabato e sembrava che funzionasse. infatti funziona in parte, tranne i mesi che cominciano a conteggiare 1 da domenica il calendario me li mette il lunedi, per esempio, in gennaio 2012 il giorno 1 dovrebbe venire di domenica ma me lo mette nel lunedi, poi per i prossimi 2 mesi funziona correttamente e si ritorna con lo stesso problema nel mese di aprile e così via! come mai?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dovrei provare, ma non riesco adesso... puoi tentare di ripristinare la riga di prima e poi aggiungi (anche se c'è una ridondanza non fa nulla):

    Codice PHP:
    if (--$first_day_of_month==0$first_day_of_month=7
    che in pratica significa che tutto è come prima, però poi tu fai "indietreggiare" di uno il conteggio del giorno della settimana con cui inizia il mese per "imbrogliare" lo script e siccome lui li ha impostati nel range 1..7 verifichi di starci dentro... come ti dicevo sarebbe meglio riscrivere il tutto, ma tant'è

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26
    ho provato ma non cambia nulla, nel mese di aprile anzi appaiono delle caselle grigie superflue!! dici che bisogna riscriverlo tutto lo script?

    sei hai voglia di aiutarmi puoi scaricare la cartella con i files cliccando qui http://199.91.153.230/lo93fv7tqo9g/e....Basic.2.3.rar cosi puoi vedere tu stesso delle modifiche che fai.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non so se faccio in tempo... se non ti rispondo aspetta un po' e poi fai un up

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26
    non preoccuparti, non devi dare la precedenza a me fai pure con comodo sei molto disponibile e per questo già ti ringrazio!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.