Autor Zpráva
lukasxxxk
Profil *
Dobrý den,

Dělám menší dotazník v php, otázky jsou čtené z DB a každá má 3 varianty odpovědi (A,B,C), v DB je uložena i hodnota správné odpovědi. Potřebuji udělat aby po odeslání stránky s odpověďmi na otázky se řekněme do nějakého počítadla za každou zprávnou odpověď přičetl jeden bod. Toto by problém nebyl, kdyby se otázky negenerovali náhodně, každá otázka má své ID, takže se asi bude muset pracovat nějak s ním, to je mi jasné, ale dál nevím jak vyřešit tento problém. Nějaký návrh?
okolojdouci
Profil *
lukasxxxk:
Toto by problém nebyl, kdyby se otázky negenerovali náhodně

Problém je přesně v čem? Otázky se mají generovat náhodně a negenerují, nebo naopak?
lukasxxxk
Profil *
Mají se generovat náhodně a generují se náhodně, ale nevím jak přesně po odeslání data zpracovat, když třeba na prvním místě je pokaždé jiná otázka, takže i jiná odpověď....
okolojdouci
Profil *
lukasxxxk:
nevím jak přesně po odeslání data zpracovat, když třeba na prvním místě je pokaždé jiná otázka

K identifikaci řádků v databázích se běžně používá sloupec s názvem ID a specificky nastaveným chováním (automaticky databází generované unikátní číslo)
lukasxxxk
Profil *
Jasný, to používám, s tím problém nemám, ale když je prostě na jedné stránce třeba 10 otázek na které návštěvník odpoví zaškrnutím odpovědi, tak nechápu jak to udělat aby to postupně porovnalo u všech otázek odpovědi a vypsalo to výsledný počet bodů...
okolojdouci
Profil *
lukasxxxk:
OK, takže co neumíš?

1. vytvořit formulář
2. vytvořit formulář s polem prvků
3. použít ve formuláři input hidden
4. načíst hodnoty z formuláře
5. porovnat dvě čísla
6. porovnat neznámý počet dvojic čísel
7. sečíst počet případů, kdy se dvojice čísel rovnají
lukasxxxk
Profil *
No řekněme dotaz k bodu 3.

Když input hidden dám name="IDOTAZKY" value="<? echo <?echo $zaznam["id"];?>" , tak po odeslání formuláře v "IDOTAZKY" zůstan akorád hodnota id z poslední otázky ne?

Takže mi není jasné jak nějak jednoduše přenést všechny id k porovnání..... Samozdřejmě že by to šlo udělat tako
$1 = $_POST['idprvniotazky']
$2 = $_POST['iddruheotazky']
$3 = $_POST['idtretiotazky']
..... a pak si postupně vytahat správné odpovědi a porovnat to, ale když budu mít těch otázek třeba 30 tak to bude hooodně dlouhý, určitě je nějaká jednodušší varianta ne?
okolojdouci
Profil *
lukasxxxk:

Vycházím z toho, že formulář vyrábíš v cyklu a odpovědi budeš vybírat pomocí <select>ů.
Pojmenuj si ty selecty třeba <select name="odpoved1234">, kde to 1234 bude ID, tato ID si uvnitř toho cyklu přilepuj do nějaké pomocné proměnné, aby ti z toho vyšlo něco jako "1234,1235,1240" a to předej hiddenem v tomtéž formuláři.
V té části, kde to chceš zpracovat, nejdřív rozsekej (explode) ten řetězec na jednotlivá ID a pak (foreach) načti hodnoty každého $_POST["odpoved1234"] - a máš z toho dvojice ID otázky a odpověď. Z toho udělej (pořád v tom foreachu) vždycky SELECT a když bude odpověď správná, přičti jedničku.
lukasxxxk
Profil *
Zkousím to nějak podle tohodle zrealizovat, ale nevim, zatím díky za rady ;)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0