Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Powazny problem z klasami, Problem z tablicą obiektów będącą własno
ikioloak
post
Post #1





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Stworzylem klase ktora sluzy do przechowywania informacji o kategoriach:
  1. <?php
  2.  
  3. // Klasa Kategorie
  4. class TCategories
  5. {
  6.   private $count;                               //ilosc kategorii
  7.   private $tablename;                           // nazwa tabeli w bazie mysql
  8.   public $categories=array();                   //tablica obiektow 'kategoria'
  9.  
  10.   public function __construct($tab_name)               //Konstruktor klasy TCategories
  11.   {
  12.     $i=0;
  13.     $this->tablename=$tab_name;
  14.     $query=mysql_query(&#092;"SELECT * FROM $tab_name ORDER BY id\") or die(mysql_error());
  15.     while ($result=mysql_fetch_object($query))
  16.     {
  17.         $this->categories[$i]= new TCategory($result->id,$result->name);
  18.         $i++;
  19.     }
  20.     $this->count=(mysql_num_rows($query)-1);
  21.   }
  22.  
  23.   public function GetTableName()
  24.   {
  25.     return $this->tablename;
  26.   }
  27. }
  28.  
  29. ?>


I klasę przechowującą informacje o danej kategorii:
  1. <?php
  2.  
  3. class TCategory extends TCategories
  4. {
  5.   private $id;
  6.   private $name;
  7.  
  8.   public function __construct($id,$name2)
  9.   {
  10.     $this->id=$id; $this->name=$name2;
  11.     print &#092;"Dodano kategorie id: \".$this->id.\" nazwa:\".$this->name.\"<br>\";
  12.   }
  13.  
  14.   public function ChangeName($name)
  15.   {
  16.     if (isset($name))
  17.      {
  18.        $tab=$this->tablename;
  19.        print &#092;"this = \".$tab;
  20.       $query=&#092;"UPDATE \".parent::GetTableName().\" SET name = '\".$name.\"' WHERE `id` = \".$this->GetID().\" LIMIT 1;\";
  21.        print $query;
  22.        mysql_query($query) or die(mysql_error());
  23.        $this->name=$name;
  24.        return true;
  25.      } else return false;
  26.   }
  27.  
  28. public function GetID()
  29.   {
  30.   return $this->id;
  31.   }
  32. }
  33.  
  34. ?>

dla wyjasnienia TCategory->categories[] to jest tablica obiektow klasy TCategory.
Tworze obiekt:
  1. <?php
  2.  
  3. $categories= new TCategories(&#092;"categories\");
  4.  
  5. ?>


W bazie znajduja juz sie dane wiec do $categories->categories[] ladowane sa informacje z bazy danych. Problem jest gdy chce zmienic nazwe danej kategorii. Chodzi dokladnie o ta linie w metodzie ChangeName() klasy TCategory:

  1. <?php
  2.  
  3. $query=&#092;"UPDATE \".parent::GetTableName().\" SET name = '\".$name.\"' WHERE `id` = \".$this->GetID().\" LIMIT 1;\";
  4.  
  5. ?>

parent:GetTableName() jest pusta zmienna. Chyba w takim razie tak nie mozna. Wiec jak powienienem sie odwolac do wlasnosci klasy TCategories w klasie TCategory?

Ten post edytował ikioloak 6.03.2005, 00:00:40
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 16:43