| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 28.06.2009 20:17 | |
|
Zdravím,
mám nákupný košík ako triedu. Na localhoste mi všetko funguje. ale na webe to robí problémy.
ak pridám do kosiku nejaky produkt, session vypada tak ako ma...
napr.
Kód: Array ( [cart] => Array ( [4] => Array ( [name] => Whatsup [variant] => 6×6 cm [count] => 2 [price] => 10 )
)
) ale ako nahle sa pokusim pridat iny produkt alebo prekliknem stranku, dostanem toto: Kód: Array ( [cart] => cart Object ( [show] => [cart] => cart Object ( [show] => [cart] => *RECURSION* [price] => 0 [count] => 0 )
[price] => 0 [count] => 0 )
) namiesto toho aby som dostal napr toto: Kód: Array ( [cart] => Array ( [4] => Array ( [name] => Whatsup [variant] => 6×6 cm [count] => 2 [price] => 10 ) [6] => Array ( [name] => Nothin [variant] => 6×6 cm [count] => 2 [price] => 10 )
)
) Ak odhlasim uzivatela (pokusam sa zmenit $_SESSION['user'] = 3) medzi tym (ina trieda) tak vlozi do sessions vsetky premenne v triede, teda ak mam: $trieda->Allow = 'all'; $trieda->Disallow = ''; $trieda->Logged = 0; $trieda->Failed = ''; vyzera session potom takto: Kód: Array ( [cart] => cart Object ( [show] => [cart] => cart Object ( [show] => [cart] => *RECURSION* [price] => 0 [count] => 0 )
[price] => 0 [count] => 0 )
[user] => user Object ( [Failed] => [Logged] => 0 [Disallow] => [Allow] => all )
)
Takze moje zhrnutie problemu: ono mi to do daneho prvku pola session vlozi vsetky premenne, ktore obsahuje trieda (asi ).. ale preco ? ked na localhoste mi vsetko slape tak ako ma...
tamto robi pri spustani pod php4... pod php5 je to trocha odlisne.. vypisuje
Fatal error: Cannot use object of type cart as array a stranku uz vobec nezobrazi, iba vypise array (aj ked ziadne print ani nic nedavam)
dakujem za kazdy zmysluplny prispevok a este viac za poskytnutie riesenia
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
niekde sa ti to evidentne cykli (index cart), takze by bolo asi vhodne hodit sem kod triedy nakupneho kosika...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 28.06.2009 21:24 | |
|
a ako to ze na localhostte sa to necyklilo?
Kód: class cart{ var $show; var $cart; var $price = 0; var $count = 0; function __construct(){ global $LANG; global $LINKS; if(empty($_SESSION['cart'])){ unset($_SESSION['cart']); } if(!isset($_SESSION['cart'])){ $this->show = '<tr class="cart"><td><ul><li>'.$LANG['{LANG_CARTEMPTY}'].'</li></ul></td></tr>'; }else{ foreach($_SESSION['cart'] as $id => $arr){ !! $this->price += $arr['price']*$arr['count']; !! $this->count += $arr['count']; } $this->show = $this->showitems().' | '.$this->price.' €'; } } function additem($id, $name, $variant, $count, $price){ if(isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id]['count'] += $count; }else{ $_SESSION['cart'][$id]['name'] = $name; $_SESSION['cart'][$id]['variant'] = $variant; $_SESSION['cart'][$id]['count'] = $count; $_SESSION['cart'][$id]['price'] = $price; } } function removeitem($id){ unset($_SESSION['cart'][$id]); } function showitems($type = 1){ global $LANG; $prepare = ''; if(isset($_SESSION['cart']) && !(count($_SESSION['cart']) == 0)){ if($type == 1){ foreach($_SESSION['cart'] as $id => $array){ !! $prepare.='<li><a href="?product='.tourl($array['name']).'">'.substr($array['name'], 0, 19).((strlen($array['name']) > 19) ? '...' : '').'</a> <b><span title="Cena za 1 kus je '.$array['price'].' €">'.($array['price']*$array['count']).' €</span> <a href="cart.php?remove='.$id.'">r</a></b></li>'; } }elseif($type==2){ foreach($_SESSION['cart'] as $id => $array){ !! $prepare.='dlhe riadky tabulky vyuzivam tu iba $array["name"], $array["count"] atd..'; } $prepare.='sum: '.$this->price.' | '.$this->count; } } return $prepare; } function setcount($id, $count){ if($count == 'up'){ $_SESSION['cart'][intval($id)]['count']++; }else{ $_SESSION['cart'][intval($id)]['count']--; if($_SESSION['cart'][intval($id)]['count'] == 0){ unset($_SESSION['cart'][intval($id)]); } } } }
dal som dva vykricniky na zaciatok riadkov na ktore vyhadzovalo ten error
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
emer píše: Takze moje zhrnutie problemu: ono mi to do daneho prvku pola session vlozi vsetky premenne, ktore obsahuje trieda (asi ).. ale preco ? ty vypisujes cely objekt, nie obsah $_SESSION, preto su tam aj premenne show, cart, price a count... aj ked nechapem, na co tam mas tu premennu cart, ked ju nikde v triede nepouzivas... emer píše: tamto robi pri spustani pod php4... pod php5 je to trocha odlisne..
php4 nepozna __construct(), takze mozno v tom bude problem... takto narychlo tam nevidim iny problem, co by tu chybu mohlo sposobovat...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 29.06.2009 12:45 | |
|
ale preco mi to zapisuje ten objekt to sessions ked to nikde nemam pisane ani nic?
tu premennu cart som pouzival najrpv ale potom som ju vypustil a nechal som ju na zaciatku.. ale to nie je problem, aj po odstraneni chyba pretrvava...
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
skusal som to doma na php5 a ziadnu chybu mi to nevypisovalo... ako pouzivas tu triedu, ako pridavas novy produkt? ten vypis pola, co si sem dal, si ako dosiahol? musel si predsa nieco vypisovat, co to bolo?
Naposledy upravil stenley dňa 29.06.2009 13:09, celkovo upravené 1
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 29.06.2009 13:08 | |
|
mne to tiez na pocitaci ide v poriadku...
Kód: $cart = new kosik; if(isset($_POST['additem'])){ $id = intval($_POST['variant']); $select = mysql_query("SELECT $SETTINGS[db_prefix]_variants.*, `$SETTINGS[db_prefix]_products`.`name` FROM $SETTINGS[db_prefix]_variants JOIN $SETTINGS[db_prefix]_products ON $SETTINGS[db_prefix]_products.id = $SETTINGS[db_prefix]_variants.product WHERE $SETTINGS[db_prefix]_variants.id = $id LIMIT 1"); echo mysql_error(); if(!(mysql_num_rows($select) == 0)){ while($r = mysql_fetch_array($select)){ $cart->additem($id, $r['name'], $r['variant'], intval($_POST['count']), $r['price']); } } } if(isset($_GET['remove'])){ if($_GET['remove'] == 'all'){ unset($_SESSION['cart']); }elseif(isset($_SESSION['cart'][int_val($_GET['remove'])])){ $cart->removeitem(intval($_GET['remove'])); } } if(isset($_GET['id']) && isset($_GET['count']) && ($_GET['count'] == 'up' || $_GET['count'] == 'down')){ $cart->setcount(intval($_GET['id']), intval($_GET['count'])); }
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
new kosik? nevola sa nahodou trieda cart?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 29.06.2009 13:14 | |
|
jaj hej, ale to nie je chyba.. ja som prepisoval nazov triedy potom ako som sem kopiroval tie kody
edit:: vyriesene - vypustil som triedu, srpavil som si to ako obycajne funkcie a vsetko je v poriadku
ale ajtak by ma zaujimalo rpeco zapisovalo cely objekt
Na localhoste to slo v poriadku a na hostingu (websupport) uz robilo problemy.. vysksuam na nejakom inom webhostingu co to spravi..
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
trosku som sa na to pozrel, ked si spomenul websupport... problem bude pravdepodobne v zapnutom register_globals... inak si to vysvetlit neviem... ak to nemas moznost vypnut, skus si tu premennu premenovat na nieco ine, ako pouzivas v SESSION, napr:
Kód: $kosik = new Cart; $kosik->additem(...); ...
a malo by to fungovat... este by nebolo od veci niekde deklarovat $_SESSION['cart'] = array();
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 29.06.2009 15:52 | |
|
ano, to som myslel aj ja... preto tie rozdielne nazvy "cart" a "kosik", na ktore si sa pytal..
teraz pozeram, regsiter_globals zapnute... neskor ako bude cas tak vyskusam ci to bude v poriadku, ked vypnem
_________________ Sorry za prelkepy |
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|