Diskuze: php - kdo chce být milionář
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 23 zpráv z 23.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ale ne - formulář má být na stránce jen jeden. Občas se vyskytne potřeba jich mít více, ale nemělo by se. Jenže udělat jich více než 2, tomu říkám prasárna... Formulář bude z logiky jeden - otázky se sice budou měnit, ale ne odpovědi - A/B/C/D...
Takže to bude formulář se čtyřmi inputy typu radiobutton. Není tu důvod AJAXU, či jiné vymoženosti, normálně odešleš formulář na server - nejlépe s číslem otázky - v hiddenu - a toto číslo inkriminuješ - najdeš-li pro něj otázku, odešleš ji - samozřejmě jen pokud bude ta předchozí správně - jinak číslo otázky vynuluješ. Pro každé číslo otázky bude buď patřit určitý seznam otázek - a z něj se bude vybírat randomem, nebo si udělej nějaký svůj systém...
Dalo by se číslo otázky posílat i přes QueryString - ale nač...
<form action="/" method="post">
<intput id="A" type="radio" name="result"/>
<intput id="B" type="radio" name="result"/>
<intput id="C" type="radio" name="result"/>
<intput id="D" type="radio" name="result"/>
<hidden name="numberOfQuestion" value="xxx" />
</form>
PHP dáš dohromady spolu se zdejšími tutoriály...
díky ti, takže mi budou stačit dva soubory php? jeden kde bude stav hry další věci a druhý kde se bude po stisku na tlačítko odeslat měnit otázka?? ale to by chtělo asi session ne?
Co? 
Normálně jeden soubor PHP a jeden XML (v něm budou otázky). Hru bych právě vůbec neřešil na serveru - ale u klienta - proto se server absolutně nebude starat o klienta - jen mu na jeho odpověď odešle svoji. Při vstupu na stránku pošleš automaticky první otázku - udělal bych 2 čísla - číslo otázky jakožto levelu a 'číslo/jiné ID' přímo otázky, na kterou má uživatel odpovědět. Číslo otázky jakožto levelu bude sloužit k vybrání otázky v tomto levelu, ID otázky bude sloužit k nalezení správné odpovědi z XML souboru pro tuto otázku. Tím bude vše u klienta... Vše bych pojistil v noscript - jelikož JS budeš muset použít k automatickému odeslání formuláře. Takže v JS nastavíš timet na XY ms - a v jeho ticku bude odeslání formuláře:
document.getElementById('id formuláře').submit();
Co více řešit? 
Samozřejmě šlo by to i bez PHP - jenže na to již nebude třeba formuláře - to by byl nesmysl - jakmile po Vás chtějí formulář, bude se to řešit přes server...
Stisknutí tlačítka vůbec neřešíš - o to se postará input typu submit - sorry - na něj jsem zapomněl:
<form action="/" method="post">
<intput id="A" type="radio" name="result"/>
<intput id="B" type="radio" name="result"/>
<intput id="C" type="radio" name="result"/>
<intput id="D" type="radio" name="result"/>
<input type="hidden" name="numberOfQuestion" value="xxx" />
<input type="submit" value="Send">
</form>
Měl jsem špatne input typu hidden... 
tak to se mi dá nějaký složitý, učitelka říkala že je výhodné mít otázky v poli. xml neumim a js taky ne
Timer proto, jelikož je na každou otázku 30 sec. tuším... (V JS ukazuj hráči tento čas.) Vzhledem k tomu, že tu budou již 2 čísla - ID a číslo levelu, asi to spíše pošli přes QueryString...
Tak JS jsem ti poslal, timer ti tu také udělám:
window.onload = function() {
setInterval(sendForm, 30000);
}
function sendForm() {
document.getElementById('id formuláře').submit();
}
Otázky si měj kde chceš - ale XML je nejefektivnější možnost...
jo to tam nechce, klidně muzu mit rovnou všechny otázky na stránce
JS jsem ti poslal. S tím XML to alespoň zkus - jen jej v PHP přečteš - a pak v něm vyhledáš odpovědi...
QueryString postavíš v JS - tak, že za action přidáš ? a pak samotné proměnné a hodnoty:
ddd.action += '?level=' + numberOfLevel + 'separatorID=' + ID;
"separator" si zvol jako jakýkoliv znak, který v té URL nebude 100% použit... V PHP jej pak akorát doplníš.
no já bych zkusil udělat cyklus for a kterej by se opakoval tolikrát, kolik je otázek a pokaždy iteraci by se načtla jiná otázka. ale vzhledem k tomu že <form> nejde dát do <?php ?> tak moc nevím jak to realizovat
ano, asi takhle bych si to představovala, ale to matesoxovo je taky dobré ale přijde mi moc složité :/
Právě, že to vůbec není složité... 
Prostě - přijdeš na stránku a dostaneš novou hru - level 0. V JS se automaticky nastaví timer - šlo by to ještě vylepšit spuštěním hry až po kliknutí na tlačítko "Pause/Start" - a jak již název tohoto tlačítka napovídá, šlo by hru i pozastavit - tedy uložit aktuální stav odpočtu, vyčistit timer, a zatemnit herní obrazovku - pak zase vše rozjet.
Po odeslání formuláře se prvně podíváš do QueryStringu - kde
očekáváš ID otázky a číslo levelu. Tady mne teď napadlo, že když to
uděláš po mém - ke každému levelu určitý počet otázek, tak ti vlastně
bude stačit jen ID otázky - takže se zase můžeš vrátit k hiddenu...
Každopádně se podle tohoto
údaje podíváš do XML a porovnáš tamní odpověď a odpověď z
formuláře. No a pak buď pošleš znova level 0 - novou hru, nebo naopak
další level, + novou otázku.
dobře zkusím to
Jako ten server je tu úplně nesmyslný - jenže když to máte za úkol... Dělat to já - nemít za úkol odesílání formuláře - posílal bych na server jen skóre - a to jen pokud by se umístilo v top xy...
matesax zase radí začátečníkům věci, které nemohou umět. Otázky si dej hezky do pole a máš to vyřešené. Pole vypíšeš jednoduše podle indexu otázky.
dobře a jde nějak dát form do php jak navrhoval preedy?
Nejlepší by bylo, kdybys poslala co máš. Uděláš si pole v PHP a to naplníš otázkami. Otázce "jak dát form do PHP" nerozumím, PHP běží na serveru a jeho výstupem je HTML. Čili si form vypíšeš pomocí PHP.
Nejspíše myslíš něco takovýhohle.
echo("<form method=\"post\">
<input....
</form>");
ano přesně tohle, s tim že v php kodu bude for kterej vytvoří tech 10 formularu
Asi myslíš jeden formulář s deseti otázkami. A v milionáři se zobrazovala vždy jen jedna, ne?
učitelka řekla že by ji stačilo i všechny otázky najednou, pro začátek, takže všech 10 otázek najednou a pak jedno tl. odeslat
Potom si připrav pole s otázkami a pomocí cyklu ho vypiš jako formulář.
Databází neumíš? Pomohlo by to.
Zobrazeno 23 zpráv z 23.
