Jump to content

Vásárló megtekintésnél hiba


szabolcs77
 Share

Recommended Posts

Van egy PrestaShop™ 1.5.6.0

A hiba akkor jön elő, ha egy vásárlóra kattintok. Eddig csak egy vásárlónál jött elő, a többinél gond nélkül megjeleníti az adatokat.

 

Ötlet, hogy ez mi lehet? Mit ellenőrizzek?

 

error_20131015.jpg

Share this post


Link to post
Share on other sites

Úgy látom másnak is van ezzel problémája:

http://www.prestashop.com/forums/topic/274207-erreur-invalid-product-vars/

 

Egészen érdekes. Nyilván történt valami szegény vásárlóval hogy erre a sorsra jutott.

 

Pillanatnyi megoldásnak jó az, hogy a 103-as piros sort kikommenteled. A probléma nem múlik el csak nem fog látszani.

Mindazonáltal érdemes meglépni hogy lásd, ha ki van kommentelve a hibagenerálás akkor megjeleníti-e a vásárlót, ha igen milyen adatokkal.

 

Ha kikommenteled és hibát jelez akkor adj be az else-ágnak valamilyen feladatot... például kikommentelés után tegyél be egy print-et egy karakterrel vagy készítsd egy változót, mindegy csak ne járjon üresben.

Edited by pattila01 (see edit history)

Share this post


Link to post
Share on other sites

köszönöm a gyors választ!

 

ha kikommentelem a hibát, akkor sem jeleníti meg a vásárló adatait.

valószínüleg nem a vásárlóval lesz a gond, mert ha a vásárló listába megyek a szerkesztésre, akkor az alap adatait felhozza gond nélkül, és azt szerkeszteni is tudom.

 

nézzem végig az összes kiirandó értéket, hogy kiderüljön hol fut hibára? elég sok rendelése volt, így ez időigényes, de ha nincs más lehetőség akkor természetesen megcsinálom

Úgy látom másnak is van ezzel problémája:

http://www.prestashop.com/forums/topic/274207-erreur-invalid-product-vars/

 

Egészen érdekes. Nyilván történt valami szegény vásárlóval hogy erre a sorsra jutott.

 

Pillanatnyi megoldásnak jó az, hogy a 103-as piros sort kikommenteled. A probléma nem múlik el csak nem fog látszani.

Mindazonáltal érdemes meglépni hogy lásd, ha ki van kommentelve a hibagenerálás akkor megjeleníti-e a vásárlót, ha igen milyen adatokkal.

 

Ha kikommenteled és hibát jelez akkor adj be az else-ágnak valamilyen feladatot... például kikommentelés után tegyél be egy print-et egy karakterrel vagy készítsd egy változót, mindegy csak ne járjon üresben.

Share this post


Link to post
Share on other sites

Tudhatom hogy ha kikommenteled a hibát, akkor mit jelenít meg? Bejön a felület csak nincsenek benne adatok? Vagy üres fehér képernyő?

Ha az utóbbi akkor megpróbálod bekapcsolni a developer módot config/defines.inc.php-ben? Hátha kiír valamit amin elindulhatunk.

Share this post


Link to post
Share on other sites

fehér képernyő jelenik meg.

 

bekapcsolva ezt írja ki:

 

Notice: Trying to get property of non-object in public_html/classes/Link.php on line 110

Fatal error: Call to a member function getFieldByLang() on a non-object in public_html/classes/Link.php on line 111

 

 

link.php:

110

        $params['id'] = $product->id;

111
        $params['rewrite'] = (!$alias) ? $product->getFieldByLang('link_rewrite') : $alias;

 

 

Tudhatom hogy ha kikommenteled a hibát, akkor mit jelenít meg? Bejön a felület csak nincsenek benne adatok? Vagy üres fehér képernyő?

Ha az utóbbi akkor megpróbálod bekapcsolni a developer módot config/defines.inc.php-ben? Hátha kiír valamit amin elindulhatunk.

Edited by szabolcs77 (see edit history)

Share this post


Link to post
Share on other sites

Okés, ha megpróbálnád kikommentelni az egyiket, a másikat vagy mindkettőt? A próba kedvéért... hátha betölti és akkor meglátjuk hogy mi volt a hibás... látom hogy mire szól a hibaüzenet de nem tudom összerakni a képet.

Share this post


Link to post
Share on other sites

ha mindkettő ki van kommentelve, akkor ez a hibaüzenet jön (fehér képernyő, semmi más nincs):

 

