Diskuze: php - kdo chce být milionář

PHP PHP php - kdo chce být milionář American English version English version

Avatar
Dominika Šulcová(dominiQa):

ahoj, ve škole děláme hru kdo chce být milionář. Hra by měla mít alespoň 10 otázek a tak jsem udělala 10x form a pokaždý jiné odpovědi a parametry, funguje to,ale učitelka říkala že jde udělat jenom jeden formulář a přes require to vkládat na stránku a zároveň měnit otázky a odpovědi. Já ale nevím jak na to. Poradil by jste mi někdo prosím jak na to?:)

Odpovědět 20.1.2013 9:46
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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...

Editováno 20.1.2013 10:40
 
Nahoru Odpovědět 20.1.2013 10:38
Avatar
Dominika Šulcová(dominiQa):

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?

Nahoru Odpovědět 20.1.2013 10:48
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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... :)

Editováno 20.1.2013 11:00
 
Nahoru Odpovědět  +1 20.1.2013 10:58
Avatar
Dominika Šulcová(dominiQa):

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

Nahoru Odpovědět 20.1.2013 11:03
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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...

Editováno 20.1.2013 11:07
 
Nahoru Odpovědět 20.1.2013 11:03
Avatar
Dominika Šulcová(dominiQa):

jo to tam nechce, klidně muzu mit rovnou všechny otázky na stránce

Nahoru Odpovědět 20.1.2013 11:06
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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íš.

Editováno 20.1.2013 11:13
 
Nahoru Odpovědět 20.1.2013 11:11
Avatar
Preedy
Člen
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
Preedy:

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

 
Nahoru Odpovědět  +1 20.1.2013 11:22
Avatar
Odpovídá na Preedy
Dominika Šulcová(dominiQa):

ano, asi takhle bych si to představovala, ale to matesoxovo je taky dobré ale přijde mi moc složité :/

Nahoru Odpovědět 20.1.2013 11:31
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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.

Editováno 20.1.2013 11:57
 
Nahoru Odpovědět 20.1.2013 11:57
Avatar
Dominika Šulcová(dominiQa):

dobře zkusím to

Nahoru Odpovědět 20.1.2013 11:58
I ♥ nutella
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:

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...

Editováno 20.1.2013 12:06
 
Nahoru Odpovědět 20.1.2013 12:05
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Čápka:

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.

Nahoru Odpovědět  +2 20.1.2013 12:51
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Dominika Šulcová(dominiQa):

dobře a jde nějak dát form do php jak navrhoval preedy?

Nahoru Odpovědět 20.1.2013 13:04
I ♥ nutella
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Čápka:

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.

Nahoru Odpovědět 20.1.2013 16:44
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Don
Člen
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
Don:

Nejspíše myslíš něco takovýhohle.

echo("<form method=\"post\">
<input....
</form>");
 
Nahoru Odpovědět 20.1.2013 16:50
Avatar
Odpovídá na Don
Dominika Šulcová(dominiQa):

ano přesně tohle, s tim že v php kodu bude for kterej vytvoří tech 10 formularu

Editováno 20.1.2013 16:56
Nahoru Odpovědět 20.1.2013 16:55
I ♥ nutella
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Čápka:

Asi myslíš jeden formulář s deseti otázkami. A v milionáři se zobrazovala vždy jen jedna, ne?

Nahoru Odpovědět 20.1.2013 17:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Dominika Šulcová(dominiQa):

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

Editováno 20.1.2013 17:05
Nahoru Odpovědět 20.1.2013 17:03
I ♥ nutella
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Čápka:

Potom si připrav pole s otázkami a pomocí cyklu ho vypiš jako formulář.

Nahoru Odpovědět 20.1.2013 17:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

Databází neumíš? Pomohlo by to.

 
Nahoru Odpovědět 20.1.2013 18:43
Avatar
matesax
Redaktor
Avatar
Odpovídá na martinkobelka
matesax:

A já jsem moc náročný... :)

 
Nahoru Odpovědět  +1 20.1.2013 19:27
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 23 zpráv z 23.