
Výpočet procent v PHP
Ukládám výsledky testu a ty potom vypisuji
$vse = mysql_query("SELECT * FROM test_iq");
echo "Test byl vyplněn celkem: " . mysql_num_rows($vse) . "x\n";
while ($row = mysql_fetch_assoc($vse)) {
// zpracování tabulky
}
mysql_free_result($vse);
echo "<br><br>";
$dobre = mysql_query("SELECT * FROM test_iq WHERE jjj like 'zaj%'") or die(mysql_error());
echo "Z toho správně pouze: " . mysql_num_rows($dobre) . "x\n";
Líbil by se mi ještě výpočet v procentech. Tak jsem přidal
$jedno = $vse / 100;
echo "jedno % = $jedno";
echo "<br><br>";
$procenta = $dobre / $jedno;
echo "To je $procenta %";
a leze mi z toho:
Test byl vyplněn celkem: 10x
Z toho správně pouze: 2x
jedno % = 0.05
To je 120 %
Z čehož jsem úplně jelen. Co dělám špatně?
Ve $vse a $dobre nemáš počet odpovědí, ale výsledek dotazu do databáze. Teprve pomocí mysql_num_rows() z toho výsledku získáš počet řádků.
Jo, už mě teď trklo, že musím udělat znovu dotaz. Teď mám
ale leze z toho
Nový dotaz rozhodně dělat nemusíš. A pořád děláš tu samou chybu - $jedno obsahuje výsledek dotazu, ne počet jeho řádků.
Si asi sedím na vedení. Když udělám výsledek dotazu/100, tak to píše úplné nesmysly
vypíše
No a to je právě ta chyba. Ty nechceš udělat "výsledek dotazu/100". Chceš udělat "počet řádků výsledku dotazu/100".
Aha, to netuším jak. Můžeš dát nápovědu 50/50?
Děkuji ti převelice za celé.
ovela lepsie by bolo namiesto pouzitia mysql_num_rows urobit uz priamo v selecte spocitanie pomocou COUNT. A potom cez mysql_fetch tu hodnotu precitat ako hocijaky iny stlpec.
Lebo takto sa zbytocne selectuju data a az nasledne sa zistuje pocet riadkov.
Je to ale najmensi problem co tu vidim.
Ten kod je dlhodobo neudrzovatelny. Ziadne OOP, pouzivanie deprecated funkcii (mysql namiesto PDO/mysqli), spagety kod, divna konvencia nazvov SQL objektov.
Díky za odpověď. Ona je to pouze taková srandička ve stylu "policejní test IQ".
Nic s tím dělat nehodlám. V podstatě se na těch výpočtech učím.
Můžeš si zkusit, udělal jsem tam i "teploměr".
test_IQ