Autor Zpráva
Mmarek9122
Profil
čaute ...
poterbujem zase pomôcť ale tento raz to je už vyhodnotenie. neviem ako ho presne spraviť. skúšal som cez funkciu for ale tak niečo tam šlo a niečo nie.
tu je tá kontrola
<?
for($i = 0; i <= count($_POST['otazka_id']); $i++){
$vyhodnoceni = mysql_query("SELECT spravna FROM ".TBL_QUESTIONS." WHERE id='".mysql_real_escape_string($_POST['otazka_id'][$i])."' ");
while($vyhodnotenie = mysql_fetch_assoc($vyhodnoceni)){ 

  if($_POST['odpoved'][$i] == $vyhodnotenie['spravna']) 
   echo "Na otázku ".$vyhodnotenie['id']." ste odpovedali správne."; 
  else 
   echo "Na otázku ".$vyhodnotenie['id']." jste odpovedali zle. Správna odpoveď: . Odpovedali ste: .";

}
}
?>

ale nenapadá ma ako spraviť to žeby mi ukázalo v % aký mám výsledok.
Vedeli by ste mi s tým pomôcť alebo niečo? alebo keď niekto by sa nudil tak či by mi to nespravil.
juriad
Profil
před 2. řádek přidej:
$pravnych = 0;
za 6. řádek přidej:
$spravnych++;
a celý blok zabal do složených závorek (obecně používej složené závorky u if a else vždy, ušetříš si spoustu problémů)
Za řádku 10 přídej:
echo "Správných odpovědí: ".$spravnych." (".($spravnych/count($_POST['otazka_id'])*100).")";

Rekapitulace: počítáš si počet správných odpovědí, nakonec je vydělíš počtem otázek
Rozmysli si situaci, když na nějakou otázku neodpoví??
Mmarek9122
Profil
okis dik ... už to ide ... a keď ten výsledok chcem hodiť do DB? počet percent bez toho aby som ešte niekde klikal?
juriad
Profil
tak za to přidáš ještě:
 mysql_query("INSERT INTO vysledky VALUES ($testovanaOsoba, $testId, $spravnych)");
nevím, jak máš navrženou databázi, mohlo by tě zajímat: aký zvolit typ a riešenie tabulky?
počet procent můžeš kdykoli později znovu vypočítat, počet správných odpovědí by byl zatížený chybou (desetinný počet procent)
Mmarek9122
Profil
okis diki...
funkciu na odosielanie mám
$database->query("INSERT INTO ".TBL_SCORE."(user,category,percent,time) VALUES('$session->username', '$vyhodnotenie['kategoria']', '$p', NOW())");

len kde ju mám vložiť?

a vzhľad kódu mám takýto:
<?php
$k=0;
for($i = 0; $i <= count($_POST['otazka_id']); $i++){
$vyhodnoceni = mysql_query("SELECT spravna FROM ".TBL_QUESTIONS." WHERE id='".mysql_real_escape_string($_POST['otazka_id'][$i])."' ");
while($vyhodnotenie = mysql_fetch_assoc($vyhodnoceni)){ 

  if($_POST['odpoved'][$i] == $vyhodnotenie['spravna'])
    {$k++; 
    $o++;}
   else
    {$o++;}
 

}
}
$p = ($k/$o)*100;
echo "Odpovedali ste správne na <b><u>".$k."</u></b> otázok a získali ste <b><u>".$p."</u></b> percent";


?>
juriad
Profil
kamkoli za 16. řádek, tam už znáš všechny informace
a co kdyby sis to zkusil??
Mmarek9122
Profil
no ja som to skúsil ale vyhadzuje mi chybu ...

<?php
$k=0;
for($i = 0; $i <= count($_POST['otazka_id']); $i++){
$vyhodnoceni = mysql_query("SELECT spravna FROM ".TBL_QUESTIONS." WHERE id='".mysql_real_escape_string($_POST['otazka_id'][$i])."' ");
while($vyhodnotenie = mysql_fetch_assoc($vyhodnoceni)){ 

  if($_POST['odpoved'][$i] == $vyhodnotenie['spravna'])
    {$k++; 
    $o++;}
   else
    {$o++;}
 

}
}
$p = ($k/$o)*100;
echo "Odpovedali ste správne na <b><u>".$k."</u></b> otázok a získali ste <b><u>".$p."</u></b> percent";
$database->query("INSERT INTO ".TBL_SCORE."(user,category,percent,time) VALUES('$session->username', '$vyhodnotenie['kategoria']', '$p', NOW())");

?>

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/users/marekpal/socka.6f.sk/web/kontrola.php on line 95
juriad
Profil
použij jen '$vyhodnotenie[kategoria]' bez "vnitřních apostrofů": uvnitř stringu přistupuješ k prvkům pole hranatými závorkami, ale index (klíč) už neuvozuješ
http://php.net/manual/en/language.types.string.php#language.types.string.parsing
Mmarek9122
Profil
no dobre už chybu nevypíše ale ani neodošle do DB ...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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