Autor Zpráva
dragon124
Profil
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>
No, vím že bych měl používat SQL, mám tam chyby ve slovesech. Ideální to není, ale potřeboval bych něco co mě vyzkouší, až to bude, tak to dam na net.
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
Přijde mi to jednodušší, než synchronizovat pořadí řádků ve dvou souborech. Taky je možné mít soubory pojmenované jen tím slovesem, a seznam sloves by se získal jako seznam souborů (nap. scandir). Přičemž u sloves, z nichž se nezkouší, by třeba název souboru začínal podtržítkem -> už ve správci souborů / FTP by bylo hned vidět, ze kterých slovíček se může zkoušet.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0