Autor | Zpráva | ||
---|---|---|---|
Atropos Profil |
#1 · Zasláno: 23. 5. 2013, 22:01:06
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; $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 |
#2 · Zasláno: 23. 5. 2013, 22:05:31
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ě. |
||
Časová prodleva: 11 let
|
0