Sziasztok!
Van egy engedélyezett és működő Ubercartom, jelenleg 8 termékkel. Ha lefuttatom a következőt, az semmilyen eredményhalmazt nem ad vissza:
dsm('$nid:'); dsm($nid.'. nid'); }
Ezzel szemben a következő kettő query hibátlanul működik:
dsm('SELECT * testing...'); dsm('$row->nid:'); dsm($row->nid.'. nid'); } dsm('node table'); dsm('$nid:'); dsm($nid.'. nid'); }
phpMyAdminban a legelső query-t lefuttatva az eredmény az elvártak szerint néz ki: http://i.imgur.com/nP39G.png
Ugyanezt a problémát leírtam itt is.
A probléma számomra teljesen misztikus, nézegettem a db_query, db_result függvényeket, egyiket sem módosítottam. Valamilyen oknál fogva azonban pont az uc_products
táblánál eltűnnek az éterben az eredmények, az Ubercart beépített moduljainál sem működik helyesen - pont a fenti query szerepel pl. a Conditional Actions modulnál is, amikor termékre szűrök.
Van BÁRMI tippetek, hol kezdjem el a kotorászást? Legegyszerűbb egy szimpla update lenne vélhetően, de egyrészt csak akkor derül ki, hogy megoldódik-e (ami valószínű), amikor már megcsináltam, másrészt már érdekelne, mi lehet vajon a probléma forrása, mert ilyennel még nem találkoztam.
Bármi tippet szívesen fogadok. Köszi!
Screenshot, konkrét teszt megmutatása
Ja igen, és egy screenshot a jelenségről az állítás igazolására:
http://i.imgur.com/FhAuY.png
Konkrétan ezt futtattam le, látható, hogy az első két query után semmilyen eredmény nem látható, míg a többinél helyes eredmények szerepelnek (még a
vid
lekérése is jól működik!!!):Még annyi, hogy nincs a tábláknál előtag (mondjuk a node-nál ez már kiderül), tehát az nem számít jelen esetben, hogy
{uc_products}
-ot vagy a kapcsos zárójel nélküli változatot használom.A query-knél a
vid
lekérése a legérdekesebb, hogy az akkor vajon miért működik helyesen, anid
lekérése miért nem, miközben ezek típusa az adatbázisban tök ugyanaz (unsigned int).... NEM ÉRTEM!db_result() helyes használata
Félreérted a
db_result()
használatát. Ezt a függvényt akkor használd, ha pontosan egyelemű eredményhalmazt vársz a lekérdezésedtől egyetlen mezőt lekérdezve. Ekkor nincs szükséged ciklusra sem.Jó mintának pl. az
aggregator_block()
függvény. Nézd meg, mikor és hogyan van használatban adb_result()
, és mikor adb_fetch_object()
egy ciklussal.Akkor az Ubercart egyik fejlesztője érti félre. :P
Nézd meg az uc_order_condition_has_products_form() függvényt, egész pontosan onnan szedtem ezt. Most nem arra voltam kíváncsi, hogy helyes-e ennek a használata (igazad van, hogy alapvetően szerintem sem erre használandó), hanem hogy ez miért nem működik az
uc_products
tábla esetén anid
lekérdezésekor, miközben avid
vagy anode
táblanid
mezőjének lekérdezése esetén pontosan ugyanígy használva adb_results()
függvényt a query hibátlanul lefut.Egyébként a
db_result()
függvényt én is inkább olyan esetekben szoktam használni, amilyen példát említettél! Ettől függetlenül ez a használat sem hibás egyébként, tehát működnie kellene. Működik is ugyanez másik, tesztcélú Drupal 6 esetében!A Conditional Actions használatához pedig ennek működnie kell, ha arra szeretnék szűrni, hogy vajon adott rendelésben benne vannak-e megadott termékek, vagy kénytelen lennék minden esetleg hasonló használat esetén módosítani a modul(ok) fájljait.
Egyébként köszi, hogy foglalkozol a dologgal. ;)
Bármi tipp arra, hogy vajon miért nem adja vissza az elvárt eredményhalmazt?