Jump to content
  • 0

pobranie danych z bazy


gmarcin

Question

Witam, 

Chciałbym pobrać dane z bazy
 

Mam coś takiego.
 

$obj = (object)'Product';
       $baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product');
$products = array();
foreach ($baza as $pi)
{
$obj->id_product = (int)$pi['id_product'];
$obj->recommend = (int)$pi['recommend'];
//$products[] =  (int)$pi['id_product'];
$products[] = $obj;
}
        $this->smarty->assign(array(
'productsViewed' => $products));

a to kod z tpl

 {foreach from=$productsViewed item=viewedProduct name=myLoop}
         <p>{$vievedProduct->id_product|escape:'html'}</p>
        {/foreach}

wynikiem tego kodu jest dobra ilość pustych znaczników <p>

w związku z tym mam pytanie jak wyświetlić dane z bazy?

pozdrawiam

 

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Tak, widzę . Dziękuje :)

Mam jeszcze dwa pytania. Jak ustawić moduł aby wyświetlał się tylko, gdy użytkownik jest w widoku produktu? Jak pobrać id categorii w której jest wyświetlony produktu?


Teraz pobieram ostatni rekord
Tak jakby nie dodawał odrazu do listy
 

Edited by gmarcin (see edit history)
Link to comment
Share on other sites

  • 0

można to zrobić dwojako, za pośrednictwem back office ustawić tzw. exceptions, czyli wyjątki. wyjątki to strony, na których moduł ma się nie wyświetlać. moduły > pozycje - odszukaj modułu na liście hooka, gdzie jest podpięty i edytuj go. wybierz wszystkie strony z wyjątkiem "product"

 

drugi sposób to modyfikacja modułu, jego pliku tpl dokładniej mówiąc.

wystarczy kod modułu w tym pliku ująć w ten warunek if:

 

{if $page_name=="product"}

KOD PLIKU TPL TUTAJ

{/if}

Link to comment
Share on other sites

  • 0

w tym wypadku musiałbyś w jakiś sposób (najlepiej w plikach php modułu, w hooku gdzie wyświetlasz tpl) do smarty przekazać id kategorii produktu

 

coś w stylu:

 

$product = new Product(Tools::getValue('id_product'); //pobranie i stworzenie obiektu przeglądanego produktu

$id_category_product=$product->id_default_category; //id kategorii głównej produktu

$this->context->smarty->assign('id_category_product', $id_category_product); // id_kategorii przekazujemy do smarty

 

i odtąd w pliku tpl modułu możesz posługiwać zmienną $id_category_product :)

Link to comment
Share on other sites

  • 0
Niestety coś muszę źle jeszcze robić bo nie działa ;/

function hookRightColumn($params)
             {
$product = new Product(Tools::getValue('id_product')); 
                $id_category_product=$product->id_default_category;
                $obj = (object)'Product';
       $baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product');
$products = array();
 
foreach ($baza as $pi)
{
$obj->id_product = (int)$pi['id_product'];
$obj->recommend = (int)$pi['recommend'];
$products[] = $obj;
}
        $this->smarty->assign(array(
'productsViewed' => $products));
$this->context->smarty->assign('id_category_product', $id_category_product);
                return $this->display(__FILE__, 'my.tpl');
             }

 
Edited by gmarcin (see edit history)
Link to comment
Share on other sites

  • 0
function hookRightColumn($params)

 

jest to globalny hook, ale jego zawartość będzie działać tylko na stronie produktu $product = new Product(Tools::getValue('id_product'));  - ta zmienna występuje tylko na stronie produktu.

 

 

co do niedziałania, jest tam błąd, kod pisałem z pamięci

nie ma pola id_default_category, jest za to id_category default :)

$id_category_product=$product->id_category_default;
Link to comment
Share on other sites

  • 0

tak sobie myślę, jeszcze, że skoro to jest globalny hook, a Ty chcesz tylko to mieć na stronie produktu, dobrze będzie ograniczyć "execute" (brakuje mi słowa :() kodu wyłacznie do strony produktów.

 

tj. cały kod wewnątrz hooka ująć w coś w stylu: if isset($_GET['id_product'])

function hookRightColumn($params){
if  (isset($_POST['id_product'])){


$product = new Product(Tools::getValue('id_product')); 
$id_category_product=$product->id_default_category;
$obj = (object)'Product';
$baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product');
$products = array();


foreach ($baza as $pi){
$obj->id_product = (int)$pi['id_product'];
$obj->recommend = (int)$pi['recommend'];
$products[] = $obj;
}
$this->smarty->assign(array(
'productsViewed' => $products));
$this->context->smarty->assign('id_category_product', $id_category_product);
return $this->display(__FILE__, 'my.tpl');
}
}
Link to comment
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
×
×
  • Create New...