Dispatcher::createUrl() miss required parameter "id" for route "product_rule"

 

ha csak a 111-es sort kommentelem akkor meg ez jön hibaüzenetnek:

 

Notice: Trying to get property of non-object in /public_html/classes/Link.php on line 110

Notice: Trying to get property of non-object in /public_html/classes/Link.php on line 113

Fatal error: Call to a member function getFieldByLang() on a non-object in /public_html/classes/Link.php on line 114

 

kieg: a vásárolónál ahol a hiba előjön, kitöröltem az összes rendelését. a hiba ugyanúgy megmaradt.

 

Okés, ha megpróbálnád kikommentelni az egyiket, a másikat vagy mindkettőt? A próba kedvéért... hátha betölti és akkor meglátjuk hogy mi volt a hibás... látom hogy mire szól a hibaüzenet de nem tudom összerakni a képet.

Edited by szabolcs77 (see edit history)

Share this post


Link to post
Share on other sites

customer tábla:

error_20131015_pma.jpg

 

ahogy én néztem itt nincs probléma, mert:

shop_group: az összes 1es

id_shop: összes 1es (ez nálam egy átvett shop, és aki csinálta próbálkozott a multishop beállítással, amire semmi szükség nem volt)

default group: ebbe a csoportba van még 11 vásárló, náluk nem jön elő ez a hiba

lang: ugyanaz mindenkinél

többi mezőnél sincs különlegesség.

 

melyik táblákat nézzem még meg?

ugye a rendeléseket kitöröltem, tehát ott sem lehet gond.

 

ötlet?

 

phpmyadmin-ban nem tudnál utánanézni (vagy egy mentést adni) hogy ennél a vásárlónál milyen adatok vannak?

Hátha kiderül belőle valami.

Share this post


Link to post
Share on other sites

hmmmm nagyon érdekes az biztos.

 

http://www.prestashop.com/forums/topic/271232-constant-errors-invalid-product-vars-at-line-108-in-file-classeslinkphp/

 

ezt találtam még, megnéznéd esetleg? Hátha alapon.

 

láttam még hasonlókat itt:

http://shop15.be-sales.be/index.php?controller=product&id_product=63FR

http://www.argument-bijoux.com/index.php?controller=product&id_product=1%3Fid_product%3D1&start=R118781962

 

Ha a fenti link nem segít akkor a shopot áttenném localhostra vagy egy másik szerverre és megnézném ott jelentkezik-e a hiba. Ott meg tudom-e nyitni az adott vásárlót. Van lehetőséged ilyesmire?

Ha működne localhoston vagy más szerveren akkor tudnánk szűkíteni a kört...

Share this post


Link to post
Share on other sites

sajnos ezek nem segítettek. mivel 6GB anyagról van szó, inkább localhoston csinálom, akkor nem kell feltöltenem sehova.

köszi a tanácsokat, jelentkezem ha megvagyok a localhostos teszttel.

 

hmmmm nagyon érdekes az biztos.

 

http://www.prestashop.com/forums/topic/271232-constant-errors-invalid-product-vars-at-line-108-in-file-classeslinkphp/

 

ezt találtam még, megnéznéd esetleg? Hátha alapon.

 

láttam még hasonlókat itt:

http://shop15.be-sales.be/index.php?controller=product&id_product=63FR

http://www.argument-bijoux.com/index.php?controller=product&id_product=1%3Fid_product%3D1&start=R118781962

 

Ha a fenti link nem segít akkor a shopot áttenném localhostra vagy egy másik szerverre és megnézném ott jelentkezik-e a hiba. Ott meg tudom-e nyitni az adott vásárlót. Van lehetőséged ilyesmire?

Ha működne localhoston vagy más szerveren akkor tudnánk szűkíteni a kört...

Share this post


Link to post
Share on other sites

Gondolom sok termék van, ebből kifolyólag sok a kép - ezért ilyen nagy a shop. Egyszerűen hagyd ki az /img/p/ mappát és akkor hátha gyorsabban megy a dolog. A hiba reprodukálásához úgy sincs szükség a termékképekre.

Share this post


Link to post
Share on other sites

sok termék, sok vásárló.

kipróbáltam másik tárhelyen, ugyanez. kipróbáltam másik tárhelyen az 1.5.5.0-ás biztonsági mentést, ott is ugyanez a hiba.

 

