Autor Zpráva
Atropos
Profil
už týden nemohu vyřešit tento problém,vytvořil jsem si php skript který chci aby vypočítal součet položek v databázi suma
a následně tuto hodnotu odečet od položek vyplaty asi takto vyplata A+vyplata B -soucet sum vse je uz videt v kodu
include "spojeni_db.php";
$query="SELECT SUM(suma) AS celkem FROM cerven";
$result=mysql_query($query,$link) or die ("SQL dotaz nešlo provést");
while($row=mysql_fetch_array($result))
echo $row["celkem"];
mysql_free_result($result);
mysql_close();
//soucet výplat               
include "vyplata_formular.html";
$stepan=$_POST["ste"];//hodnota z formulare
$nora=$_POST["nor"];
$vysledek=$ste+$nor-$row["celkem"];
echo $vysledek;
soucet a zobrazení položek sum je uplně v pořádku,problém je na konci skriptu sectou se mně pouze proměnné stepan a nora ale hodnota $row["celkem"]se proste neodecte at delám co dělám pouze se sectou a zobrazí jen ti dvě hodnoty $stepan a $nora děkuji moc za případnou pomoc.
ts_istudio
Profil
A je na tom 12. řádku v $row["celkem"] ještě něco? Ne-li, pod 5. řádek bych si tu hodnotu dal do nějaké pomocné proměnné, která to udrží.
Tori
Profil
Atropos:
Chyba je v tom while, neuvědomil jste si, jak funguje řádek 4:
Nejdřív se zpracuje výraz (tedy $row=mysql_fetch_array($result)). Pokud výsledek (tedy hodnota $row) je true, provede se tělo cyklu (to echo). Při prvním volání mysql_fetch_* vrátí pole dat s tou sumou, výsledek se vyhodnotí jako true a provede se echo. Při _druhém_ volání vrátí false, protože už nejsou žádná data z DB, a echo se neprovede. Ale v proměnné $row už zůstane uložené to false z druhého volání.

Takže řešení je: Pokud dotaz vrací max. jeden řádek dat, nepoužívejte vůbec cyklus, ale jen mysql_fetch*.

edit: Když se vám neodečítá něco, co by mělo, vypište si, co ta proměnná vlastně obsahuje (var_dump). I když jste si jistý, že to bude správně.

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: