Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szablony i mysql - zapętlanie
Disaster
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Chce stworzyc sredniozaawansowany system typu CMS oparty na bazach mysql i wykorzystujacy szablony. Do tej pory nie robilem stron opartych o szablony i pojawil sie problem. Mianowicie chce miec po lewej stronie zrobione menu podzielone na kategorie, mniej-wiecej tak jak index fora phpbb podzielony jest na kategorie i fora. Zeby uproscic sprawe chodzi o taki uklad:
Kod
<!--BEGIN kategoria-->

<b>{kategoria}</b><br>

     <!--BEGIN linki-->

     <a href="{url}">{link}</a><br>

     <!--END linki -->

<br><br>

<!--END kategoria-->

W php przy uzyciu standardowej funkcji echo wyglada to tak:
[php:1:4d86280fe0]
<?php

$query = mysql_query("SELECT * FROM category");
while ($row = mysql_fetch_array($query)) {

$links_query = mysql_query("SELECT * FROM links WHERE category = $row[name]");
while ($links_row = mysql_fetch_array($links_query)) {
// ...
}

}

?>
[/php:1:4d86280fe0]

Problem polega na tym, ze przy zastosowaniu klasy szablow FastTemplate linki nie chca trzymac sie swoich kategorii tzn. kiedy mam 2 kategorie i w kazdej po jednym linku, w 1 kategorii prawidlowo pojawia sie 1 link, ale w kategorii 2 pojawiaja sie oba linki z obu kategorii.
Mam to rozwiazane w taki sposob:

left.php
[php:1:4d86280fe0]
<?php
$tpl->define( array( left => "left.tpl",
category => "category.tpl",
menulink => "menulink.tpl" ));


// IDZIEMY PO KATEGORIE...
$query = mysql_query("SELECT * FROM kategorie WHERE strona = 'lewa' ORDER BY pozycja ASC");
while ($sql = mysql_fetch_array($query)) {

// I LINKI
$query2 = mysql_query("SELECT * FROM menu WHERE kategoria = '$sql[nazwa]' ORDER BY pozycja ASC");

$n =mysql_num_rows($query2);
if ($n > 0) {

while ($sql2 = mysql_fetch_array($query2)) {

$tpl->assign( array( URL => $sql2[url],
NAZWA => $sql2[nazwa] ));
$tpl->parse(MENULINK,".menulink");
}

}
// SCHOWAJ SZABLON JEŻELI NIE MA LINKÓW...
else {
$tpl->assign(MENULINK,'');
}

$tpl->assign(TITLE,$sql[nazwa]);
$tpl->parse(CATEGORY, ".category");

}

$tpl->parse(LEFT,"left");
$tpl->FastPrint();

?>
[/php:1:4d86280fe0]

I pliki szablonow:

left.tpl
Kod
<!-- NAME: left.tpl -->

<!---- LEWE MENU ---->  

<TD vAlign=top width=243>



{CATEGORY}



          </TD>

<!---- KONIEC LEWE MENU ---->

<!-- END: left.tpl -->


category.tpl
Kod
<!-- NAME: category.tpl -->

<!---- LEWA KATEGORIA ---->

            <TABLE cellSpacing=0 cellPadding=0 width=243 border=0>

              <tr>

                <TD class=subjectcell width=243

                background=template_img/IB-II/tlo1.gif height=48>

                 <br><p align="center" style="text-indent: 0; line-height: 100%; word-spacing: 0; margin: 0">&nbsp;

                </center>

                  <p align="center" style="text-indent: 0; line-height: 100%; word-spacing: 0; margin: 0"><strong>{TITLE}</strong></TD>

              </tr>

<CENTER>

              <tr>

                <TD class=newscell

                  background=template_img/IB-II/menutlo.gif>                  <p align="center">



{MENULINK}



                </TD>

              </tr>

              <tr>

                <TD background=template_img/IB-II/dol.gif

              height=22></TD>

              </tr>

              </TABLE>&nbsp;

<!---- KONIEC LEWA KATEGORIA ---->

<!-- END: category.tpl -->


menulink.tpl
Kod
<!-- NAME: menulink.tpl -->

<a href="{URL}" {NEWWINDOW}><font color="#808080">{NAZWA}</font></a><br>

<!-- END: menulink.tpl -->


Co jest najciekawsze, chowanie szablonu jezeli w kategorii nie ma linkow dziala zupelnie dobrze. Problemy pojawiaja sie dopiero, kiedy wyswietlane sa juz wlasciwe linki.
Nie mam pojecia czemu tak sie dzieje, moze ktos tutaj bedzie mogl mi pomoc smile.gif Ewewntualnie jezel ktos proponuje jakies inne rozwiazanie, wykorzystanie innej klasy szablonow to jestem otwarty smile.gif

EDYCJA:
Poradzilem sobie juz, zamiast FastTemplatow uzylem klasy template z phplib smile.gif


--------------------
Są 3 typy ludzi: ci, którzy potrafią liczyć i ci, którzy nie potrafią.
Go to the top of the page
+Quote Post
treewood
post
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

Ostrzeżenie: (0%)
-----


zrob to lepiej na plikach ... latwiej sie takie rzeczy edytuje ... mnie by trafialo bym musial edytowac wyswietlanie strony przez edytor a nie przez sciagniecie sobie pliku odpowiedniego i otwarcie w edytorze lub edytowanie go po stronie serwera.
przerabialem z reszta kiedys ten temat ... na poczatku jaralem sie tym tak jak jest to w forum openBB gdzie szablony sa na bazie. z czasem zaczelo mnie to w....

juz nie mowiac, ze wyswietlanie szablonow z plikow jest troszke szybsze (zalezne oczywiscie takze od ilosci otwieranych plikow)


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 09:24