Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie rekordu
Forum PHP.pl > Forum > Przedszkole
Chelo
Witam wszystkich. Piszę modyfikacje do PA i mam problem z jednym skryptem. Otóz mam przykładowo takie coś:

  1. $sql3 = "SELECT * FROM phpbb_tabele WHERE gdzie=0 ORDER BY id ASC";
  2. $result3 = $db->sql_query($sql3);
  3. while($row3 = $db->sql_fetchrow($result3)){
  4. print '<table width="100%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline"><tr><th width="100%" align="center" class="row1">' . $row3['nazwa'] . '</th></tr>';
  5. print '<tr><td class="row1">' . $row3['tresc'] .'</td></tr><br>';
  6. }


Tak jest wszystko ok. Ale jak zastąpić while zeby działało tak samo w pliku .tpl questionmark.gif?

czyli kod trzeba zmienić tak:

  1. $sql3 = "SELECT * FROM phpbb_tabele WHERE gdzie=0 ORDER BY id ASC";
  2. $result3 = $db->sql_query($sql3);
  3. while($row3 = $db->sql_fetchrow($result3)){
  4. $tabela1 = '<table width="100%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline"><tr><th width="100%" align="center" class="row1">' . $row3['nazwa'] . '</th></tr>';
  5. $tabela2= '<tr><td class="row1">' . $row3['tresc'] .'</td></tr><br>';
  6. $template->assign_vars(array(
  7. 'TABELA1' => $tabela1,
  8. 'TABELA2' => $tabela2
  9. )
  10. );
  11. }


Poźniej w pliku .tpl wywołam tak: {TABELA1}{TABELA2} jednak wyświetli mi tylko raz... A w chcę by wydrukowało wszystko co tam się znajduję. Jak to zrobić?


proszę o pomoc
jinks
Dzieje się tak, ponieważ nadpisujesz sobie te tabele przy każdym pobraniu rekordu, zrób coś takiego:

  1. $sql3 = "SELECT * FROM phpbb_tabele WHERE gdzie=0 ORDER BY id ASC";$result3 = $db->sql_query($sql3);
  2. while($row3 = $db->sql_fetchrow($result3)) {
  3.  
  4. $tabela1[]='<table width="100%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline"><tr><th width="100%" align="center" class="row1">' . $row3['nazwa'] . '</th></tr>';
  5.  
  6. $tabela2[]='<tr><td class="row1">' . $row3['tresc'] .'</td></tr><br>';
  7. }

a potem przypisz sobie pełne tabele do szablonu.
zzeus
Szablony stosuje się po to aby oddzielić kod php od html. Tak więc w php tworzysz tablice z wartościami i tą tablicę przekazujesz do pliku .tpl
  1. $sql3 = "SELECT * FROM phpbb_tabele WHERE gdzie=0 ORDER BY id ASC";
  2. $result3 = $db->sql_query($sql3);
  3. $_tempTable = array();
  4. while($row3 = $db->sql_fetchrow($result3)){
  5. $_tempTable[] = $row3;
  6. }
  7. $smarty->assign('tempTable', $_tempTable);

i później w szablonie robisz pętle
  1. {foreach from=$tempTable item=row}
  2. <tr><td>{$row.pole1}</td><td>{$row.pole2}</td></tr>
  3. {/foreach}
Chelo
nie działa co_jest.gif
zzeus
Co konkretnie nie działa ?
Chelo
Fatal error: Call to a member function assign() on a non-object in
Void
Błąd mówi, że wypadałoby najpierw utworzyć obiekt Smarty zanim zaczniesz go używać smile.gif
zzeus
To był przykładowy kawałek kodu, a nie gotowa wstawka którą masz skopiować i wkleić do siebie i będzie działać.
Chelo
Możesz mnie bardziej naprowadzić? Bo nie za bardzo rozumiem
zzeus
Z jakiego systemu szablonów korzystasz ?
Chelo
Mod jest pisany do przema
zzeus
Nie znam tego forum, nigdy nic nie robiłem z nim.
Ale może inaczej, w którym miejscu pojawia się błąd ? Czy zapytanie do bazy danych się poprawnie wykonuje i zwraca wyniki do tablicy, czy problem jest dopiero w szablonie - tabelka z danymi się nie pojawia ?
Chelo
{foreach from=$tempTable item=row}

{/foreach}

Wyświetla mi te linijki co wyżej napisałem
pyro
Cytat(zzeus @ 8.09.2009, 14:13:24 ) *
Nie znam tego forum, nigdy nic nie robiłem z nim.
Ale może inaczej, w którym miejscu pojawia się błąd ? Czy zapytanie do bazy danych się poprawnie wykonuje i zwraca wyniki do tablicy, czy problem jest dopiero w szablonie - tabelka z danymi się nie pojawia ?


Cytat
Fatal error: Call to a member function assign() on a non-object in


Po co Ci wiedzieć gdzie jest błąd. Przecież czytać chyba umiesz. Błąd wyraźnie mówi, że użyto funkcji assign na nieobiekcie. O ile pamiętam to phpBB korzysta z własnego systemu szablonów (ale nie pamiętam dokładnie, mogę się mylić), a nawet jak korzysta ze Smarty to obiekt wcale nie musi się kryć pod zmienną `$smarty`
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.