Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa bazy danych
_bezimienny
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 19.03.2006
Skąd: Wisła

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


Być może gdzieś na forum jest podobny wątek do mojego problemu, ale nie potrafiłem go znaleźć.
Robię optymalną klasę obsługującą stronę operując na bazie danych.
Żeby połączyć się z bazą i wybrać tabelę, używam metody tworzenia nowego obiektu. W konstruktorze mam połączenie do bazy danych a w destruktorze mam:
  1. <?php
  2. mysql_free_result[$this->result];
  3. mysql_close[$this->connect]
  4. ?>

Tutaj mam głównego winowajce:
  1. <?php
  2. //zmienne z $this są zdefiniowane jako private w klasie
  3. function read($table,$array) // $table - nazwa tabeli w bazie, $array - zawiera pola w tabeli do wyświetlenia
  4. {
  5. $this->result = mysql_query("SELECT * FROM ".$table) or die ('Cannot do it!');
  6. if(mysql_num_rows($this->result)>0)
  7. {
  8. $this->rows=0;
  9. while($this->row = mysql_fetch_assoc($this->result))
  10. {
  11. for($this->colls=0;$this->colls<count($array);$this->colls++)
  12. {
  13. $temp = $array[$this->colls];
  14. $this->tab[$this->colls][$this->rows] = $this->row[$temp]; // dzieki temu mam dostep do tej tabeli z poza klasy (public)
  15.  
  16. }
  17. $this->rows++;
  18. }
  19. }
  20. }
  21. ?>

Tutaj jest problem. Jak mogę dostać dostęp do poszczególnych elementów w tablicy? Jak naprzykład chcę wyświetlić pole 'id'. Wewnątrz klasy to wyświetlałem to poprzez $row['id']; ale nie wiem jak sobie z tym poradzić poza klasą.
Do wyświetlenia wszystkich wpisów w bazie można zrobić takie coś:
  1. <?php
  2. for($i=0;$i<$base->rows;$i++)
  3. {
  4. for($j=0;$j<$base->colls;$j++)
  5. {
  6. echo $base->tab[$j][$i]."<br>";
  7. }
  8. }
  9. ?>

No ale nie mam pojęcia jak to zrobić inaczej, żeby nie wpisywać monotonnie $row['id']; tylko żeby było to dynamiczne. Dzięki temu mógłbym wykorzystywać tą metodę wiele razy.

Jakieś rozwiązania? Rady? Wskazówki?

PS. W kodzie mogą się pojawić naleciałości z c++, ale to musicie mi wybaczyć na początek (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Ja wewnątrz takiej klasy wczytuję rekordy to tablicy. każde pole tablicy jest rekordem, czyli tablicą asocjacujną o nazwach pól dokładnie takich samych jak te zwrócone przez funkcję mysql_fetch_assoc(). Jeśli ta tablica jest zmienną publiczną to mam do niej dostęp spoza obiektu. Jeśli nie to moge sobie zrobić funkcję, która będzie mi tę tablicę zwracać na zewnątrz obiektu. Mam nadzieję, że nie zagmatwałam.
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: 7.10.2025 - 03:16