Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szablony + obiekty
misieq
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


Mam taki kod:

  1. <?php
  2. $post_tpl = new template(); //tworzenie obiektu szablonu
  3. $post_tpl -> load('forum_post'); //ladowanie szablonu
  4.  
  5. $db -> query("SELECT * FROM `tabela`"); //query pobierajace jakas ilosc wierszy wieksza niz 1
  6.  
  7. while ($post = $db -> fetch_row()) {
  8. $post_tpl -> blocks = array (
  9. "postcontent" => $post['content']
  10. );
  11. $post_tpl -> parse();
  12. echo $post_tpl -> parsed;
  13. }
  14. ?>


Coś takiego działa jak należy - czyli wypisuje treści postów z forum po kolei zgodnie z szablonem. Ale jeśli dodam w pętli while:

  1. <?php
  2. $userdata = new user($post['author']); // tworzymy obiekt autora postu
  3. ?>

to wyświetla się tylko jeden post - pierwszy z danego zapytania. Reszty nie ma :|
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
misieq
post
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


Rozwiązanie, które proponujesz już sprawdzałem.. i nie działa. Połowicznie działa coś podobnego: deklarujemy tablicę obiektów, tylko licznik zwiększamy poza deklaracją tablicy

  1. <?php
  2. $i = 0;
  3. while (....) {
  4. $userdata[$i] = new user($post['author']); // tworzymy obiekt autora postu
  5. ...
  6. ...
  7. $i++;
  8. }
  9. ?>

Ale niestety wyświetla się nadal tylko pierwszy post (pola są wypełniane odpowiednio).

Nie można w php usuwać obiektów?

EDIT: Ok, po bojach z php domyśliłem się o co chodzi. Zmienna połączenia jest globalna w funkcjach klasu user, a wykonuję tam zaytania więc zmieniam pole wyniku zapytania w klasie bazy. Powstaje więc pytanie: w jaki sposób sobie z tym najefektywniej poradzić? Tworzenie nowego połączenia w klasie chyba odpada bo to nieefektywne.
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: 16.10.2025 - 13:34