Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zamiana na dane z bazy
Forum PHP.pl > Forum > Przedszkole
WebKing
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.
MateuszS
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.
erix
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
WebKing
erix rozumiem ale nie umiem na tyle php aby zrozumieć co jest w tym źle
phpion
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.
WebKing
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ć.
erix
A widzę, że nie przeczytałeś uważnie mojego posta. winksmiley.jpg
WebKing
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ł
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.