Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Problema con calendario in php

    Ciao a tutti,

    ho installato un calendario in php, solo che non mi funziona bene, mi segna il mese sbagliato, per esempio ora siamo a novembre ed invece mi segna che siamo a dicembre, non riesco assolutamente a capire che cosa sia anche perchè il codice l'ho copiato da una guida senza modificare nulla (se non i nomi dei file a cui vanno i collegamenti).

    Ho allegato un'immagine del calendario che riporta dicembre, inoltre se scorro i mesi è sembre sbagliato il mese che mi da.

    Vi posto il codice php del file:

    Codice PHP:

    function ShowCalendar($m,$y)
    {
      if ((!isset(
    $_GET['d']))||($_GET['d'] == ""))
      {
        
    $m $m;
        
    $y $y;
      }else{
        
    $m = (int)@strftime"%m" ,(int)$_GET['d']);
        
    $y = (int)@strftime"%Y" ,(int)$_GET['d']);
        
    $m $m;
        
    $y $y;
      }

      
    $precedente = @mktime(000$m -11$y);
      
    $successivo = @mktime(000$m +11$y);

      
    $nomi_mesi = array(
        
    "Gen",
        
    "Feb",
        
    "Mar",
        
    "Apr",
        
    "Mag",
        
    "Giu"
        
    "Lug",
        
    "Ago",
        
    "Set",
        
    "Ott",
        
    "Nov",
        
    "Dic"
      
    );

      
    $nomi_giorni = array(
        
    "Lun",
        
    "Mar",
        
    "Mer",
        
    "Gio",
        
    "Ven",
        
    "Sab",
        
    "Dom"
      
    );

      
    $cols 7;
      
    $days = @date("t",@mktime(000$m1$y)); 
      
    $lunedi= @date("w",@mktime(000$m1$y));
      if(
    $lunedi==0$lunedi 7;

      echo 
    "<table>\n"
      echo 
    "<tr>\n
      <td colspan=\""
    .$cols."\">
      <a href=\"?d=" 
    $precedente "\">&lt;&lt;</a>
      " 
    $nomi_mesi[$m] . " " $y 
      <a href=\"?d=" 
    $successivo "\">&gt;&gt;</a></td></tr>";
      foreach(
    $nomi_giorni as $v)
      {
        echo 
    "<td>[b]".$v."[/b]</td>\n";
      }
      echo 
    "</tr>";

      for(
    $j 1$j<$days+$lunedi$j++)
      {
        if(
    $j%$cols+1==0)
        {
          echo 
    "<tr>\n";
        }

        if(
    $j<$lunedi)
        {
          echo 
    "<td> </td>\n";
        }else{
          
    $day$j-($lunedi-1);
          
    $data = @strtotime(@date($y."-".$m."-".$day));
          
    $oggi = @strtotime(@date("Y-m-d"));
          @include 
    'config_scadenziario.php';
          
    $sql "SELECT str_data FROM appuntamenti";
          
    $result = @mysql_query($sql) or die (mysql_error());
          if(@
    mysql_num_rows($result) > 0)
          {
            while(
    $fetch = @mysql_fetch_array($result))
            {
              
    $str_data $fetch['str_data'];
              if (
    $str_data == $data)
              {
                
    $day "<a href=\"appuntamenti.php?day=$str_data\">$day</a>";
              }
            }
          }

          if(
    $data != $oggi)
          {
            echo 
    "<td>".$day."</td>";
          }else{
            echo 
    "<td>[b]".$day."[/b]</td>";
          }
        }

        if(
    $j%$cols==0)
        {
          echo 
    "</tr>";
        }
      }
      echo 
    "<tr></tr>";
      echo 
    "</table>";
    }

    @
    mysql_close();
    @
    ShowCalendar(@date("m"),@date("Y")); 
    ?> 
    Spero che possiate aiutarmi perchè sto impazzendo.

    Il codice del calendario l'ho preso qui

    Grazie mille

    Michael
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    dov'e' che hai il server? in Australia per caso? scherzo
    prova con
    Codice PHP:
    echo date("F j, Y, g:i a"); 
    cosi vedi che orario e' impostato sul server
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  3. #3
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    poi eventualmente reimposta l'orario nei tuoi script php usando setlocale() imposti l'orario
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  4. #4
    Grazie mille, ci provo domani mattina!

    Ti faccio sapere!

    Ciao

  5. #5
    Ciao!

    allora il server è locale, comunque per sicurezza ho verificato l'orario attraverso la funzione
    Codice PHP:
    echo date("F j, Y, g:i a"); 
    è questo la risposta che mi da:

    Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in C:\AppServ\www\areainterna\data.php on line 2
    December 2, 2008, 10:56 pm


    La data e l'ora comunque sono corrette sul server!

    Come puoi vedere dalle immagini allegate, a diferenza che prima mi dava un mese in più, ora, appena apro il calendario non mi scrive il mese ed inoltre se vado avanti di un mese mi va su febbraio, sto impazzendo.

    Cè anche un altro errore che mi da il server, magari è per lo stesso motivo, non lo so, comunque l'errore che mi da è questo:

    You should be using the time() function instead in C:\AppServ\www\areainterna\index.php on line 129

    Non riesco a capire come mai da questi errori, sul pc ho installato AppServ versione 2.6.0 con Apache 2.2.8, PHP 6.0.0-dev, MySQL 6.0.4-alpha e phpMyAdmin-2.10.3, può essere magari un problema di compatibilità tra script?

    Grazie mille per il tuo aiuto!!!

    Ciao
    Immagini allegate Immagini allegate

  6. #6
    Allego la seconda immagine, quella se vado avanti di un mese nel calendario!
    Immagini allegate Immagini allegate

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    324
    Hai provato a mettere dicembre prima di gennaio?

    Codice PHP:
     $nomi_mesi = array(
        
    "Dic",
        
    "Gen",
        
    "Feb",
        
    "Mar",
        
    "Apr",
        
    "Mag",
        
    "Giu",
        
    "Lug",
        
    "Ago",
        
    "Set",
        
    "Ott",
        
    "Nov"
     
      
    ); 
    Ho la sindrome di Peter Pan, le manie di persecuzione...se sapessi suonare uno strumento sicuramente avrei anche un complesso.

  8. #8
    Grazie mille per la dritta!
    Ho provato ed il mese è corretto, se vado avanti ora mi da gennaio ed indietro mi da novembre, resto solo il problema che appena lo apro non mi scrive il mese in cui siamo ora, questo appena lo apro, perchè se vado avanti di un mese e poi torno indietro la scritta dicembre appare come per magia

    Ora stavo guardando un secondo lo script e vedo che comincia così:
    Codice PHP:

    function ShowCalendar($m,$y

      if ((!isset(
    $_GET['d']))||($_GET['d'] == "")) 
      { 
        
    $m $m
        
    $y $y
      }else{ 
        
    $m = (int)@strftime"%m" ,(int)$_GET['d']); 
        
    $y = (int)@strftime"%Y" ,(int)$_GET['d']); 
        
    $m $m
        
    $y $y
      } 

      
    $precedente = @mktime(000$m -11$y); 
      
    $successivo = @mktime(000$m +11$y); 
    ma le variabili $m e $y non mi sembra siano dichiarate all'inizio, potrebbe essere per questo motivo che non mi da il nome del mese in cui siamo ora appena apro il calendario?

    Grazie mille

    Ciao

  9. #9
    Allora dovrei aver risolto in parte, mi sa che il problema non era la dichiarazione delle variabili ma la lista dei mesi, difatti il primo valore dell'array ha valore "0" (correggimi se sbaglio) e quindi ora lo script andava a cercare nell'array dei mesi il numero "12" e non trovandolo non mi scriveva il mese corrente, io ora ho aggiunto dimcembre ad inizio e a fine array in modo che il primo abbia valore "0" e l'ultimo abbia valore "12", mi sembra che così sia corretto, no? O sto sbagliando qualcosa?

    Ora l'array è così strutturato:

    Codice PHP:
      $nomi_mesi = array(
        
    "Dic",
        
    "Gen",
        
    "Feb",
        
    "Mar",
        
    "Apr",
        
    "Mag",
        
    "Giu"
        
    "Lug",
        
    "Ago",
        
    "Set",
        
    "Ott",
        
    "Nov",
        
    "Dic"
      
    ); 
    Spero di aver fatto bene!

  10. #10
    Ora l'ultimo problema che dovrei risolvere è capire perchè mi da questi errori qui:


    Scadenziature Odierne


    Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in C:\AppServ\www\areainterna\index.php on line 129

    Strict Standards: mktime() [function.mktime]: You should be using the time() function instead in C:\AppServ\www\areainterna\index.php on line 129


    In poche parole questa è la pagina che mi visualizza gli appuntamenti salvati per oggi e questo è il suo script:

    Codice PHP:
    $day mktime();
      @include 
    'config_scadenziario.php';
      
    $sql "SELECT * FROM appuntamenti WHERE str_data=$day";
      
    $result = @mysql_query($sql) or die (mysql_error());
      if(@
    mysql_num_rows($result) > 0)
      {
        while(
    $fetch = @mysql_fetch_array($result))
        {
          
    $id = @stripslashes($fetch['id']);
          
    $titolo = @stripslashes($fetch['titolo']);
          
    $testo = @stripslashes($fetch['testo']);
          
    $data = @date("d-m-Y"$fetch['str_data']);
          echo 
    "Appuntamenti del [b]$data[/b]

    $titolo "
    $testo "

          <a href=\"canc_scad.php?id=
    $id\">Cancella</a> |
          <a href=\"mod_scad.php?id=
    $id\">Modifica</a>
          <hr>"
    ;
        }
      @
    mysql_close();
      } 
    L'errore se non sbaglio dovrebbe essere qui: $day = mktime(); ma non riesco a capire come devo cambiarlo.

    Grazie ancora!!!!

    E scusa le mie domande se sono banali ma sto cercando di fare pratica pian piano!!

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.