• User Attivo

    piccolo calendario

    Buongiorno a tutti,

    volevo fare un piccolo calendario, posto il codice:

    [PHP]
    <?php $bisestile = array("2016","2020","2024","2028","2032","2036","2040","2044","2048","2052","2056","2060","2064","2068","2072","2076","2080","2084","2088","2092","2096","2100","2104","2108","2112","2116"); $anno = $_GET['anno'];
    echo "<strong>Gennaio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    if($anno == $bisestile){ echo "<strong>Febbraio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29<br><br>"; }else{ echo "<strong>Febbraio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28<br><br>"; }
    echo "<strong>Marzo</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Aprile</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Maggio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Giugno</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Luglio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Agosto</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Settembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Ottobre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Novembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Dicembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    ?>[/PHP]

    il problema è che non mi funziona il confronto tra l'anno preso dal get e l'array bisestile;

    forse non è possibile confrontare una variabile con un array?

    grazie in anticipo per le risposte

    buona giornata a tutti


  • User Attivo

    scusate mi rispondo da solo:

    [PHP]
    <?php $bisestile = array("2016","2020","2024","2028","2032","2036","2040","2044","2048","2052","2056","2060","2064","2068","2072","2076","2080","2084","2088","2092","2096","2100","2104","2108","2112","2116"); $anno = $_GET['anno'];
    echo "<strong>Gennaio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    if(in_array($anno, $bisestile)){ echo "<strong>Febbraio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29<br><br>"; } else{ echo "<strong>Febbraio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28<br><br>"; }
    echo "<strong>Marzo</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Aprile</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Maggio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Giugno</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Luglio</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Agosto</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Settembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Ottobre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    echo "<strong>Novembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30<br><br>";
    echo "<strong>Dicembre</strong><br>"; echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<br><br>";
    ?>[/PHP]


  • User Attivo

    Ciao,
    una delle filosofie più gettonate nello sviluppo del codice è "Don't repeat yourself".

    Ti dò un esercizio da fare:

    1. con degli IF -----> raggruppa i mesi identici / crea le regole per tutti i gruppi di mesi

    2. con un ciclo FOR o WHILE --------> stampa i numeri da 1 a 31, non ha senso scriverli tutti in blocco

    3. è se c'è l'anno bisestile? :fumato:

    Facci sapere! 😄


  • User Attivo

    Ciao Artigiani del Web!

    una cosa del genere potrebbe essere:

    [PHP]
    <?php

    if (isset($_GET['anno'])){
        $anno = $_GET['anno'];
    
        if($anno < 1583){
            echo "Il calendario Greoriano inizia dal 1583";            
        }else{
    
            /* Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            echo $anno."<br /><br />";
    
            $g = 1;
            $m = 13;
            $a = $anno-1;
            $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4);
            $r = floor($a/100) - floor($a/400) - 2;
            $q = ($s - $r);
            $z = $q%7;
            echo "Il primo giorno dell'anno è: ";
            if($z==0){echo "Sabato<br /><br />";}
            if($z==1){echo "Domenica<br /><br />";}
            if($z==2){echo "Lunedì<br /><br />";}
            if($z==3){echo "Martedì<br /><br />";}
            if($z==4){echo "Mercoledi<br /><br />";}
            if($z==5){echo "Giovedì<br /><br />";}
            if($z==6){echo "Venerdì<br /><br />";}
    
             /* / Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            for($mese=1;$mese<=12;$mese++){
                if($mese==1){
                    echo "Gennaio<br />";
    
                    for($i=1; $i<=31; $i++) {
                        $col*=$q%7;
                        $q+=1;
                        if($col*==0){echo $i."S ";}
                        if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                        if($col*==2){echo $i."L ";}
                        if($col*==3){echo $i."M ";}
                        if($col*==4){echo $i."M ";}
                        if($col*==5){echo $i."G ";}
                        if($col*==6){echo $i."V ";}
                    }
    
                    echo "<br /><br />";
                }
                if($mese==2){
                    echo "Febbraio<br />";
                    if($anno % 4 == 0){
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    }else{
    
                        for($i=1; $i<=28; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    }                    
                    echo "<br /><br />";
                }
                if($mese==3){
                    echo "Marzo<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==4){
                    echo "Aprile<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==5){
                    echo "Maggio<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==6){
                    echo "Giugno<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==7){
                    echo "Luglio<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==8){
                    echo "Agosto<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==9){
                    echo "Settembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==10){
                    echo "Ottobre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==11){
                    echo "Novembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
                if($mese==12){
                    echo "Dicembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            if($col*==0){echo $i."S ";}
                            if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                            if($col*==2){echo $i."L ";}
                            if($col*==3){echo $i."M ";}
                            if($col*==4){echo $i."M ";}
                            if($col*==5){echo $i."G ";}
                            if($col*==6){echo $i."V ";}
                        }
    
                    echo "<br /><br />";
                }
            }        
        }            
      }else{
            $anno_corrente = date("Y");
            header("location: index.php?anno=".$anno_corrente);
    }
    

    ?>
    [/PHP]

    grazie mille!
    notte!


  • User Attivo

    Questa parte di codice:

          [PHP]     
                        $col*=$q%7;
                        $q+=1;
                        if($col*==0){echo $i."S ";}
                        if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                        if($col*==2){echo $i."L ";}
                        if($col*==3){echo $i."M ";}
                        if($col*==4){echo $i."M ";}
                        if($col*==5){echo $i."G ";}
                        if($col*==6){echo $i."V ";}
         [/PHP]
    

    si ripete.

    Quindi l'odeale sarebeb farne una funzione e passargli i parametri

    ad esempio

    [PHP] <?php

    if (isset($_GET['anno'])){
        $anno = $_GET['anno'];
    
        if($anno < 1583){
            echo "Il calendario Greoriano inizia dal 1583";            
        }else{
    
            /* Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            echo $anno."<br /><br />";
    
            $g = 1;
            $m = 13;
            $a = $anno-1;
            $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4);
            $r = floor($a/100) - floor($a/400) - 2;
            $q = ($s - $r);
            $z = $q%7;
            echo "Il primo giorno dell'anno è: ";
            if($z==0){echo "Sabato<br /><br />";}
            if($z==1){echo "Domenica<br /><br />";}
            if($z==2){echo "Lunedì<br /><br />";}
            if($z==3){echo "Martedì<br /><br />";}
            if($z==4){echo "Mercoledi<br /><br />";}
            if($z==5){echo "Giovedì<br /><br />";}
            if($z==6){echo "Venerdì<br /><br />";}
    
             /* / Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
            
            /*
            * Cycle
            */
            function ciclo($col,$i){
                         if($col*==0){echo $i."S ";}
                        if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                        if($col*==2){echo $i."L ";}
                        if($col*==3){echo $i."M ";}
                        if($col*==4){echo $i."M ";}
                        if($col*==5){echo $i."G ";}
                        if($col*==6){echo $i."V ";}
            }
            
            
    
            for($mese=1;$mese<=12;$mese++){
                if($mese==1){
                    echo "Gennaio<br />";
    
                    for($i=1; $i<=31; $i++) {
                        $col*=$q%7;
                        $q+=1;
                        ciclo($col,$i);
                    }
    
                    echo "<br /><br />";
                }
                if($mese==2){
                    echo "Febbraio<br />";
                    if($anno % 4 == 0){
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    }else{
    
                        for($i=1; $i<=28; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    }                    
                    echo "<br /><br />";
                }
                if($mese==3){
                    echo "Marzo<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==4){
                    echo "Aprile<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                           ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==5){
                    echo "Maggio<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==6){
                    echo "Giugno<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==7){
                    echo "Luglio<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==8){
                    echo "Agosto<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==9){
                    echo "Settembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==10){
                    echo "Ottobre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==11){
                    echo "Novembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
                if($mese==12){
                    echo "Dicembre<br />";
    
                        for($i=1; $i<=29; $i++) {
                            $col*=$q%7;
                            $q+=1;
                            ciclo($col,$i);
                        }
    
                    echo "<br /><br />";
                }
            }        
        }            
      }else{
            $anno_corrente = date("Y");
            header("location: index.php?anno=".$anno_corrente);
    }
    

    ?>
    [/PHP]

    Ora però ancora non ci siamo.

    Dovresti riuscire a scrivere una sola volta anche il ciclo che lo contiene,
    quindi inbvece di ripetere if 12 volte, dovresti fare un ARRAY ed inserirlo dentro.

    santecaserio.altervista.org/wordpress/?p=92

    quindi l'array dovrebbe contenere ( 'gennaio' => 31, 'febbraio' => $dd_feb;(*) , 'marzo'=> 31 etc)

    (* metti un if a livello superiore)

    quindi alla fine di dovresti ritrovare solo con una cosa simile a

    [PHP] for($mese=1;$mese<=12;$mese++){

                    echo "$mese<br />";
    
                    for($i=1; $i<=$max_day; $i++) {
                        $col*=$q%7;
                        $q+=1;
                        ciclo($col,$i);
                    }
    
                    echo "<br /><br />";
                }[/PHP]
    

    attenzione alla variabile $max_day

    Dove vai a sostituire i valori prima dell'IF

    Spero di essermi spiegato bene 🙂


  • User Attivo

    Per farti l'esempio completo,
    anche se non dovrei (sarà mica un compito per la scuola? 😄 ),

    il codice finale (quasi) sarebbe:

    [PHP] <?php

    if (isset($_GET['anno'])){
        $anno = $_GET['anno'];
    
        if($anno < 1583){
            echo "Il calendario Greoriano inizia dal 1583";            
        }else{
    
            /* Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            echo $anno."<br /><br />";
    
            $g = 1;
            $m = 13;
            $a = $anno-1;
            $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4);
            $r = floor($a/100) - floor($a/400) - 2;
            $q = ($s - $r);
            $z = $q%7;
            echo "Il primo giorno dell'anno &egrave; : ";
    
            
            /*
            * Array dei Giorni
            */             
            $giorni_array = array(0=>'Sabato', 1=>'Domenica', 2=>'Luned&igrave;', 3=>'Marted&igrave;', 4=> 'Mercoled&igrave;', 5 =>'Gioved&igrave;' , 6 => 'Venerd&igrave;' ); 
    
    
            /*
            * Ciclo dei Giorni
            */
            foreach($giorni_array as $key=>$value){
                if ($key == $z) {
                    echo $value.' <br><br> ';
                }
            }        
            
    
             /* / Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
            
            /*
            * Ciclo dei Giorni
            */
            function ciclo($col,$i){
                        if($col*==0){echo $i."S ";}
                        if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                        if($col*==2){echo $i."L ";}
                        if($col*==3){echo $i."M ";}
                        if($col*==4){echo $i."M ";}
                        if($col*==5){echo $i."G ";}
                        if($col*==6){echo $i."V ";}
            }
            
            
            /*
            * Giorni di Febbraio - controllo se bisestile
            */
             if($anno % 4 == 0)
             {
                    $feb_day = 29;
              } 
              else 
              {
                  $feb_day = 28;
              }
    
            /*
            * Array dei Mesi - TODO: FINIRE LISTA MESI
            */             
            $mesi_array = array('Gennaio'=>31, 'Febbraio'=>$feb_day, 'Marzo'=>31); 
    
            
            /*
            * Ciclo dei Mesi
            */
            foreach($mesi_array as $key=>$value){
                echo 'Mese:'.$key.' - ';
    
                        for($i=1; $i<=$value; $i++) {
                        $col*=$q%7;
                        $q+=1;
                        ciclo($col,$i);
                    }
                    echo "<br /><br />";            
                
            }  
            
            
    }        
    

    }[/PHP]

    Manca ancora da fare l'ultimo array, quello della funzione ciclo()
    ma haui guà visto coem fare negli altri due array.

    Insomma come vedi c'è molta differnza di lunghezza fra il ptrimo codice postato e questo finale: ecco, l'biettivo di PHP è quello di riduree al minimo il codice,
    nel limite del comprensibile (e qui c'è OOP) e di non ripetere inutilmente porzioni di codice.

    Ricordati di finire l'array dei MESI.

    Spero di esserti stato di aiuto 😄


  • User Attivo

    ciao artigiani del web!

    funziona bene, posto il codice:

    [PHP]
    <?php ob_start() ?>
    <?php ini_set('display_errors','On'); error_reporting(E_ALL); ?>
    <!doctype html>
    <html class="no-js" lang="en">
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Foundation | Welcome</title>
    <link rel="stylesheet" href="css/foundation.css" />
    <script src="js/vendor/modernizr.js"></script>
    <link rel="stylesheet" href="css/app.css" />
    </head>
    <body>
    <?php
    if(isset($_GET['anno'])){
    $anno = $_GET['anno'];
    if($anno < 1583){
    echo "Il calendario Greoriano inizia dal 1583";
    }else{

            /* Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            echo "<div class='row'>";
            echo "<div class='small-12 medium-12 large-12 columns'>";
            echo "<h1>".$anno."</h1>";
            echo "</div>";
            echo "</div>";
            echo "<div class='row'>";
    
            $g = 1;
            $m = 13;
            $a = $anno-1;
            $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4);
            $r = floor($a/100) - floor($a/400) - 2;
            $q = ($s - $r);
            $z = $q%7;
    
            /* / Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            /* Funzione che cicla i giorni della settimana
            ---------------------------------------------------------------------- */
    
            function ciclo_giorni($col,$i){
                if($col*==0){echo $i."S </a>";}
                if($col*==1){echo $i."D </a>";}
                if($col*==2){echo $i."L </a>";}
                if($col*==3){echo $i."M </a>";}
                if($col*==4){echo $i."M </a>";}
                if($col*==5){echo $i."G </a>";}
                if($col*==6){echo $i."V </a>";}
            }
    
            /* / Funzione che cicla i giorni della settimana
            ---------------------------------------------------------------------- */
    
            /* Array dei giorni
            ---------------------------------------------------------------------- */
    
            $giorni_array = array(0=>'Sabato', 1=>'Domenica', 2=>'Luned&igrave;', 3=>'Marted&igrave;', 4=> 'Mercoled&igrave;', 5 =>'Gioved&igrave;' , 6 => 'Venerd&igrave;' ); 
    
            /*foreach($giorni_array as $key=>$value){
                if ($key == $z) {
                    echo $value.' <br><br> ';
                }
            } */  
    
            /* / Array dei giorni
            ---------------------------------------------------------------------- */
    
            /* Giorni di Febbraio
            ---------------------------------------------------------------------- */
    
            if($anno % 4 == 0){
                $feb_day = 29;
            }else{
                $feb_day = 28;
            }
    
            /* / Giorni di Febbraio
            ---------------------------------------------------------------------- */
    
            /* Array dei Mesi
            ---------------------------------------------------------------------- */
    
            $mesi_array = array('Gennaio'=>31, 'Febbraio'=>$feb_day, 'Marzo'=>31, 'Aprile'=>30, 'Maggio'=>31, 'Giugno'=>30, 'Luglio'=>31, 'Agosto'=>31, 'Settembre'=>30, 'Ottobre'=>31, 'Novembre'=>30, 'Dicembre'=>31); 
          
            foreach($mesi_array as $key=>$value){
                echo $key.'<br />';
                for($i=1; $i<=$value; $i++) {
                    $col*=$q%7;
                    $q+=1;
                    ciclo_giorni($col,$i);
                }
                echo "<br /><br />";            
            } 
    
            /* / Array dei Mesi
            ---------------------------------------------------------------------- */ 
    
            for($mese=1;$mese<=12;$mese++){          
                echo "$mese<br />";
                for($i=1; $i<=$max_day; $i++) {
                    $col*=$q%7;
                    $q+=1;
                    ciclo_giorni($col,$i);
                }
                echo "<br /><br />";
            }        
        }            
      }else{
        $anno_corrente = date("Y");
        header("location:index.php?anno=".$anno_corrente);
    }
    

    ?>
    </div>
    <script src="js/vendor/jquery.js"></script>
    <script src="js/foundation.min.js"></script>
    <script>
    $(document).foundation();
    </script>
    </body>
    </html>
    [/PHP]

    però alla fine ripete il codice e restituisce l'errore:

    Notice: Undefined variable: max_day in /Applications/MAMP/htdocs/cal/index.php on line **104

    **a cosa serve max_day?

    grazie mille per l'aiuto!
    non è per scuola cmq 😄 mi diletto col php a tempo perso!

    grazie ancora!
    saluti!


  • User Attivo

    Ciao,
    devi aver copiato male il codice (nel secondo esempio ho rifatto quella funzione usando altre variabili).

    Infatti c'è un ciclo foreach e non for.

    Te lo ri-posto:
    [PHP] <?php

    if (isset($_GET['anno'])){
        $anno = $_GET['anno'];
    
        if($anno < 1583){
            echo "Il calendario Greoriano inizia dal 1583";            
        }else{
    
            /* Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
    
            echo $anno."<br /><br />";
    
            $g = 1;
            $m = 13;
            $a = $anno-1;
            $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4);
            $r = floor($a/100) - floor($a/400) - 2;
            $q = ($s - $r);
            $z = $q%7;
            echo "Il primo giorno dell'anno &egrave; : ";
    
            
            /*
            * Array dei Giorni
            */             
            $giorni_array = array(0=>'Sabato', 1=>'Domenica', 2=>'Luned&igrave;', 3=>'Marted&igrave;', 4=> 'Mercoled&igrave;', 5 =>'Gioved&igrave;' , 6 => 'Venerd&igrave;' ); 
    
    
            /*
            * Ciclo dei Giorni
            */
            foreach($giorni_array as $key=>$value){
                if ($key == $z) {
                    echo $value.' <br><br> ';
                }
            }        
            
    
             /* / Primo giorno dell'anno: praestigiator.com/index.php?p=approfondimenti/2010/09/02/il_calendario_perpetuo_mentale
            ---------------------------------------------------------------------- */
            
            /*
            * Ciclo dei Giorni
            */
            function ciclo($col,$i){
                        if($col*==0){echo $i."S ";}
                        if($col*==1){echo "<span style='color:#f00'>".$i."D</span> ";}
                        if($col*==2){echo $i."L ";}
                        if($col*==3){echo $i."M ";}
                        if($col*==4){echo $i."M ";}
                        if($col*==5){echo $i."G ";}
                        if($col*==6){echo $i."V ";}
            }
            
            
            /*
            * Giorni di Febbraio - controllo se bisestile
            */
             if($anno % 4 == 0)
             {
                    $feb_day = 29;
              } 
              else 
              {
                  $feb_day = 28;
              }
    
            /*
            * Array dei Mesi - TODO: FINIRE LISTA MESI
            */             
            $mesi_array = array('Gennaio'=>31, 'Febbraio'=>$feb_day, 'Marzo'=>31); 
    
            
            /*
            * Ciclo dei Mesi
            */
            foreach($mesi_array as $key=>$value){
                echo 'Mese:'.$key.' - ';
    
                        for($i=1; $i<=$value; $i++) {
                        $col*=$q%7;
                        $q+=1;
                        ciclo($col,$i);
                    }
                    echo "<br /><br />";            
                
            }  
            
            
    }        
    

    }[/PHP]

    NOn ha senso mettere un ciclo for (for($mese=1;$mese<=12;$mese++)
    quando va da se che se un array contiene 12 elementi, basta ciclare questi 12 non c'è bisogno di numerarli con un for.

    Riguardati bene il codice.

    Se fossimo a scuola direi che non sei stato capace di copiare bene 😄

    Gh gh gh

    Fammi sapere!


  • User Attivo

    PS: usi Mac, uh ? :tongueout:


  • User Attivo

    ciao Artigiani del Web,

    grazie per le dritte funziona tutto, ho sbagliato io 😄

    sono un dilettante! Si uso Mac, come hai fatto a capirlo?

    grazie ancora
    buona giornata


  • User Attivo

    Senti ma...
    e se per ogni giorno volessi attaccarci un link di questo tipo:

    impegni.php?anno=$anno&mese=$mese&data=data&giorno=$giorno

    per scriverci degli impegni per poi memorizzarli in un db come faccio?

    ho provato a metterli all'interno della funzione ma da errore,

    probabilmente dovrebbero stare fuori?

    grazie ancora
    ciao!


  • User Attivo

    @enricocarli said:

    sono un dilettante! Si uso Mac, come hai fatto a capirlo?

    MAMP è solo su ambiente MAC 😉

    Se ti studi l'acronimo lo vedi. A differenza di LAMP, che invece si usa su LINUX.


  • User Attivo

    Devi fare altri due file, ad es.

    1. "addevent.php",

    dal calendario aggiungi un link del tipo <a href="addevent.php?data=XXXXX">AGGIUNGI EVENTO</a>

    Dentro questo file ci sarà una form che scrive nel database ad esempio
    campi: ID / TITOLO / DESCRIZIONE / DATA

    dove data potrebbe essere fornita dal _GET del link

    Dopodichè

    1. event.php

    sempre da calendario fai fare per ogni data una chiamata al database per vedere se per ogni giorno esiste un record nel database,
    se esiste scrive un link alla pagina "event.php" che invece pubblica i dati ( o se preferisci li pubblichi direttamente nel calendario senza pagina esterna)

    Potrebbe essere una cosa del genere, ad esempio.


  • User Attivo

    ciao Artigiani!

    ho tolto la funzione perchè mi faceva casino, ho fatto così:

    index.php
    [PHP]
    <script type="text/javascript" src="js/jquery-1.10.1.min.js"></script><script type="text/javascript" src="js/jquery.fancybox.js?v=2.1.5"></script><link rel="stylesheet" type="text/css" href="css/jquery.fancybox.css?v=2.1.5" media="screen" /><script type="text/javascript"> $(document).ready(function() { $('.fancybox').fancybox(); });</script><?php if (isset($_GET['anno'])){ $anno = $_GET['anno']; if($anno < 1583){ echo "Il calendario Greoriano inizia dal 1583"; }else{ echo $anno."<br /><br />"; $g = 1; $m = 13; $a = $anno-1; $s = $g + 2 * $m + floor((3*($m+1))/5) + $a + floor($a/4); $r = floor($a/100) - floor($a/400) - 2; $q = ($s - $r); $z = $q%7; $giorni_array = array(0=>'Sabato', 1=>'Domenica', 2=>'Lunedì;', 3=>'Martedì;', 4=> 'Mercoledì;', 5 =>'Giovedì;' , 6 => 'Venerdì;' ); if($anno % 4 == 0){ $feb_day = 29; }else{ $feb_day = 28; } $mesi_array = array('Gennaio'=>31, 'Febbraio'=>$feb_day, 'Marzo'=>31, 'Aprile'=>30, 'Maggio'=>31, 'Giugno'=>30, 'Luglio'=>31, 'Agosto'=>31, 'Settembre'=>30, 'Ottobre'=>31, 'Novembre'=>30, 'Dicembre'=>31); foreach($mesi_array as $key=>$value){ echo $key.' - '; for($i=1; $i<=$value; $i++) { $col*=$q%7; $q+=1; if($col*==0){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."S</a> ";} if($col*==1){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno" style="color:#f00">".$i."D</a> ";} if($col*==2){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."L</a> ";} if($col*==3){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."M</a> ";} if($col*==4){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."M</a> ";} if($col*==5){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."G</a> ";} if($col*==6){echo "<a class="fancybox fancybox.iframe" href="impegni.php?giorno=$col*&data=$i&mese=$key&anno=$anno">".$i."V</a> ";} } echo "<br /><br />"; } } } ?>[/PHP]

    impegni.php
    [PHP]
    <?php if($_GET['giorno']==0){echo "Sabato ";} if($_GET['giorno']==1){echo "Domenica ";} if($_GET['giorno']==2){echo "Lunedì ";} if($_GET['giorno']==3){echo "Martedì ";} if($_GET['giorno']==4){echo "Mercoledì ";} if($_GET['giorno']==5){echo "Giovedì ";} if($_GET['giorno']==6){echo "Venerdì ";} echo $_GET['data']." "; echo $_GET['mese']." "; echo $_GET['anno']." ";?>[/PHP]

    poi farò la parte del db.

    grazie mille ciao!


  • User Attivo

    Ok,
    ma per piacere fai un array anche su questa ultima parte di codice! 🙂

    Basta che copi quello che ho fatto io sopra.

    In generale, pensa sempre di avere 100 righe quando scrivi codice, non puoi fare 100 if .. il codice deve essere più pulito posibile 🙂

    Fammi sapere come lo riscrivi 🙂