View previous topic :: View next topic |
Author |
Message |
pawelxx Smarty Rookie
Joined: 12 Sep 2005 Posts: 5
|
Posted: Mon Sep 12, 2005 11:04 am Post subject: Drzewko do SELECTA jednym zapytaniem |
|
|
Witam.
Jednym zpaytaniem pobieram z bazy wszytkie kategorie.
Kazda kategoria to takie pola: id, nazwa, parent
Czy jest mozliwosc aby z takiej tablicy bez dodatkowych zpaytan wysietlic wszytkie kategorie w menu typu SELECT odpowiednioje grupujac tzn mniej wiecej w taki sposob:
Code: | KAT 1
KAT 1_1
KAT 1_1_1
KAT 2
KAT 3
itd. |
Lub w taki sposob:
Code: |
KAT 1
KAT 1 / KAT 1_1
KAT 1 / KAT 1_1 / KAT 1_1_1
KAT 2
KAT 3
KAT 3 / KAT 3_1
...........................................
|
A tak wygalda moja tablica stowrzona zpaytaniem do bazy (wykorzystuje klase EZ_SQL)
Code: |
Array (
[0] => Array ( [id] => 1 [parent] => 0 [nazwa] => Internet i Telekomunikacja )
[1] => Array ( [id] => 2 [parent] => 0 [nazwa] => Banki )
[2] => Array ( [id] => 3 [parent] => 2 [nazwa] => Polskie banki )
[3] => Array ( [id] => 4 [parent] => 0 [nazwa] => Motoryzacja )
[4] => Array ( [id] => 5 [parent] => 4 [nazwa] => Ogloszenia motoryzajcyne )
[5] => Array ( [id] => 6 [parent] => 5 [nazwa] => Ogloszenia z rynku zachodniego )
)
|
Z gory dzieki za pomoc. _________________ Stal Stalowa Wola
Portal Stalowa Wola |
|
Back to top |
|
ANO Smarty n00b
Joined: 12 Sep 2005 Posts: 1
|
Posted: Mon Sep 12, 2005 11:50 am Post subject: |
|
|
po pierwsze to jak na moje oko, to chyba pomyliles fora...
a po drugie to wystarczy w zapytaniu posortowac wedlug parent i id, a nastepnie przy wyswietlaniu sprawdzac czy parent jest inny niz poprzedni... |
|
Back to top |
|
pawelxx Smarty Rookie
Joined: 12 Sep 2005 Posts: 5
|
Posted: Mon Sep 12, 2005 12:12 pm Post subject: |
|
|
Witam.
Chyba nie pomylilem
Chodzi mi oczywisce o wysietlenie tego drzewka za pomoca szablonu SMARTy - tylko nie wiem jka to zorbic - i czy potrzeba jeszcze cos kodu PHP czy da sie juz to zrobic w samym SMARTY.??? _________________ Stal Stalowa Wola
Portal Stalowa Wola |
|
Back to top |
|
eskaa_pl Smarty n00b
Joined: 08 Sep 2005 Posts: 4
|
Posted: Mon Sep 12, 2005 2:07 pm Post subject: |
|
|
Witaj.
Jeżeli dobrze rozumiem to chcesz w TPL'u wyświetlić wyniki zapytania z bazy.
nie mam twojego zapytania ale sklece przykłąd
[php:1:837e77be14]
$q=mysql_query("SELECT * FROM tabela");
while($row=mysql_fetch_array($q)){
//id kat
$id_kat[]=$row["id_kat_z_twojej_bazy"];
//jakas nazwa
$name[]=$row["nazwa_kat_z_twojej_bazy"];
$smarty->assign('id',$id_kat);
$smarty->assign('name',$name);
[/php:1:837e77be14]
Code: |
tpl
{section name=kategoria loop=$id}
<select name={$name[kategoria} value="{$id[kategoria}">
{/section}
|
o to chodziło |
|
Back to top |
|
pawelxx Smarty Rookie
Joined: 12 Sep 2005 Posts: 5
|
Posted: Mon Sep 12, 2005 2:34 pm Post subject: |
|
|
Witam.
Zapytanie wyglada tak:
[php:1:cdc8914270]
$kat_firmy = $db->get_results("SELECT * FROM katalog_firmy_cat", ARRAY_A);
[/php:1:cdc8914270]
A tak wyglada tablica zwracana przez to zapytanie:
[php:1:cdc8914270]
<?
Array (
[0] => Array ( [id] => 1 [parent] => 0 [nazwa] => Internet i Telekomunikacja )
[1] => Array ( [id] => 2 [parent] => 0 [nazwa] => Banki )
[2] => Array ( [id] => 3 [parent] => 2 [nazwa] => Polskie banki )
[3] => Array ( [id] => 4 [parent] => 0 [nazwa] => Motoryzacja )
[4] => Array ( [id] => 5 [parent] => 4 [nazwa] => Ogloszenia motoryzajcyne )
[5] => Array ( [id] => 6 [parent] => 5 [nazwa] => Ogloszenia z rynku zachodniego )
)
?>[/php:1:cdc8914270]
Twoj kod wysietli wszystkie kategorie ale nie w taki sposob jakbym chcial - gdyz nie wiem czy zauwazyles ale te dane maja byc wysietlony w strukturze drzewkowej. A to jest walsnie abrdzoje skomplikowane i nei wiem jak sobie poradzic z tym.
[/php] _________________ Stal Stalowa Wola
Portal Stalowa Wola |
|
Back to top |
|
Gargantua Smarty n00b
Joined: 15 Sep 2005 Posts: 2
|
Posted: Thu Sep 15, 2005 10:09 am Post subject: |
|
|
To oczywiście jest możliwe, tylko trzeba trochę w smrtym poprogramować no i trzeba to mieć posortowane odpowiednio (może być tak jak pisał ANO). Potem używając {section} należy zrobić w smartym to co trzebaby bylo zrobić w php.
Natomias nie sądzę, żeby istniała jedna operacja w smrtym, która pozwoli automatycznie rozwiązać ten problem. |
|
Back to top |
|
Gargantua Smarty n00b
Joined: 15 Sep 2005 Posts: 2
|
Posted: Thu Sep 15, 2005 10:46 am Post subject: |
|
|
Niestety teraz skojażyłem, że gdzieś tam po drodze będziesz musiał mieć stos. Najlepiej by było, gdyby smarty pozwolił tworzyć tablice za pomocą {assign}, ale nie wiem czy tak jest. Wtedy tworzył byś tablice wraz z rosnącym poziomem zagniezdzenia i zapisywał sobie innym asignem jaki jest ten poziom.
Jeśli assign nie pozwala robić tablic, to najlepiej już w php zapisać przy każdym elemencie jego poziom zagniezdzenia i taką taplicę dać smrty'emu. To rozwiązanie jest zresztą chyba najrozsądniejsze. |
|
Back to top |
|
regdos Smarty n00b
Joined: 30 Dec 2003 Posts: 2 Location: Poland
|
Posted: Wed Sep 21, 2005 12:47 pm Post subject: Re: Drzewko do SELECTA jednym zapytaniem |
|
|
pawelxx wrote: | Witam.
Jednym zpaytaniem pobieram z bazy wszytkie kategorie.
Kazda kategoria to takie pola: id, nazwa, parent
Czy jest mozliwosc aby z takiej tablicy bez dodatkowych zpaytan wysietlic wszytkie kategorie w menu typu SELECT odpowiednioje grupujac tzn mniej wiecej w taki sposob:
|
Tak ale to raczej nie w SMARTY tylko w PHP takie coś trzeba zbudować. Najprościej rekurancją, która przy małej ilości danych się sparawdza, a w smarty wyświetlić tak zbudowana tablicę. |
|
Back to top |
|
|