IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Php Kalendár

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Matúš Petrofčík:22.11.2013 17:01

dobrý trololo keď som začal klikať po obrázku, nič sa nedialo :D

Odpovedať
22.11.2013 17:01
obsah kocky = r^2 ... a preto vlak drnká
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Matúš Petrofčík
David Hartinger:22.11.2013 17:29

Klikání na screenshot také většinou nic neudělá.

Odpovedať
22.11.2013 17:29
New kid back on the block with a R.I.P
Avatar
mkub
Tvůrce
Avatar
Odpovedá na Matúš Petrofčík
mkub:22.11.2013 17:51

ze? vypada, ako keby ten kalendar bol sucastou tej stranky :D

 
Odpovedať
22.11.2013 17:51
Avatar
Alex
Člen
Avatar
Alex:17.12.2016 13:39

Píše mi toto. Notice: Undefined offset: 1 in F:\Xampp\htdoc­s\Kalendar1\Ka­lendar.php on line 93

Notice: Undefined offset: 2 in F:\Xampp\htdoc­s\Kalendar1\Ka­lendar.php on line 93

Notice: Undefined offset: 3 in F:\Xampp\htdoc­s\Kalendar1\Ka­lendar.php on line 93

Notice: Undefined offset: 4 in F:\Xampp\htdoc­s\Kalendar1\Ka­lendar.php on line 93
Funguje, ale chybové hlášky trochu vadí

Editované 17.12.2016 13:40
 
Odpovedať
17.12.2016 13:39
Avatar
Odpovedá na Alex
Neaktivní uživatel:28.5.2017 11:30

Skus dat do souboru Kalendar.php tenhle kód (místo tamtoho):

<?php

class Kalendar {
    /*
     * promenná, do které se ukládá v konstruktoru první den zadaného měsíce v daném roce,
     * nebo první den aktuálního měsíce
     */
    private $datum;

    public function __construct()
    {

        // NEDEFINOVANY MESIC
        if (isset($_GET["mesic"]) != "true") {
                $amesic = Date("m");
                $_GET["mesic"] = $amesic;
        }

        // NEDEFINOVANY ROK
        if (isset($_GET["rok"]) != "true") {
                $arok = Date("Y");
                $_GET["rok"] = $arok;
        }


     $this->datum = ($_GET['mesic']&&$_GET['rok'])
             ? DateTime::createFromFormat('j-n-Y', '1-'.$_GET['mesic'].'-'.$_GET['rok'])
             : DateTime::createFromFormat('j', '1');
    }

    /*
     * funkce, která vrací pole posledních dnů předchozího měsíce, než který je
     * zadán, do prvního dne v prvním týdnů daného měsíce
     */
    private function  predchoziMesic()
    {
        $pocetDnu = $this->datum->format('N')-2;//kolik dnu je treba doplnit

        $predchozi = array();//pole ke vraceni
        for($i =$this->datum->modify('-1 month')->format('t') - $pocetDnu ;$i<=$this->datum->format('t');$i++ )
        {
            array_push($predchozi,'<del>'.$i.'</del>');
        }
        $this->datum->modify('+1 month');//kvuli poslednimu dnu predchozi mesice jsem snizil datum o jeden mesic, takze ho musim vratit zpet (reference)
        return $predchozi;
     }

     /*
     * funkce, která vrací pole prvních dnů dalšího měsíce (do konce posledního týdne
     * zadaného měsíce
     * bere hodnotu kolik dní je třeba vrátit
     */
    private function nadchazejiciMesic($kolikDni)
    {
       $nasledujici = array(); //pole ke vraceni
        for($i =1 ;$i<=$kolikDni;$i++ )
        {
            array_push($nasledujici,'<del>'.$i.'</del>');
        }
        return $nasledujici;
     }

     /*
      * vraci udaje do GET pro odkaz na předchozí nebo následující měsíc
      */
     private function odkazy()
    {
        $odkazy = array(); //pole ke vrácení
        if ($this->datum->format('n') >1){
            $odkazy[0] = $this->datum->format('n') -1;// předchozí měsíc
            $odkazy[1] = $this->datum->format('Y');//rok předchozího měsíce
        }
        else {
            $odkazy[0] = 12;// předchozí měsíc
            $odkazy[1] = $this->datum->format('Y')-1;//rok předchozího měsíce
        }

        if ($this->datum->format('n') <12){
            $odkazy[2] = $this->datum->format('n') +1;// následující měsíc
            $odkazy[3] = $this->datum->format('Y');//rok následujícího měsíce
        }
        else {
            $odkazy[2] = 1;// následující měsíc
            $odkazy[3] = $this->datum->format('Y')+1;//rok následujícího měsíce
        }
        return $odkazy;
    }
    /*
     *vrací měsíc česky
     */
    private function mesicCesky(){
        $mesice = array('leden', 'únor', 'březen', 'duben', 'květen', 'červen',
    'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
        return $mesice[$this->datum->format('n') - 1];
    }

    /*
     * funkce které to dává všechno dohromady, vkládá dny zadaného měsíce a taky zajišťuje výpis
     */
    public function zobraz(){
        $tabulka = array($this->predchoziMesic($this->datum));//vložení dnů předchozího měsíce

        //vkládání dnů do tabulky
        $den = 1;//počitají se a vypisují se přes něj dny měsíce
        for($i = 0; $den<= $this->datum->format('t'); $i++ )//počítadlo pro řádky v $tabulka
        {
                        echo ("<span style=\"display: none;\">");
            for($j = count($tabulka[$i]); $j <7&&$den<= $this->datum->format('t');$j++)//počítadlo pro sloupce v $tabulka, kontroluje, jestli už není poslední den
            {
                $tabulka[$i][$j] = $den++;//vpisuje den
            }
                        echo ("</span>");
        }

        //vkládá první dny následujícího měsíce
        $tabulka[count($tabulka)-1] = array_merge_recursive(
                $tabulka[count($tabulka)-1],
                $this->nadchazejiciMesic(7-count($tabulka[count($tabulka)-1])));

        //vytvoření matice kvuli vypisu
        $matice = new Matice($tabulka);
        $matice = $matice->doHtmlTabulky(FALSE);//vložení do proměnné hotový výstup těla tabulky
        $odkazy = $this->odkazy();//uložení hodnot odkazů
        $nadpis = $this->mesicCesky().' '.$this->datum->format('Y');//vytvoření nadpisu - měsíc a rok
        //formátování
        return <<<EOT
<table>
    <thead>
         <tr>
                <th><a href="index.php?mesic=$odkazy[0]&rok=$odkazy[1]"><</a></th>
                <th colspan="5">$nadpis</th>
                <th><a href="index.php?mesic=$odkazy[2]&rok=$odkazy[3]">></a></th>
         </tr>
         <tr>
                <th>Po</th>
                <th>Út</th>
                <th>St</th>
                <th>Čt</th>
                <th>Pá</th>
                <th>So</th>
                <th>Ne</th>
         </tr>
    </thead>
    <tbody>
         $matice
    </tbody>
 </table>

EOT;

}

    }

?>
Odpovedať
28.5.2017 11:30
Neaktivní uživatelský účet
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!