Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Metoda zwracająca tematy forum
Forum PHP.pl > Forum > PHP > Object-oriented programming
acknex
Witam, to mój pierwszy post na forum i od razu zaczynam problemem wink.gif Ale do rzeczy. Posiadam metodę w klasie która jest odpowiedzialna za wyświetlenie for w moim skrypcie. Po przeanalizowaniu modelu MCV stwierdzam, że nie jest ona do końca z nim zgodna, planuję ją zmodyfikować i tutaj pojawia się problem. Metoda wygląda tak:

  1. public function listForum() {
  2. require_once("include/class.database.php");
  3.  
  4. $connector = new DbConnector();
  5. $result = $connector->query("SELECT * FROM forum_question ORDER BY id DESC");
  6.  
  7. $color = 1;
  8.  
  9. while($rows = $connector->fetchArray($result)){
  10. echo '
  11. <tr class="row'.$color.'">
  12. <td align="left"><img src="./images/folder_open.png" border="0" width="15" height="15" />&nbsp;<a href="view.topic.php?id='.$rows['id'].'">'.$rows['topic'].'</a><BR></td>
  13. <td align="center">'.$rows['view'].'</td>
  14. <td align="center">'.$rows['reply'].'</td>
  15. <td align="center">'.$rows['datetime'].' przez <a href="./profile.php?login='.$rows['name'].'">'.$rows['name'].'</a></td>
  16. </tr>
  17. ';
  18. $view = 'aaa';
  19. if ($color == 1) { $color = 2;} else { $color = 1;}
  20. }
  21. }



Chcę przerobić tą metodę tak, żeby zwracała wszystkie tematy po kolei ale nie bardzo mam pomysł jak to rozwiązać. Będę wdzięczny za wskazówki.
phpion
Nie możesz zwrócić po prostu $connector->fetchArray($result)? Jeśli nie zwraca to tablicy to przeleć po elementach zwróconych przez tą metodę, przypisz je do tablicy i zwróć. Wyświetlanie rekordów w postaci tabelki zostaw widokowi, który dostanie tablicę danych.
acknex
Rozwiązałem to tak:

Plik: include/class.forum.php
  1.  
  2. public function listForum() {
  3. require_once("include/class.database.php");
  4.  
  5. $connector = new DbConnector();
  6. $result = $connector->query("SELECT * FROM forum_question ORDER BY id DESC");
  7.  
  8. while($rows = $connector->fetchArray($result)){
  9. $_data[] = $rows['id']."@".$rows['topic']."@".$rows['view']."@".$rows['reply']."@".$rows['datetime']."@".$rows['name'];
  10. }
  11.  
  12. return $_data;
  13. }


Plik: forum.php

  1. <?php
  2. require_once("include/class.forum.php");
  3. require_once("include/class.users.php");
  4.  
  5. $forum = new Forum();
  6. $rows = $forum->listForum();
  7.  
  8. $color = 1;
  9.  
  10. for ($i=0; $i < count($rows); $i++) {
  11. $data = explode("@", $rows[$i]);
  12.  
  13. echo '<tr class="row'.$color.'">
  14. <td align="left"><img src="./images/folder_open.png" border="0" width="15" height="15" /> <a href="view.topic.php?id='.$data[0].'">'.$data[1].'</a><BR></td>
  15. <td align="center">'.$data[2].'</td>
  16. <td align="center">'.$data[3].'</td>
  17. <td align="center">'.$data[4].' przez <a href="./profile.php?login='.$data[5].'">'.$data[5].'</a></td>
  18. </tr>';
  19.  
  20. if ($color == 1) { $color = 2; } else { $color = 1;}
  21. }
  22. ?>


Mimo wszystko nie jestem do końca usatysfakcjonowany tym rozwiązaniem, więc jeśli ktoś ma jakieś sugestie to chętnie nad tym popracuję :)
marcio
Po co ci ta malpa tam?
Zwroc normalnie tablice.
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.