Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Komponowanie dynamicznych kolumn <TABLE>, Jak najprościej i najwygodniej to zrobić?
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.

Tworze pewną tabelke, spis i potrzebuje zrobić mechanizm, który pozwoli na wybieranie jakie kolumny ma zawierać spis.

Kiedyś zrobiłem taką pętle w pętli, jednak ilośc kodu była bardzo duża.

Prosze o podpowiedź, lub sugestie jak wykonac taką tabeke, jak przetrzymywać informacje o kolumnach?

Może jakiś przykładowy kod?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
werek
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 24.04.2007
Skąd: wwa

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


to mozna osiągnąć na kilka sposobów ale jest pewien kocept który pozwoli Ci to uzyskać a jest konfiguracyjnie prosty w późniejszym uzytkowaniu, przykład poniżej (zakładam że wiesz jak sie pobiera z bazy danych i jak buduje tabele html, tak więc uzyje pseudo php)

  1. $wybrane_pola = array(2,5,6,7,8,10,12,14,15);
  2. $fieldTemplate=array(
  3. 2 => '<td><a href="index.php?d=%s">link</a></td>'
  4. );
  5. while ($row=$query->fetchRow()) {
  6. foreach ($row as $key => $value) {
  7. if (in_array($key,$wybrane_pola)) {
  8. echo sprintf($fieldTemplate[$key],$value);
  9. }
  10. }
  11. }


powyższe umozliwi ci wypełnienie tabeli numerami wybranych pól (przy założeniu że trybem poboru danych z bazy bedzie numeracyjne a nie asocjacyjne) i kiedy dojdzie do budowania tabeli jego wartość będzie wyswietlona zgodnie z template. możesz również zastosować dodatkowa funkcje w której zaszyjesz logike która podejmie decyzje jak ma być dana wartosc przedstawiona w zaleznosci od wartosci jaka przyjmuje vide:

  1. function processValue($value,$templateName=null){
  2. switch ($templateName){
  3. case 'tak_nie':
  4. return ($value == 1) ? 'Tak' : "Nie";
  5. break;
  6. //tutaj dodajesz sobie logike w zaleznosci od formatu
  7. default:
  8. return $value;
  9. break;
  10. }
  11. }
  12. $wybrane_pola = array(2,5,6,7,8,10,12,14,15);
  13. $fieldTemplate=array(
  14. 2 => 'tak_nie'
  15. );
  16. while ($row=$query->fetchRow()) {
  17. foreach ($row as $key => $value) {
  18. if (in_array($key,$wybrane_pola)) {
  19. echo processValue($value,$fieldTemplate[$key]);
  20. }
  21. }
  22. }


chociaż tego typu przetwarzanie w ramach aplikacji MVC powinno się odbyć w widoku, czyli trzeba by było napisać funkcje processValue zgodnie z wymaganiami konkretnego systemu szablonów PHPtal,Smarty,Zend_View. decyzja należy do Ciebie.

polecam manual php, wbrew pozorom to nie ujma z niego korzystać, nawet nie wiesz jak wiele problemów związanych z takimi przyziemnymi problemami jest rozwiązanych w komentarzach pod wpisami funckji.

pozdrawiam i życze najlepszego z tym projektem

Ten post edytował werek 23.02.2013, 11:09:55
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: 10.10.2025 - 06:21