Autor Zpráva
fotohemalacz
Profil
Zdravím, jsem v tomto lama tak to bude trivialita - ve funkci která má postupně vytvářet objekty, plnit je daty z databáze a následně vložit do pole objektů, které je také cílem a mění hodnotu pole i mimo fci, mám ve vysledku stále stejný objekt ve všech buňkách pole, i když v průběhu vce při kontrolním výpisu to vypadá ok.

Za upozornění na chybu velké díky, nejsem schopný přijít tomu na kloub. Php soubor je tady
http://dip.fotohemala.cz/dbs.php


//funkce výpisu fotek z databáze do pole objektů

function VytvorPoleFotekDBS ($sql,&$pole)
{
  	$vysledek=mysql_query($sql);
	$radky=mysql_num_rows($vysledek);
	if ($radky==0) echo "V databázi není informace o žádné fotografii!";
	else
	{	
		$i = 1;
		$foto = new fotka;
		while ($zaznam=MySQL_Fetch_Array($vysledek)):
			$foto->jmeno = $zaznam["jmeno"];
			$foto->cesta = $zaznam["cesta"];
			$foto->xLatitude = $zaznam["x"];
			$foto->yLongitude = $zaznam["x"];
			$foto->xRef = $zaznam["xref"];
			$foto->yRef = $zaznam["xref"];
			$foto->zAltitude = $zaznam["z"];
			$foto->pozn = $zaznam["pozn"];
			
			$pole[$i] = $foto;
			echo "Foto ",$i,": ";
			print_r ($pole[$i]);   //tohle vypíše vpohodě různé údaje
			echo "<br>\n"; 
			$i++;
			//$foto->Vypis($foto); echo "<br>\n";
		endwhile;
	
		
	//chyba, po uknočení předchozího while jsou všechny objekty v poli "pole" totožené!!! (násl. cyklus vypíše 13x totéž)
	
	foreach ($pole as $value)
	{
		$foto->Vypis($value);  //tady už vypíše x-krát stejné údaje, problém fe fci vypis není...
	}
	
	}
	
}

nethor
Profil
Řekl bych, že problém může být ve dvou věcech:
1)
$foto = new fotka;
má být uvnitř cyklu
while ($zaznam=MySQL_Fetch_Array($vysledek)):
	$foto = new fotka;
	$foto->jmeno = $zaznam["jmeno"];
	$foto->cesta = $zaznam["cesta"];
	...atd ...

Jinak se stále přepisují hodnoty stejného objektu. (a zustanou poslední)
2)
jestli k prom. $pole[$i] přistupuješ i mimo fci, musíš z ní ve fci nejprve udělat globální
Global $pole;
fotohemalacz
Profil
Díky moc za pomoc :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: