Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z bez-htmlowym generowaniem tabelki
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

Mam problem z bez-htmlowym generowaniem tabelki. Znaczy, nie ma htmlu po stronie php. Skrypt pobiera odpowiednie dane i szablony i zamienia znaczniki z szablonów z danymi. Wszystko działało dopóki nie musiałem tym kodem wygenerować tabelki. Poniższy kod wypluwa miazgę tabeli, komórek i td. Jest na tyle dobrze że nie rozwala strony i na tyle źle że nie wszystkie dane zmienia, wyświetla a tabela nie "działa" poprawnie.

  1. $plik = file_get_contents($this -> szablon_tabeli);
  2. $wiersz = file_get_contents($this -> szablon_wiersza);
  3.  
  4. $polaczenie = new baza;
  5. $query = 'SELECT * FROM `podstrony`';
  6. $wynik = mysql_query($query);
  7. $wiersze = '';
  8. while($result = mysql_fetch_assoc($wynik))
  9. {
  10.  
  11. $wiersze .= str_replace('<nazwa>', $result['nazwa'], $wiersz);
  12. $wiersze .= str_replace('<tytul>', $result['tytul'], $wiersz);
  13. $wiersze .= str_replace('<id>', $result['id'], $wiersz);
  14. }
  15. $plik = str_replace('<wiersze>', $wiersze, $plik);
  16. return $plik;

Wiersz:
  1. <tr><td><nazwa></td><td><tytul></td><td><a href="podstrony.php?do=edit&act=first&id=<id>"><img style="border: 0;" src="../images/edit.gif"></a>  <a href="podstrony.php?do=delete&act=first&id=<id>"><img border="0" src="../images/kosz.gif"></a></td></tr>

W $plik jest zawarty nagłówek tabeli, z pierwszą linią komórek i "zamykaczem" tabeli.


Proszę o wskazówki jak to naprawić, lub co robię źle. Ewentualnie zapodajcie inny pomysł robienia tabelek.
zegarek84
Cytat(thomson89 @ 17.08.2010, 18:08:49 ) *
Proszę o wskazówki jak to naprawić, lub co robię źle. Ewentualnie zapodajcie inny pomysł robienia tabelek.
a może szablony bardziej tradycyjne?? tzn. jeśli chcesz korzystać ze zmiennych w szablonie to z tablicy możesz zmienne wyeksportować funkcją extract - oczywiście tego też nie preferuję, gdyż jeśli zmienna jest nie zdefiniowana to może walić błędami - rozwiązanie - nie zdefiniowana zmienna niech będzie nullem automatycznie - jak... zamiast w szablonie pisać np. $tytul to piszę $this->tytul i ustawiam odpowiedniego gettera i jeśli zmiennej nie ma to walę nulem... lub zamiast metodami magicznymi to metodą dostępową jakąś $this->getVar('tytul')....

no tak - ale napiszesz, że to musiało by być wewnątrz klasy - ten szablon - nic podobnego - tzn. i tak i nie - nie jako stały element klasy... daje się gdzieś definicję szablonu, podaje zmienne i wyciąga z niego wynik... czyli w metodzie zwracającej cały szablon w uproszczeniu jest konstrukcja:
Kod
public function przyklad(){
            ob_start();
// W INKLUDOWANYM PLIKU SKORO ON JEST W TYM MIEJSCU MASZ DOSTĘP DO WSZYSTKICH ZMIENNYCH TEJ KLASY NAWET PRYWATNYCH!!!!
            include $this->file;
            $this->wynik = ob_get_contents();
            ob_end_clean();
return $this->wynik;
}

u siebie mam to jeszcze inaczej i na metodzie prywatnej/chronionej gdyż sobie dorobiłem mechanizm zagnieżdżeń, a wynik jest generowany dopiero na końcu - chyba, że potrzebuję wcześniej to jest zwracany wcześniej przez wymuszenie metod...

niżej niby jest połączony kod html z php ale zasada ta sama gdyż wynik nie zostanie wyświetlony a szablon można po prostu zainkludować wewnątrz:
  1. <?php
  2. // a nie lepiej szablon robić na innej zasadzie??
  3. //$plik = file_get_contents($this->szablon_tabeli);
  4. $wiersz = file_get_contents($this->szablon_wiersza);
  5. $polaczenie = new baza;
  6. $query = 'SELECT * FROM `podstrony`';
  7. $wynik = mysql_query($query);
  8.  
  9. // CIAŁO TABELKI
  10. while ($result = mysql_fetch_assoc($wynik)) { // W PĘTLI GENEROWANE WIERSZE
  11. ?><tr>
  12. <td><?php echo $result['nazwa'];?></td>
  13. <td><?php echo $result['tytul'];?></td>
  14. <td>
  15. <a href="podstrony.php?do=edit&act=first&id=<?php echo $result['id'];?>">
  16. <img style="border: 0;" src="../images/edit.gif" />
  17. </a>
  18. <a href="podstrony.php?do=delete&act=first&id=<?php echo $result['id'];?>">
  19. <img border="0" src="../images/kosz.gif" />
  20. </a>
  21. </td>
  22. </tr><?php
  23. }
  24. $wiersze = ob_get_contents();
  25. // KONIEC CIAŁA TABELKI
  26.  
  27. $plik = str_replace('<wiersze>', $wiersze, $plik);
  28. return $plik;
  29. ?>
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.