és ha kikommentelném az AdminCustomersController.php fájlból azt a sort, ahol meghívja ezt a getProductLink függvényt? elvileg akkor meg kell jelennie a tartalomnak, és akkor úgy már közelebb jutok a hibás részhez. nem?

 

Gondolom sok termék van, ebből kifolyólag sok a kép - ezért ilyen nagy a shop. Egyszerűen hagyd ki az /img/p/ mappát és akkor hátha gyorsabban megy a dolog. A hiba reprodukálásához úgy sincs szükség a termékképekre.

Share this post


Link to post
Share on other sites

hát kiirattam vele, olyan terméknél akad ki ami már törölve lett az adatbázisból.

 

most a demo oldalon kipróbáltam, hogy már vásárolt terméket ha törlök, akkor bár kiírja, hogy:

An error occurred while deleting this selection.

de simán törli, és onnan kezdve az a vásárló, aki ezt a terméket rendelte, szintén hibára fut a listázásnál.

 

hozzáférést nem szeretnék adni az adatbázishoz.

 

Próbáld meg, de félek több helyen bent van.

Egy ideiglenes admin hozzáférést nem tudsz adni?

Share this post


Link to post
Share on other sites

hát áthidaltam a problémát. Ahogy nekem kiderült a vásárló által megvett termékek listával volt gondja, ha olyannal találkozott ami már törölt (bár nem értem ezt miért nem kezeli automatikusan, vagy miért engedi akkor törölni ha már volt eladás belőle)

 

Az általam használt megoldás a következő:

AdminCustomersController.php fájlban az eredeti lekérdezés

$sql = 'SELECT DISTINCT id_product, c.id_cart, c.id_shop, cp.id_shop AS cp_id_shop
				FROM '._DB_PREFIX_.'cart_product cp
				JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart)
				WHERE c.id_customer = '.(int)$customer->id.'
					AND cp.id_product NOT IN (
							SELECT product_id
							FROM '._DB_PREFIX_.'orders o
							JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order)
							WHERE o.valid = 1 AND o.id_customer = '.(int)$customer->id.'
						)';

erre módosítva:

		$sql = 'SELECT DISTINCT cp.id_product, c.id_cart, c.id_shop, cp.id_shop AS cp_id_shop
				FROM '._DB_PREFIX_.'cart_product cp
				JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart)
				JOIN '._DB_PREFIX_.'product termek ON termek.id_product= cp.id_product
				WHERE c.id_customer = '.(int)$customer->id.'
					AND cp.id_product NOT IN (
							SELECT product_id
							FROM '._DB_PREFIX_.'orders o
							JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order)
							WHERE o.valid = 1 AND o.id_customer = '.(int)$customer->id.'
						)';	

tehát becsatoltam a product táblát is, és az eredmény halmazban csak azok a rekordok lesznek benne, ahol a termék megtalálható az adatbázis product táblában.

 

pattila01: köszönöm a segítséget!

  • Like 1

Share this post


Link to post
Share on other sites

Volt egy ilyen sejtésem hogy a töröltekkel lesz gond de elvetettem, hiszen ez általános érvényű és máshol nem volt ezzel probléma.

Úgy értem minden shopban van olyan hogy olyan vásárlói listát kérdez le az ember amiben olyan termék van ami már nincs a shopban, még sem okoz hibát.

Nem értem. Mindenesetre a megoldásod profi, köszönjük hogy megosztottad Velünk!

 

:)

gratulálok a megoldáshoz!

Share this post


Link to post
Share on other sites

és ott mit írtál át? mert ugye az én megoldásom csak  tüneti kezelés....

Érdekesség:

egy perce belefutottam ugyanebbe a hibába a bolt oldalon.

Nekiálltam debuggolni és rájöttem hogy a Cross selling modul (vásárlók akik megvették ezt a terméket...) okozta a hibát.

Share this post


Link to post
Share on other sites

Átírni? semmit. kikapcsoltam a modult és eltűnt a hibaüzenet (ügyfélnek nem kellett ez a modul).

Azt gyanítom hogy ez a modul eleve be volt kapcsolva, és akkor aktivizálta magát, rögtön el is hasaltatta a rendszert.

Lehetséges hogy ez nem kompatibilis 1.5.5.0-val vagy 1.5.6.0-val. Lehet hogy nem jött elő ez a hiba teszteléskor a fejlesztőknek.

 

Az biztos hogy ő okozta ezt a hibát, mármint a modul. Nem álltam neki megkeresni az okát mert a modul nem kell Nekik.

 

Nálad megoldotta? Be van egyáltalán kapcsolva?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More