![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zastanawiam się, czemu wyświetlają mi się 2 razy rekordy. Chcę też stworzyć system templatek wg tego linku: http://www.programuj.com/artykuly/www/template.php Więc co mam:
Baza wygląda tak, że mam 2 tabele: ID i nazwa i tam są przykładowe dane (6 wierszy). Jeśli odpalę powyższy kod to jest ok - raz się wyświetla. Jednak jeśli przerobię funkcję wyświetlającą na taką:
To otrzymuję podwójne wyniki tzn ID 1 1 2 2 3 3 4 4. Jeśli chodzi o plik z templatką to: Kod <tr> <td bgcolor="silver"> {ID} </td> <td> {nazwa} </td> </tr> Gdzie tkwi błąd? Jeśli dopiszę do tej 2 funkcji wyświetlającej print_r($wyn); nad $tmpl->add($wyn); to dostaję: Array ( [ID] => 1 [nazwa] => php ) Array ( [ID] => 1 [nazwa] => php ) Array ( [ID] => 9 [nazwa] => c++ ) Array ( [ID] => 9 [nazwa] => c++ ) Array ( [ID] => 7 [nazwa] => kurs ) Array ( [ID] => 7 [nazwa] => kurs ) Array ( [ID] => 4 [nazwa] => mysql ) Array ( [ID] => 4 [nazwa] => mysql ) Array ( [ID] => 5 [nazwa] => oracle ) Array ( [ID] => 5 [nazwa] => oracle ) Array ( [ID] => 6 [nazwa] => js ) Array ( [ID] => 6 [nazwa] => js ) Array ( [ID] => 10 [nazwa] => C# ) Array ( [ID] => 10 [nazwa] => C# ) Czyli widać, że pobiera za dużo razy, ale dlaczego? A może jest jakiś inny sposób na pobranie danych z bazy, przypisanie do jakiejś zmiennej, aby potem przekazać i wykorzystać w templatce? Ten post edytował IceManSpy 20.08.2010, 21:31:29 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Klasa "bazowa" jak rozumiem to Twoja inwencja? Nie ma sensu pisanie metod, które:
1. Zawierają kod html (html to powiedzmy szablon/widok, a szablon to dane a nie algorytm aplikacji) 2. Wyświetlają coś na ekranie (nawet obsługa błędów wysyła je do odpowiednich szablonów a nie echuje na ekranie) 3. Łącza wszystko w jeden kociokwik: łączą się z bazą, wykonują zapytania, przerywają działanie skryptu (utniesz stronę w połowie, to bez sensu przecież), echują coś na ekran (a gdy potem błąd to co? Ma browser zwrócić to co mu wysłałeś?) czy obsługują błędy, takich rzeczy nie robi się nawet pisząc kod strukturalny (oczywiście w miarę porządny kod strukturalny) Poza tym przemyśl, co próbujesz zrobić (no i masz błąd logiczny w tej pętli) bo odnoszę wrażenie, że kompletnie nie rozumiesz jak to ma działać... właśnie po to tworzymy system szablonów, by nie musieć w pętli xxxxx razy tworzyć obiektu $tmpl, dodawać do niego po jednej zmiennej i o zgrozo - po każdej takiej akcji wykonywać metodę execute. Tak to ma działać: 1. Tworzysz obiekt $tmpl - RAZ! 2. Dodajesz do niego TABLICĘ zmiennych w układzie nazwa zmiennej => kod html - RAZ! Jeśli potrzebujesz dodać zmienną/zmienne to dodajesz je do tej tablicy (zalecane) lub używasz metody $tmpl->add (mniej wydajne, lepiej użyć metody add tylko raz), nie musisz ponownie tworzyć obiektu $tmpl 3. Łączysz zmienne z szablonem wykonując metodę execute - RAZ! Jeśli jeden szablon nie wystarczy, możesz użyć ich wiele, np.: - pominąłem tworzenie obiektów tmpl, tak tworzysz szablon, który składa się z pod-szablonów, w tym wypadku szablon strony + dwa szablony na każdą kolumnę, w ten sposób budujemy drzewo szablonów. I naucz się, że najpierw się przygotowuje wszystkie zmienne, potem łączy je z html a dopiero na samym końcu wysyła to do przeglądarki, taka jest elementarna logika tworzenia stron w PHP niezależnie od tego, czy zamykasz ten kod w klasy czy nie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Czyli np pobieramy dane z bazy, mamy jakiś szablonik i wtedy podmieniamy te dane i wyświetlamy? (tak odbiegając od tematu właściwego, ale też ważny poruszyłeś (IMG:style_emoticons/default/smile.gif) ) W sumie czytałem o Smarty, ale podobno jeśli są jakieś proste strony to nie warto używać Smarty, bo biblioteka zajmuje ok 300 KB.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.08.2025 - 01:32 |