Diskuze: Odpočet času v souboru s PHP

PHP PHP Odpočet času v souboru s PHP American English version English version

Avatar
Marek Vach
Člen
Avatar
Marek Vach:

Zdravím,
potřeboval bych od vás pomoct s vložením javascriptu do php souboru.

Na internetu jsem si našel perfektní countdown, který umí skloňovat česká slova. Pro začátek bych chtěl zkusit pracovat s tímto. Nalezený zdrojový kód i s funkční ukázkou je zde: http://kod.djpw.cz/xby

V ideálním případě bych chtěl tu hromadu javascriptu dát to externího souboru a ten vkládat do mého kódu pomocí include_once "count-down.php";

Můj soubor count-down.php

<?php
?>
<script>
var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
/*Dál kód pokračuje stejně jako v odkazu */
</script>

Soubor kamzici-ukoly.php

<?php
public function countDown() {
  $content .= 'Následující odpočet bude počítat do data 24. 12. 2063 <br>';
  include_once "count-down.php";
  $content .= '<p id="odpocet" data-konec="05/12/2015 00:00:00" data-hlaska="Čas
               vypršel!" data-zbyva="Do odpočtu zbývá:"></p>
                 <script>
                      odpocet(document.getElementById(\'odpocet\'));
                 </script>';
  return $content;
}

Jedna věc co mě zaráží a nevím proč to tak je - když vypíšu kód do HTML

<p id="odpocet" data-konec="05/12/2015 00:00:00" data-hlaska="Čas vypršel!" data-zbyva="Do odpočtu zbývá:"></p>

tak na výstupu by se mělo ukázat "Do odpočtu zbývá:", nemám pravdu? Nic se ale nevypisuje...jsem z toho jelen :D

Jsem ochotný použít i jiný program na countdown, má-li jej už někdo vypracovaný a bude pro něj jednodušší jej zkopírovat.

Editováno 9.5.2015 23:59
 
Odpovědět 9.5.2015 23:56
Avatar
Ori
Člen
Avatar
Odpovídá na Marek Vach
Ori:

na prácu s dátumom odporúčam http://momentjs.com/
a na obnovovanie, nejaký interval, alebo myslím že je na to rovno aj knižnica nejaká len si nespomeniem na jej názov

 
Nahoru Odpovědět 10.5.2015 14:29
Avatar
Lukáš Červený:
  1. Nevím, co tě na HTML výpisu udivuje :D
  2. Co, kdybys dal ten javascript do souboru třeba countdown.js a postupoval takhle:
$content .= 'Následující odpočet bude počítat do data 12. 5. 2015 <br>';
$content .= '<p id="odpocet" data-konec="05/12/2015 00:00:00" data-hlaska="Čas vypršel!" data-zbyva="Do odpočtu zbývá:"></p>';
$content .= '<script src="cesta/k/countdown.js"></script>';
$content .= '<script>odpocet(document.getElementById("odpocet"));</script>';
Editováno 10.5.2015 14:31
 
Nahoru Odpovědět 10.5.2015 14:30
Avatar
Marek Vach
Člen
Avatar
Odpovídá na Lukáš Červený
Marek Vach:

Ori: Díky za tip, jdu pročítat manuál a třeba se mi to zalíbí tak, že to budu do budoucna používat :-)

Lukáš Červený:
Celý javascript jsem hodil do jednoho souboru, formátování UTF-8 jako celý projekt. Javascript je ve stejné složce jako PHP soubor.
Ve výsledku se na výstupu nic neukázalo. Přikládám cestu k souboru.

$content .= '<script src="CountDown.js"></script>';
 
Nahoru Odpovědět 10.5.2015 18:54
Avatar
Odpovídá na Marek Vach
Lukáš Červený:

Jakým způsobem vypisuješ HTML kód? předpokládám, že echo $content. Pokud v HTML kódu vidíš, <script src...>, zkontroluj v prohlížeči, že se ho podařilo načíst.
(Prohlížeče mají různé debugovací funkce, ve firefoxu si např. můžu ve zdrojovém kódu zobrazit i kódy všech dodatečně načítaných souborů).

 
Nahoru Odpovědět 10.5.2015 21:20
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Marek Vach
Fredep:

Ahoj, podívej se na zdroják vygenerované stránky Ctrl+U, zda je zde vše v pořádku, jak má být. Poté si ještě ověř, zda v souboru CountDown.js již nemáš tagy <script>, je už to totiž js soubor, proto zde tyto tagy jsou zbytečné a způsobí ti nefunkčnost kódu.
Pokud je vše v pořádku zaměř se, jestli si neudělal někde překlep v názvu funkcí atd, popřípadě to zkus udělat nejprve bez php a poté postupně přidávej php kód. Bude to nějaká zbytečná chyba, které se všichni zasmějeme. ;)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 10.5.2015 22:50
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Marek Vach
Člen
Avatar
Marek Vach:

Jedná se o wordpressový plugin, takže já vytvořím funkci a jako return vrátím to, co bych normálně vypsisoval echem. V HTML kódu stránky se ty naše řádky ukazují -> to je asi odpověď na tvoji otázku.

Používám chrome a načtení javascriptového souboru se podle mě povedlo -> soubor se mi otevře, když kliknu na odkaz ve zdrojáku.
Pro ověření, kód se vypisuje na http://www.kamzici.g6.cz/ukoly/ , náš kód najdete podle "script src".

Po otevření javascriptového souboru na začátku ani na konci tag <script> není. V PHP chyba není, jen tam čistě vypisuji to, co má být jako HTML.

Nevím nevím, kéž bych uměl JS :D

 
Nahoru Odpovědět 10.5.2015 23:14
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Marek Vach
Fredep:

Jako první věc, které jsem si všiml je ta, že funkce odpocet, kterou voláš, neexistuje. Kód jsem ještě nezkoumal, ale podívej se, zda ty funkce nemáš přejmenované a zda je tam máš nakopírované z toho odkazu úplně všechny... http://kod.djpw.cz/xby

Nahoru Odpovědět 11.5.2015 7:08
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Marek Vach
Člen
Avatar
Marek Vach:

Fredep měl pravdu, špatně jsem to nakopíroval :D :D resp. jsem to kopíroval tolikrát, až jsem se někde překlikl a způsobilo to nefunkčnost kódu.

Druhou věcí, co jsem měl nejspíš špatně byl ten výpis do HTML. Nakonec jsem to udělal tou nejméně náročnou cestou. Celý Javascript jsem dal do proměnné $content, a ten celý jeden příkaz dal do druhého souboru, aby nezavazel. Soubor pak přikládám příkazem include_once.

Ve výsledku to vypadá takto:
Soubor count-down.php

<?php
// This file is importing javascript for coundown to file kamzici-ukoly.php
// Script is from http://jecas.cz/odpocitavani
$content .= '
<script>
var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
var den = hodina * 24;
/*Dál kód pokračuje stejně jako v odkazu */
';

a soubor kamzici-ukoly.php

include_once "count-down.php"; // $content .= javascript for countdown
$content .= '<div id="odpocet" data-konec="'.$expiration.'" data-hlaska="Čas k vyřešení šifry už uplynul!" data-zbyva="Tato šifra skončí za">Je třeba povolit javascript pro zobrazení odpočtu!</div>';
$content .= '<script>odpocet(document.getElementById(\'odpocet\'));</script>';
Editováno 11.5.2015 14:20
 
Nahoru Odpovědět 11.5.2015 14:18
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 9 zpráv z 9.