Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Dominika Šulcová(dominiQa):20.1.2013 9:46

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
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 10:38

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):20.1.2013 10:48

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
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 10:58

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
20.1.2013 10:58
Avatar
Dominika Šulcová(dominiQa):20.1.2013 11:03

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
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 11:03

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):20.1.2013 11:06

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
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 11:11

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:20.1.2013 11:22

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
20.1.2013 11:22
Avatar
Odpovídá na Preedy
Dominika Šulcová(dominiQa):20.1.2013 11:31

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
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 11:57

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):20.1.2013 11:58

dobře zkusím to

Nahoru Odpovědět
20.1.2013 11:58
I ♥ nutella
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
matesax:20.1.2013 12:05

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 Hartinger
Vlastník
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Hartinger:20.1.2013 12:51

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
20.1.2013 12:51
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Dominika Šulcová(dominiQa):20.1.2013 13:04

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 Hartinger
Vlastník
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Hartinger:20.1.2013 16:44

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
You are the greatest project you will ever work on.
Avatar
Don
Člen
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
Don:20.1.2013 16:50

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):20.1.2013 16:55

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 Hartinger
Vlastník
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Hartinger:20.1.2013 17:00

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
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Dominika Šulcová(dominiQa):20.1.2013 17:03

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 Hartinger
Vlastník
Avatar
Odpovídá na Dominika Šulcová(dominiQa)
David Hartinger:20.1.2013 17:07

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

Nahoru Odpovědět
20.1.2013 17:07
You are the greatest project you will ever work on.
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:20.1.2013 18:43

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

 
Nahoru Odpovědět
20.1.2013 18:43
Avatar
matesax
Tvůrce
Avatar
Odpovídá na martinkobelka
matesax:20.1.2013 19:27

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

 
Nahoru Odpovědět
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.