Autor | Zpráva | ||
---|---|---|---|
dragon124 Profil |
#1 · Zasláno: 6. 12. 2012, 19:12:16
Dobrý den,
Asi se mi podařilo narazit na docela velkej problém, Již jsem se na tento program. Jde o program který mě vyzkouší z francouzkých nepravidelných sloves. Nyní to dělá to, že to v souboru seznam.sloves najde seznam sloves a v zkouset.bool, zda se mají jednotlivá slovesa zkoušet - 1 - sloveso se zkoušet bude. 2 - sloveso se zkoušet nebude. Takto to načte jména souborů a poté to soubor otevře a jednoduše to z něj vyzkouší. kód <html> <head> <meta charset="utf-8"> </head> <style> *{font-family:verdanam,"Times New Roman",Georgia,Serif} </style> <?php $a = 0; $d = 0; $sloveso=array(); $plnenisnum=2; $plnenispoint=fopen("seznam.sloves","r"); $plneniboolpoint=fopen("zkouset.bool","r"); $d=0; while($plnenisnum>0) { $sloveso[0][$d]=trim(fgets($plnenispoint)); $d++; $plnenisnum--; } fclose($plnenispoint); $d=0; $plnenisnum=2; while($plnenisnum>0) { $sloveso[1][$d]=trim(fgets($plneniboolpoint)); $d++; $plnenisnum--; } fclose($plneniboolpoint); do { $b=rand(0,1); } while($sloveso[1][$b]==0); function nahraj_preklady(array &$cz,array &$fr,&$ctr,array &$slovesos,&$c){ echo $slovesos[0][$c].".jj"; $cjf=fopen($slovesos[0][$c].".cj","r"); $fjf=fopen($slovesos[0][$c].".fj","r"); while(!feof($cjf)&&!feof($fjf)){ $cesky=trim(fgets($cjf)); if($cesky!=""){ $francuzsky=trim(fgets($fjf)); $cz[$ctr]=$cesky; $fr[$ctr]=$francuzsky; $ctr++; } } fclose($cjf); fclose($fjf); } function patchni_otazku(&$_otazka,&$qid,$cz,$fr,$max){ if(strlen($_otazka)==0){ $qid=rand(0,$max); $_otazka=$cz[$qid]; if(strlen($_otazka)==0) patchni_otazku($_otazka,$qid,$cz,$fr,$max); } } $max=0; $cz=array(); $fr=array(); nahraj_preklady($cz,$fr,$max,$sloveso,$b); $dobre=0; $spatne=0; $qid=rand(0,$max); $_otazka=$cz[$qid]; echo $_otazka[$qid]; echo $fr[$qid]; /*patchni_otazku: //PHP 5.3.0 iba!!! if(strlen($_otazka)==0){ $qid=rand(0,$max); $_otazka=$cz[$qid]; if(strlen($_otazka)==0) //goto patchni_otazku; }*/ patchni_otazku($_otazka,$qid,$cz,$fr,$max); //PHP_VERSION<5.3.0 echo "<form method='post'>Jak se francouzky řekne: $_otazka?<br>"; echo "<input type='text' name='odpoved'>"; echo "<input type='submit' name='submit'><br>"; if($_POST["submit"]){ $otazka=$_POST["otazka"]; $dobre=$_POST["dobre"]; $spatne=$_POST["spatne"]; $odpoved=$_POST["odpoved"]; if($fr[$otazka]==$odpoved){ echo "Správně!<br>"; echo $fr[$qid]; $dobre++; } else { echo "špatně! správná odpověď je $fr[$otazka]<br>"; echo $fr[$qid]; $spatne++; } } echo "<input type='hidden' name='dobre' value='$dobre'>"; echo "<input type='hidden' name='spatne' value='$spatne'>"; echo "<input type='hidden' name='otazka' value='$qid'></form>"; echo "Dobre: $dobre, spatne: $spatne<br>"; ?> </html> Problém je v tom že: zatím to zkouší pouze ze dvou sloves - etre a avoire. No, napíše to něco z etre, třeba já jsem (je suis) a já to správně napíši. Pak si to řekne, z jakého slovesa mě to vyzkouší příště. Pokud si to zase vybere etre, tak je vše vpohodě, ale pokud avoire, tak mi to vyhodí chybu, že správně je to j'ai - což znamená já mám. Takže to výsledek porovnává se stejným tvarem (řádkem souboru) dalšího slovesa. Tuším, že problém je v tom, že to testuji na sloveso které je nyní a né předtím. Jak program funguje se můžete podívat zde. Dostanete se i k jednotlivým souborům a to tak, že za lomítko vložíte jeho název. Vůbec netuším co s tím mám dělat... Prosím poraďte, co s tím... |
||
Tori Profil |
Použijte session: Načtete ze souborů otázku i odpověď, odpověď uložíte do session a otázku zobrazíte. Po odeslání formuláře zkontrolujete zadanou hodnotu proti té v session, při načtení dalšího páru ot.+odp. hodnotu v session přepíšete tou novou.
Nezapomeňte dát session_start() úplně na začátek tohoto skriptu, před jakýkoli jiný výstup (např. HTML nebo i jen prázdné řádky budou vyhazovat chyby).
P.S.: Možná příště raději nejdřív popište problém, a až za to dejte ten kilometr kódu - dostanete odpověď dřív. :) Jinak jak se vám s těmi datovými soubory pracuje? Nebylo by trochu pohodlnější třeba sloučit češtinu i franštinu dohromady s nějakým oddělovačem, například soubor avoire: já mám: j'ai ty máš: tu ast on má: il a ona má: elle a |
||
Časová prodleva: 13 let
|
0