Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zamiana na dane z bazy
WebKing
post 6.01.2009, 18:30:41
Post #1





Grupa: Zarejestrowani
Postów: 219
Pomógł: 16
Dołączył: 16.07.2007

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


Chciałbym już dokończyć już swój system szablonów ale został mi tylko problem wyświetlania wyników z bazy danych. Otóż chciałbym wykorzystać funkcje która zamieni np.{ID} na wynik z bazy danych, ale cóż nie jestem aż tak dokształcony jak niektórzy z tego forum. Bardzo potrzebuje waszej pomocy, z góry dziękuje za odpowiedź.

Oto mój kod:
  1. <?php
  2. $link = mysql_connect("localhost", "root", "");
  3. mysql_select_db("test", $link);
  4.  
  5. class Template {
  6.    public $template;
  7.  
  8.    function load($file) {
  9.        $file = file_get_contents($file);
  10.        $this->template = $file;
  11.    }
  12.  
  13.    function assign_vars($array) {
  14.        $templates = $this->template;
  15.  
  16.        foreach($array as $key => $val) {
  17.            $temp = str_replace("{".$key."}", $val, $templates);
  18.        }
  19.        $this->template = $temp;
  20.    }
  21.  
  22.    function generate() {
  23.        echo $this->template;
  24.    }
  25. }
  26.  
  27. $template = new Template;
  28. $template->load("template.html");
  29. $result = mysql_query("SELECT * FROM test");
  30. while ($row = mysql_fetch_array($result)) {
  31.    $template->assign_vars(array(
  32.        "ID" => $row["id"],
  33.        "PASS" => $row["pass"]
  34.    ));
  35. }
  36. $template->generate();
  37. ?>


Niby działa ale nie wyświetla tak jak trzeba. Mam w bazie tabele test a w niej pola id i pass, dodałem do niej dwa rekordy i chciałbym aby były one poprawnie wyświetlone.

Błagam, proszę o pomoc.
Go to the top of the page
+Quote Post
MateuszS
post 6.01.2009, 19:40:19
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


A jak są wyświetlone? Co jest źle? Nierówno, biały ekran, o co chodzi? Może to ja już jestem zmęczony bo nie bardzo wiem w czym jest problem skoro działa.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 6.01.2009, 19:58:49
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Po jaką chwałę korzystasz z czegoś takiego:
  1. <?php
  2. $file = file_get_contents($file);
  3.       $this->template = $file;
  4. ?>

Powtarza się to u Ciebie po parę razy i marnuje tylko pamięć.

A co do problemu:
  1. wielkość znaków ma znaczenie
    1. <?php
    2. $temp = str_replace("{".$key."}", $val, $templates)
    3. ?>

    Za każdym razem - do przetwarzania - bierzesz "czystą" zmienną. Z tego wniosek, że podstawienie zadziała tylko dla ostatniego klucza (kolumny) z tablicy. Winny jest niepoprawny trzeci parametr, pomyśl trochę. winksmiley.jpg


Ten post edytował erix 6.01.2009, 20:00:34


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
WebKing
post 7.01.2009, 17:58:27
Post #4





Grupa: Zarejestrowani
Postów: 219
Pomógł: 16
Dołączył: 16.07.2007

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


erix rozumiem ale nie umiem na tyle php aby zrozumieć co jest w tym źle
Go to the top of the page
+Quote Post
phpion
post 7.01.2009, 18:12:14
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




WebKing:
Czy przypadkiem tutaj:
http://forum.php.pl/index.php?showtopic=110461
nie miałeś tego samego problemu? Operujesz na zmiennej lokalnej zamiast na składowej klasy podczas wykonywania str_replace.
Go to the top of the page
+Quote Post
WebKing
post 8.01.2009, 15:09:53
Post #6





Grupa: Zarejestrowani
Postów: 219
Pomógł: 16
Dołączył: 16.07.2007

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


Tylko że w tym kodzie tutaj usunąłem co nieco i nie będzie działało ustalmy że zmienna $close[0] będzie zawierała treść z bloku

Może wyjaśnię to jeszcze raz. Zrobiłem kodzik który wyciąga tekst z bloku np.<team_rows> i </team_rows> w zmiennej $close[0] jest tekst który posiada ten blok. Za pomocą funkcji foreach rozbijam zmienną $array na $key i $value chciałbym to wszystko zamienić za pomocą str_replace ale albo się wyświetla tylko jeden rekord z bazy lub wszystkie ale tylko jeden jest zamieniony.

Pomoże ktoś? Bardzo potrzebuje pomocy chciałbym już to skończyć.

Ten post edytował WebKing 8.01.2009, 15:09:34
Go to the top of the page
+Quote Post
erix
post 8.01.2009, 21:05:50
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A widzę, że nie przeczytałeś uważnie mojego posta. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
WebKing
post 22.01.2009, 18:54:54
Post #8





Grupa: Zarejestrowani
Postów: 219
Pomógł: 16
Dołączył: 16.07.2007

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


Wiem, nie umiem tyle co ty nie wiem o co ci chodzi ale chyba wiem że jeżeli nie używał bym pętli to wyszło by tak jak bym chciał
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:47