[php] klasa w klasie i brak danych

0

Stworzyłem sobie dwie klasy - pierwsza to główny obiekt z informacjami a druga to zbiór tych obiektów stworzonych w tablicy.
Konstruktory głównego obiektu ładnie się wykonują, na pewno wszystkie informacje które chce aby zostały zapisane są zapisywane. Jednak gdy druga klasa wywołuje inną metodę niż konstruktor w klasie z głównym obiektem to się wszystko wali. Po prostu brak jest danych w zmiennych (tablicach), w których na pewno w konstruktorze coś przypisałem.

<?
	class projects
	{
		var $information;
		var $images;
		
		function projects($name)
		{
			$query = "SELECT * FROM projekty WHERE nazwa='$name'";
			$result = mysql_query($query) or die('Error, query failed');
   		$row = mysql_fetch_array($result);
			$this->information = $row;
				
			$query = "SELECT * FROM screen WHERE id_projekt='$name'";
			$result = mysql_query($query) or die('Error, query failed');
			$count=0;
			while($row = mysql_fetch_array($result, MYSQL_ASSOC))
			{
				$this->images[$count]["opis"] = (string)$row["opis"];
				$this->images[$count]["nazwa"] = (string)$row["nazwa"];
				$count++;
			}
		}
		
		function show_image($il)
		{
 //******************  TU WŁĄŚNIE BRAK TYCH DANYCH (BRAK JAKIEJKOLWIEK WARTOŚCI w $opis1
			$opis1=$this->images[0]["opis"];
			echo $opis1;
			//echo "<a href=\"screen/big/$nazwa1\" target=\"_blank\"><img class=\"imgLink\" src=\"screen/small/$nazwa1\" alt=\"$opis1\" /></a>";
		}
		
	  
	}
	
	//***********************************************************
	
	class list_projects
	{
		var $all_projects;
		
		function list_projects()
		{
			$query = "SELECT nazwa FROM projekty";
			$result = mysql_query($query) or die('Error, query failed');
   		
   		while($row = mysql_fetch_array($result, MYSQL_ASSOC))
			{
				$this->all_projects[] = new projects($row["nazwa"]);
			}
		}
		
		function show_last()
		{
				$this->all_projects[0]->show_image(0);
		}
	}
?>
0

kod mi dziala, wpisalem statycznie tabilice nie z bazy i dziala bez problemu :/

  1. czy na pewno przypisujesz dane??
    wpisz:
    var_dump($row) - w konstruktorze projects (przy wpisywaniu danych do images)
    var_dump($this->images) - po wykonaniu przypisania
    var_dump($this->images) - w funkcji show_image()

  2. SQL injection -> "SELECT * FROM projekty WHERE nazwa='$name'" takie cos moze byc "trosze" niebezpieczne (choc pobierasz nazwe z bazy, ale niech w nazwie bedzie apostrof i... zonk)

$result = mysql_query($query) or die('Error, query failed')

nie ma sesnu robic die, jesli mysql_query i tak wyswietli komunikat o bledzie :]
daj @mysql_query wtedy bedzie wyswietlony tylko Twoja informacja o 'query failed'

1 użytkowników online, w tym zalogowanych: 0, gości: 1