Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ewewntualnie jezel ktos proponuje jakies inne rozwiazanie, wykorzystanie innej klasy szablonow to jestem otwarty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

EDYCJA:
Poradzilem sobie juz, zamiast FastTemplatow uzylem klasy template z phplib (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 13:05