Autor | Zpráva | ||
---|---|---|---|
jarda-mb Profil * |
#1 · Zasláno: 9. 1. 2011, 22:38:43
Mám problém s následující funkcí, po jejím zavolání se obsah pole v db s údajem o počtu kusů zvýší o dvojnásobek hodnoty proměnné $pd_qty, stejná situace nastává při obou dotazech (UPDATE i INSERT), řeším to už nějakou dobu, asi se nad tím už nedokážu rozumně zamyslet, jakýkoliv nápad uvítám, díky
<?php # funkce pridani polozky nakupu do databaze function addToBasket() { # smazat prosle zaznamy deleteExpiredBasket(); # session_id aktualniho zakaznika $cc_session_id = session_id(); # promenne z formulare $pd_id = $_POST['pd_id']; # id produktu $pd_qty = $_POST['pd_qty']; # pocet ks produktu $ref_id = $_POST['ref_id']; # id referencni stranky if($pd_id == '' || $pd_qty == '' || $ref_id == '') { # chybi vystup z formulare, presmerujeme na vychozi stranku header("Location: ".$this->makeURL('shop', '', '')); exit; } $tbl = $this->db['dbase'].".".$this->db['prefix']."cart"; # pokud je $pd_qty mensi nez jedna, zobrazime hlasku a zastavime script if($pd_qty < 1) { $pd_err = "<div>\n Zadejte prosím množství v kladných hodnotách!<br />\n <a href='".$this->makeURL($ref_id, '', '')."'>Zpět</a>\n</div>\n"; return $pd_err; exit; } else { # existuje produkt s danym pd_id a session_id jiz v databazi? if(mysql_result(mysql_query("SELECT count(*) FROM $tbl WHERE $tbl.pd_id = $pd_id AND $tbl.cc_session_id = '$cc_session_id'"), 0)) { # pokud ano, navysime pocet kusu if(!mysql_query("UPDATE $tbl SET pd_qty = pd_qty+$pd_qty, c_date = ".time()." WHERE $tbl.pd_id = $pd_id AND $tbl.cc_session_id = '$cc_session_id'")) { $pd_err = "<div>\n Vyskytla se chyba při ukládání do DB!<br />\n ".mysql_error()."\n</div>\n"; return $pd_err; exit; } else { # vse probehlo v poradku, presmerujeme na vychozi stranku header("Location: ".$this->makeURL($ref_id, '', '')); } } else { # pokud ne, pridame novy zaznam if(!mysql_query("INSERT INTO $tbl (pd_id, pd_qty, cc_session_id, c_date) VALUES ('".$pd_id."', '".$pd_qty."', '".$cc_session_id."', '".time()."')")) { $pd_err = "<div>\n Vyskytla se chyba při ukládání do DB!<br />\n ".mysql_error()."\n</div>\n"; return $pd_err; exit; } else { # vse probehlo v poradku, presmerujeme na vychozi stranku header("Location: ".$this->makeURL($ref_id,'','')); } } } } ?> |
||
Alphard Profil |
#2 · Zasláno: 10. 1. 2011, 03:18:24
jarda-mb:
Nevoláte tu funkci třeba 2x po sobě? Pro testovací účely tam vložte exit (za dotaz na databázi) a spusťte akci.
|
||
jarda-mb Profil * |
#3 · Zasláno: 10. 1. 2011, 07:40:27
Alphard:
zkusím, zkoušel jsem místo dotazů do db jenom zobrazovat obsah proměnný $pd_qty, ale vždy to zobrazilo jenom to, co jsem zadal do formuláře... |
||
jarda-mb Profil * |
Alphard:
výborná práce, vyzkoušeno, vše funguje, díky moc, můžete to označit jako vyřešené Moderátor Alphard: "označit jako vyřešené" kéž by to šlo…
|
||
Časová prodleva: 13 let
|
0