Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty] Problem z WHILE.
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Sh4d0v
Witam.
Tworzę własny skrypt. Taki mój projekt.
I posiadam plik, który wyciąga wszystkie "Drużyny" z bazy i je wypisuje pętlą WHILE w tabelce.
Wszystko działało mi w 1 pliku php połączonym z html w środku.
Postanowiłem użyć smarty.
Po wykonaniu wszystkiego, mam dziwny problem. Otóż, pierw wszystko działało idealnie.
Wyświetlało mi tag drużyny, nazwę, data utworzenia oraz opis.
Teraz zaś, po użyciu smarty, wszystkie te pola zastępuje 1 literka "p".

Oto moje pliki:

druzyny.php
  1. <?php
  2. include(dataDir."config".PHPExt);
  3. $tabela = $dbprefix . 'druzyny';
  4.  
  5. // Smarty
  6. require_once('data/smarty/Smarty.class.php');
  7. $smarty = new Smarty();
  8.  
  9. $smarty -> template_dir = 'templates/';
  10. $smarty -> compile_dir = 'templates_c/';
  11. $smarty -> config_dir = 'configs/';
  12. $smarty -> cache_dir = 'cache/';
  13.  
  14. $query = mysql_query("select * from ".$tabela." order by id_team");
  15. while($rekord = mysql_fetch_array($query)){
  16. $pole[] = $rekord;
  17. }
  18. $smarty -> assign('pole_d', $pole);
  19.  
  20. $smarty -> display('druzyny.tpl');
  21. ?>


druzyny.tpl
  1. <h3>Drużyny</h3>
  2. <div align="center">
  3. <table border="0" cellpadding="0" width="100%" class="okragle-wszystkie-rogi" style="border: 1px solid #999999">
  4. <tr><td bgcolor="#FF9900">
  5. <b><font color=white>Drużyny MyI</font></b>
  6. </td></tr>
  7. {foreach item=poledb from="pole_d"}
  8. <tr>
  9. <td>
  10. <img border="0" align="middle" src=images/flags/pl.gif>
  11. <font color=black><b>[{$poledb.id_team}]{$poledb.nazwa}</b> - (Utworzony: <i>{$poledb.data_utworzenia}</i>) - {$poledb.info}</font>
  12. </td>
  13. </tr>
  14. {/foreach}
  15. </table></div>


Nie wiem, gdzie zrobiłem błąd.
Proszę o jakieś rady i pomoc.

Dziękuje i pozdrawiam
mlawnik
Polecam TinyButStrong(TBS), jeżeli jest to mały projekt(+ HTML plugin do TBS).

Tutaj dlaczego

Sh4d0v
Projekt mały, a jednocześnie duży.
Bardziej chodziło mi o to iż dla mnie to spore wyzwanie, dla pewnych osób, pracujących w php - prościzna.

Zależy mi na zrobieniu tego prosto w Smarty używają foreach albo section oraz tego "loop".
W smarty zacząłem działać dziś - więc jestem jeszcze zielony.

Jakieś pomysły jak to stworzyć na podstawie tych 2 plików?
kl4mor
sprobój tac w php tak:

  1. while($rekord = mysql_fetch_array($query)){
  2. $pole[$rekord['id_team']] = $rekord;
  3. }
nospor
Nie: from="pole_d"
a: from=$pole_d

Przecież do FROM zapodaje się tablicę a nie tekst wink.gif

@kl4mor Twoja poprawka nijak nie rozwiązuje problemu. Może go natomiast pogorszyć w przypadku, gdyby id_team nie był unikalny w danej tabeli
kl4mor
@nospor racja nic by nie pomogła, ale zakładałem że jeśli jest w nazwie id to jest to unikalna wartość smile.gif
nospor
Tak czy siak dodanie indeksu będącego ID rekordu ma się nijak do problemu wink.gif Dla pętli bez różnicy jest czy tablica ma indeksy "pokolei" czy może też będące konkretnymi liczbami
Sh4d0v
Ogolnie to poradzilem sobie z tym juz wczoraj smile.gif
  1. {section name=team loop=$pole_d}
  2. <tr>
  3. <td>
  4. <img border="0" align="middle" src=images/flags/pl.gif>
  5. <font color=black><b>[{$pole_d[team].tag}]{$pole_d[team].nazwa}</b> - (Utworzony: <i>{$pole_d[team].data_utworzenia}</i>) - {$pole_d[team].info}</font>
  6. </td>
  7. </tr>
  8. {/section}


i
  1. // Zapytanie
  2. $query = mysql_query("select * from ".TEAMS_DB." order by id_team");
  3. while($rekord = mysql_fetch_array($query))
  4. {
  5. $pole[] = $rekord;
  6. }
  7.  
  8. // Dane wyjściowe
  9. $template -> assign('pole_d', $pole);


Dzięki za wszelką pomoc i zainteresowanie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.