Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rysowanie tabelki
Forum PHP.pl > Forum > PHP
Gligamesh
Witam

zdenerwowało mnie ciągłe powtarzanie kodu (gdy potrzebuje wylistować zawartość w tabelce) więc zrobiłem sobie coś takiego

  1. <?php
  2. function drow_table_head()
  3. {
  4. $arg_list = func_get_args();
  5. $verb = '<tr class="'.$arg_list[0].'">'."\n";
  6. for($i = 1; $i < func_num_args(); $i++) 
  7. {
  8. $arg = explode('|', $arg_list[$i]);
  9. $verb.='<td style="width:'.$arg[0].'px">'.$arg[1].'</td>'."\n";
  10. }
  11. $verb.='</tr>'."\n";
  12.  
  13. return $verb;
  14. }
  15.  
  16. function add_table_row()
  17. {
  18. $arg_list = func_get_args();
  19. $verb = '<tr class="'.$arg_list[0].'">'."\n";
  20. for($i = 1; $i < func_num_args(); $i++) 
  21. {
  22. $verb.='<td>'.$arg_list[$i].'</td>'."\n";
  23. }
  24. $verb.='</tr>'."\n";
  25.  
  26. return $verb;
  27. }
  28.  
  29. ?>


przykładowe wywołanie

  1. <?php
  2. $i=0;
  3. $drow= '<table>';
  4. $drow.= drow_table_head('title','30|lp.','150|Login','200|Adres e-mail', '75|','75|');
  5.  
  6. $sql = mysql_query("SELECT login,email FROM `db_user` ORDER BY login");
  7.  
  8. if(!$sql)
  9. echo '<div class="error">błąd w zapytaniu - '.mysql_errno().' - '.mysql_error().'</div>';
  10.  
  11. $style = array('color','white'); 
  12.  
  13. while($user = mysql_fetch_assoc($sql)) 
  14. {
  15. $i++;
  16. $drow.= add_table_row($style[$i%2],$i,$user['login'],'<a href="mailto:'.$user['email'].'">'.$user['email'].'</a>','edytuj','usuń');
  17. }
  18. $drow.='</table>';
  19.  
  20. echo $drow;
  21. ?>


chciałbym usłyszeć wasz komentarz, nie wiem czy idę w dobrym kierunku bo generalnie pierwszy raz przybrałem taki tok działania. Nie za bardzo jestem przekonany też co do wydajności takiego rozwiązania. Jakiekolwiek sugestie, uwagi mile widziane.
MMX3
2 funckje prasowanie stringów.... nie prościej zrobić klase np. table która będzie zawierała array z wierszami?
i proste to będzie

  1. <?php
  2. $field = mysql_list_fields('baza', 'tabela', $link);
  3. $columns = mysql_num_fields($field);
  4.  for ($i = 0; $i < $columns; $i++) {
  5.  $fields[] = mysql_field_name($field, $i);
  6.  }
  7. $t = new table($fields)
  8. $res = mysql_query($sql);
  9. while($obj = mysql_fetch_object($res)) {
  10. $t->addrow($obj);
  11. }
  12. ?>


Klasy ułatwiają życie. Pozdro
Gligamesh
wolałbym takie rozwiązanie jednak jestem za słaby by coś takiego stworzyć, postaram się coś rozgryźć z tego przykładu ale prawdę mówiąc wiele mi nie mówi..
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.