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.
Člen
Zobrazeno 23 zpráv z 23.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.