Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SMARTY]Problem z przypisywaniem rekordu
Forum PHP.pl > Forum > PHP
x2008x
Witam Serdecznie, mam problem, otóż staram się zbudować CMS w oparciu o Smarty i napotkałem pewien problem.

Zacznijmy od kodu:
-index.php
  1. $time = time();
  2. $zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec`");
  3. $ile = mysql_num_rows($zap);
  4. for ( $i=0; $i<$ile; $i++ ) {
  5. $wiersz = mysql_fetch_array($zap);
  6. $produkt[$i] = $wiersz;
  7. $tnij = shortcut($wiersz['warto'], 230);
  8. $smarty->assign("cut", $tnij);
  9. }
  10.  
  11. $smarty->assign('produktt', $produktt);
  12. $smarty->assign('produkt', $produkt);


Teraz plik index.tpl:
  1. {foreach from=$produkt item=to}
  2. <div id="box">
  3.  
  4.  
  5. <div id="nazwa"><a href="podglad.php?nr={$to.id}">{$to.nazwa}</a></div>
  6. <div id="cena">{$to.cena}zł</br>
  7. <span class="rabat">-{$to.procent}%</span></div>
  8.  
  9. <ul id="produkt{$to.pro}" class="image-overlay">
  10.  
  11. <li>
  12. <a href="podglad.php?nr={$to.id}">
  13.  
  14. <img alt="asd" src="upload/{$to.zdj_glowne}" width="270" height="170"/>
  15.  
  16. <div class="caption">
  17. <p>
  18. {$cut}
  19. </p>
  20. </div>
  21.  
  22. </a>
  23. </li>
  24. </ul>
  25. <div id="czas">{$smarty.now|date_format: "%D %H:%M"}</div>
  26. <div id="kupiono">Kupiono: <b>{$to.kupiono}</b></div>
  27. </div>
  28. {/foreach}


Dając zmienną $cut w .tpl tnie mi tylko jeden z rekordów, nie dla każdego, ale tylko jeden. Mam nadzieję, że wiecie o co chodzi. Wytłumaczę to na przykładzie,

Tabela produkty ma kolumny:
-id,
-nazwa,
-warto(tutaj chcę, aby ucieło po 230 znakach i wyświetliło razem w liście z nazwą - dla każdego powinno być osobno)

Wyświetla to tak, że mamy:

Lista produktów:
-Nazwa #1(nazwa) - Dlaczego Warto#1 (warto)
-Nazwa #2(nazwa) - Dlaczego Warto#1 (warto)
-Nazwa #3(nazwa) - Dlaczego Warto#1 (warto)
itd.

Wychodzi na to, że warto jest stałe.

Dzięki za pomoc.
nospor
$smarty->assign("cut", $tnij);
Toż tutaj za kazdym razem w petli nadpisujesz wartosc poprzedniego cut wiec nic dziwnego ze zawiera tylko ostatnią wartosc.
Zapisuj te cut $wiersz jako kolejny index i wowczas bedziesz mial to normalnie w tablicy produktów przekazanych do smarty
x2008x
W taki sposób?

  1. $time = time();
  2. $zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec`");
  3. $ile = mysql_num_rows($zap);
  4. for ( $i=0; $i<$ile; $i++ ) {
  5. $wiersz = mysql_fetch_array($zap);
  6. $produkt[$i] = $wiersz;
  7. $tnij[$i] = shortcut($wiersz['warto'], 230);
  8.  
  9. }
  10.  
  11.  
  12. $smarty->assign("cut", $tnij);
  13. $smarty->assign('produkt', $produkt);


Czy tak?

  1. $time = time();
  2. $zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec`");
  3. $ile = mysql_num_rows($zap);
  4. for ( $i=0; $i<$ile; $i++ ) {
  5. $wiersz = mysql_fetch_array($zap);
  6. $produkt[$i] = shortcut($wiersz, 230);
  7.  
  8. for ( $z=0; $z<$ile; $z++ ) {
  9. $wiersz = mysql_fetch_array($zap);
  10. $produktt[$z] = $wiersz;
  11.  
  12.  
  13. }
  14.  
  15.  
  16. }
  17.  
  18. $smarty->assign('produktt', $produktt);
  19. $smarty->assign('produkt', $produkt);


Drugi sposób niby by działał, tyle, że nie mogę wstawić {foreach} w {foreach} w szablonie :/
nospor
Do wiersza/produktu miales to przypisac... toć po chinsku nie gadam wink.gif

  1. for ( $i=0; $i<$ile; $i++ ) {
  2.  
  3. $wiersz = mysql_fetch_array($zap);
  4. $wiersz['tnij'] = shortcut($wiersz['warto'], 230);
  5. $produkt[$i] = $wiersz;
  6.  
  7. }

I juz masz to razem ze swoimi produktami i dobierasz sie do tego w smarty jak do kazdej innej wartosci produktu
x2008x
Zrobiłem to tak:

  1. $time = time();
  2. $zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec`");
  3. $ile = mysql_num_rows($zap);
  4. for ( $i=0; $i<$ile; $i++ ) {
  5. $wiersz = mysql_fetch_array($zap);
  6. $wiersz['tnij'] = shortcut($wiersz['warto'], 230);
  7. $produkt[$i] = $wiersz;
  8.  
  9.  
  10.  
  11. }
  12.  
  13. $smarty->assign('tnij', $wiersz['tnij']);
  14. $smarty->assign('produkt', $produkt);


Oraz tpl

  1. (...)
  2.  
  3. <li>
  4. <a href="podglad.php?nr={$to.id}">
  5.  
  6. <img alt="asd" src="upload/{$to.zdj_glowne}" width="270" height="170"/>
  7.  
  8. <div class="caption">
  9. <p>
  10.  
  11. {$tnij}
  12.  
  13. </p>
  14. </div>
  15.  
  16. </a>
  17. </li>
  18.  
  19. (...)


Albo źle wyświetliłem, albo źle jest przypisane, dalej wyświetla tylko 1 warto.

Przerobiłem i działa, dzięki.
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-2025 Invision Power Services, Inc.