ITnetwork Flashka zdarma C a C++ týden
Akce! Pouze tento týden sleva až 80 % na kurzy C++. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Matěj Zábojník:19. února 16:25

Ahoj, pokouším se vytvořit nějaký jednoduchý php kalendář a možností přidání události k určitému dni nebo propojení kalendáře s databází a načtení události z ní. Mám vytvořený jednoduchý kalendář, kde si můžu přepínat měsíce. Zasekl jsem se u přidávání těch událostí. Jestli máte někdo nějaký tip jak začít, byl bych rád, popřípadě jestli jdu celkově na ten kalendář správně. Dělám to prvně a dost funkcí jsem si hledal na internetu.

Zkusil jsem: Natavil jsem jednotlivé políčka kalendáře klikací a při kliknutí na vybraný datum jsem se snažil poslat si datum. Jenže tady nastal problém s funkcí $timestamp, kde po se mi po odeslání data přeformátoval kalendář (přeházely mi volné políčka v kalendáři, tudíž 1. den měsíce začínal jindy než měl.

Chci docílit: Mým cílem je, abych si mohl na vybraný den přidat událost, popřípadě načíst danou událost z databáze

Editováno 19. února 16:26
 
Odpovědět 19. února 16:25
Avatar
Tomáš Novotný:19. února 17:04

ahoj, asi jako nejjednodušší je přidat do prokliku odkaz na formulář (jiný php soubor) ve kterém vytvoříš událost
do odkazu si můžeš poslat v parametr den a ten se ti může předvyplnit do formulářového políčka datum...

napsal bych to v kódu, ale jsem lenivý to opisovat z tvého obrázku...

Nahoru Odpovědět 19. února 17:04
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Odpovídá na Tomáš Novotný
Matěj Zábojník:19. února 17:10

Kód je zde, moc by mi to pomohlo.

<?php
// nastaveni casoveho pasma
date_default_timezone_set('Europe/Prague');
// ym - rok, mesic - datum
if (isset($_GET['ym'])) {
    $ym = $_GET['ym'];
} else {
    // soucasny datum
    $ym = date('Y-m');
}
$timestamp = strtotime($ym . '-01');  // funkce ktera vypise pocet vterin od data 1. 1. 1970 (pocet vterin nastavi od aktulaniho roku, mesice a den nastavim jako 1.)
print $timestamp; //pouze zkouska jak to funguje
if ($timestamp === false) {
    $ym = date('Y-m');
    $timestamp = strtotime($ym . '-01');
}
// dnes (Formát:2019-08-8)
$dnes = date('Y-m-j');
// nadpis (Formát:August, 2019)
$nadpis = date('F, Y', $timestamp);
// odkazy na predchozi a nasledujici mesic
$predchozi = date('Y-m', strtotime('-1 month', $timestamp));
$nasledujici = date('Y-m', strtotime('+1 month', $timestamp));
// pocet dni v mesici (t = 28-31 dnu v mesici)
$pocetdnu = date('t', $timestamp);
// 1:Mon 2:Tue 3: Wed ... 7:Sun (N = kazdemu datu pripradi den)
$zacatekmesice = date('N', $timestamp);
// pole pro kalendar - tydny
$tydny = [];
$tyden = '';
// pridani prazdnych policek do kalendare
//bude pridavat prazdne policka po dobu ($zacatekmesice - 1), coz se v pripade unora 2019 rovna 4
$tyden .= str_repeat('<td></td>', $zacatekmesice - 1);


for ($den = 1; $den <= $pocetdnu; $den++, $zacatekmesice++) {
    $datum = $ym . '-' . $den;
    if ($dnes == $datum) {
        $tyden .= '<td class="today">';
        //print("\calendar.php?".$dnes);
    } else {
        $tyden .= '<td class="obsazeno"><a class="odkaz" href=calendar.php?>';
        $datum = $ym . '-' . $den;
    }
    $tyden .= $den . '</a></td>';
    // nedele nebo posledni den mesice
    if ($zacatekmesice % 7 == 0 || $den == $pocetdnu) {
        // posledni den mesice
        if ($den == $pocetdnu && $zacatekmesice % 7 != 0) {
            // prazdne bunky
            $tyden .= str_repeat('<td></td>', 7 - $zacatekmesice % 7);
        }
        $tydny[] = '<tr>' . $tyden . '</tr>';
        $tyden = '';
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP Calendar</title>
    <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
    <style>
        .container {
            font-family: 'Montserrat', sans-serif;
            /*text-align: center;*/
            margin-left: 20rem;
        }
        .list-inline {
            text-align: center;
            margin-bottom: 30px;
        }
        .title {
            font-weight: bold;
            font-size: 26px;
        }
        th {
            text-align: center;
        }
        td {
            height: 100px;
            width: 100px;
            text-align: center;

        }
        .obsazeno:hover{
            border: 1px solid black;
        }
        th:nth-of-type(6), td:nth-of-type(6) {
            color: blue;
        }
        th:nth-of-type(7), td:nth-of-type(7) {
            color: red;
        }
        .today {
            background-color: ghostwhite;
            border: 1px solid black;
        }
        .odkaz{
            text-decoration: none;
            color: black;
        }
        .odkaz:hover{

        }
    </style>
</head>
<body>
    <div class="kalendar">

        <span class="nadpis"><?= $nadpis; ?></span><br><!--mesic + rok-->
        <a href="?ym=<?= $predchozi; ?>">&lt; prev</a> <!--talcitko pro predchozi mesic-->
        <a href="?ym=<?= $nasledujici; ?>">next &gt;</a> <!--tlacitko pro nasledujici mesic-->
        <!--<p><a href="?ym=<?= $dnes; ?>">Today</a></p>-->
        <table>
            <thead>
                <tr>
                    <th>Monday</th>
                    <th>Tuesday</th>
                    <th>Wednesday</th>
                    <th>Thursday</th>
                    <th>Friday</th>
                    <th>Saturday</th>
                    <th>Sunday</th>
                </tr>
            </thead>
            <tbody>
                <?php
                    foreach ($tydny as $tyden) {
                         print $tyden;
                    }
                    ?>
            </tbody>
        </table>
    </div>
    <!--<div class="udalost">
        <?= $datum; ?>
    </div>-->
</body>
</html>
 
Nahoru Odpovědět 19. února 17:10
Avatar
Tomáš Novotný:19. února 17:36

mrkni zde https://tomas-novotny.eu/itnet/66094/ a pokud je to ono pošlu změny...

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 19. února 17:36
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Odpovídá na Tomáš Novotný
Matěj Zábojník:19. února 17:47

Ano něco takového jsem myslel.

 
Nahoru Odpovědět 19. února 17:47
Avatar
Odpovídá na Matěj Zábojník
Tomáš Novotný:19. února 17:54

ej, tu není možné přidat přílohu jinou než obrázkovou :-/ ti tam udělám odkaz někde.. si to stáhneš..

Nahoru Odpovědět 19. února 17:54
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Tomáš Novotný
David Jančík:19. února 18:46

Můžeš použít tlačítko Máš dlouhý zdroják? a vytvořit si soubory tam.

Nahoru Odpovědět 19. února 18:46
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Odpovídá na David Jančík
Tomáš Novotný:19. února 18:50

díky za info, na to jsem koukal, ale to mi přijde příliš složité ... takového klikání :-O

Nahoru Odpovědět 19. února 18:50
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Odpovídá na Tomáš Novotný
Matěj Zábojník:19. února 19:52

Jinak zatím moc děkuji!

 
Nahoru Odpovědět 19. února 19:52
Avatar
Matěj Zábojník:20. února 17:34

Trošku jsem si to upravil a zasekl jsem se na nějakém způsobu vypsání té vytvořené události do daného čtverečku tabulky kalendáře. Prostě bych chtěl, že když je daný den vytvořená nějaká událost, aby např. měl jinou barvu nebo něco takového. No a třeba po nakliknutí vypsat tu událost pod kalendář. Viděl jsem že to někde mají řešené JavaScriptem, ale v tom se vůbec neorientuju.. Zkusí mě prosím někdo navést? Nějak se s tím trápím... Zdroják kdyžtak poskytnu

 
Nahoru Odpovědět 20. února 17:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.