Autor | Zpráva | ||
---|---|---|---|
dragon124 Profil |
#1 · Zasláno: 25. 11. 2012, 16:56:01
Dobrý den,
Pro zábavu programuji webovou aplikaci v PHP, která Vás vyzkouší z Francouzkých nepravidelných sloves. Již jsem se tu na ni ptal a proto bych chtěl poděkovat všem, co mi poradily. Momentálně mám problém s tím, že to správně napíše - pro příklad - "Já jsem", ale pak mi to řekne "Spatně, správně je to ils sont" (například, v překladu znamená oni jsou). Ještě k tomu se mi to hned poté zeptá na na oni jsou. Jako kdyby byla ta proměnná s francouskou verzí slovesa nějak napřed (nebo česká pozadu). Pro ty, co neumí francouzky je: ja jsem - je suis ty jsi - tu est on je - il es ona je elle es my jsme - nout sommes vy jste - vous etes oni jsou - ils sont Tich dvou čísel si nevšímejte. odkaz na to je http://fj.tuxpages.cz na uložená slovesa česky zde a francousky zde zdroják je: <html> <head> </head> <body> <?php $a=rand(1,8); echo $a; echo $a; $b=$a; $filecj = fopen("etre.cj", "r"); while($a>0){ if($a==1) { $cj = trim(fgets($filecj)); goto koneccj; }else { fgets($filecj); } $a--; } koneccj: fclose($filecj); $filefj = fopen("etre.fj", "r"); while($a>0){ if($b==1) { $fj = trim(fgets($filefj)); goto konecfj; }else{ fgets($filefj); } $b--; } konecfj: fclose($filefj); echo $cj; echo "<form method='POST'><input type='text' name='odpoved' /><input type='submit' /></form>"; $spravne=0; $spatne=0; if(isset($_POST["odpoved"])){ if($_POST["odpoved"] == $fj) { echo "spravne"; $spravne++; }else { echo "spatne, spravne je to ".$fj.".<br>"; $spatne++; }} echo "mate spatne $spatne , dobre $spravne"; ?> </body> </html> Předem děkuji za všechny odpovědi... |
||
yFang Profil |
#2 · Zasláno: 25. 11. 2012, 18:13:48
Podle mě je chyba v tom, že to kontroluje s tím aktuálně vygenerovaným a ne s tím předchozím, nebo tam snad někde předáváš, na co ses ptal?
Jinak echo "mate spatne $spatne , dobre $spravne"; ti vypíše vždycky maximálně 1, protože to nijak nepřádáváš dál. Pro každé načtení stránky (= odeslání formuláře) probíhá celý skript nanovo.
goto konecfj; zkus se podívat, co dělá příkaz break, tohle je docela dost prasárna.
|
||
SeparateSK Profil |
Skús predávať ID otázky v input type hidden, aby si script pamätal aká bola naposledy položená otázka.
Inak smola, že goto je iba od 5.3.0. Inak takto to bude o niečo ľahšie, lebo to načíta toľko otázok, koľko riadkov je v súbore etre.cj: <html> <style> *{font-family:verdana} </style> <?php function nahraj_preklady(array &$cz,array &$fr,&$ctr){ $cjf=fopen("etre.cj","r"); $fjf=fopen("etre.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); $dobre=0; $zle=0; $qid=rand(0,$max); $_otazka=$cz[$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'>Ako sa po francuzsky povie: $_otazka?<br>"; echo "<input type='text' name='odpoved'>"; echo "<input type='submit' name='submit'><br>"; if($_POST["submit"]){ $otazka=$_POST["otazka"]; $dobre=$_POST["dobre"]; $zle=$_POST["zle"]; $odpoved=$_POST["odpoved"]; if($fr[$otazka]==$odpoved){ echo "Spravne!<br>"; $dobre++; } else { echo "Zle! Spravna odpoved je $fr[$otazka]<br>"; $zle++; } } echo "<input type='hidden' name='dobre' value='$dobre'>"; echo "<input type='hidden' name='zle' value='$zle'>"; echo "<input type='hidden' name='otazka' value='$qid'></form>"; echo "Dobre: $dobre,zle: $zle<br>"; ?> </html> array &$cz,array &$fr,&$ctr , to je referencia na premennú, bez toho by sa vo funkcií vytvorili celkom iné premenné(teda na inej adrese), toto rovno mení premennú, ktorú predáš v parametroch. Hodí sa to najmä vtedy, keď chceš aby ti funkcia vrátila viac ako 1 hodnotu (takto dokáže meniť premenné, ktoré predáš v parametroch :) ).
|
||
preca1 Profil |
#4 · Zasláno: 25. 11. 2012, 19:40:41
dragon124:
Doporučení: prvně se nauč česky a pak až se pusť na jinej jazyk. Doporučení 2: prvně se nauč cizí jazyk a pak až začni dělat nějaké výukové materiály. Správně to je 1: je suis 2: tu es 3: il/elle est 1: nous sommes 2: vous êtes 3: ils/elles sont |
||
Časová prodleva: 11 let
|
0