Autor Zpráva
Peter2
Profil *
Poprosil by som niekoho o pomoc, mam kod kde taham kategorie a podkategorie, hlavne kategorie som vypol a zobrazuje mi iba podkategorie kde by som chcel zobrazovat aj img ale ten mi necita...img ale existuje!!!

<?php
function processCategories2($level, $path, $sel)
{

	$out = array();
	$cnt = 0;

	$q = mysql_query("select id, kategoria from kategorie where parent=$path[$level] AND kategoria<>'' ORDER BY poradie, kategoria ") or die (mysql_error());
	
	while ($row = mysql_fetch_row($q))
	
	{
		$out[$cnt][0] = $row[0];
		$out[$cnt][1] = $row[1];
		$out[$cnt][2] = $level;
		$cnt++;
    

		if ($level+1<count($path) && $row[0] == $path[$level+1])
		{
			$sub_out = processCategories2($level+1,$path,$sel); // vypnu sa podkategorie v menu

			for ($j=0; $j<count($sub_out); $j++)
			{
				$out[] = $sub_out[$j];
				$cnt++;
			}
		}

	}

	return $out;
}	

	$path = array($zajazdid);
	$curr = $zajazdid;
	do
	{
		$q = mysql_query("SELECT parent FROM kategorie WHERE id='$curr'  AND kategoria<>''  ORDER BY poradie, kategoria ") or die (mysql_error());
 	
		$row = mysql_fetch_row($q);
		$curr = $row ? $row[0] : 0; 
		$path[] = $curr;
     
	} while ($curr);

	//$path = array_reverse($path);  //vypnu sa hlavne kategorie

	$cats = processCategories2(0,$path,$zajazdid);


for ($i=0; $i<count($cats); $i++)
{
	$space="<div style=\"margin-top: 0px;\">"; 
		
  	
		$znazov=$cats[$i][1];
		$zid=$cats[$i][0];
		$zlevel=$cats[$i][2];
		
		for ($j=0;$j<$zlevel;$j++) $space.="&nbsp;&nbsp;";

	
	if ($zajazdid==$zid)  $class="menu"; else $class="menukat";
			echo "<a href='?zajazdid=$zid'>$space $znazov<img src=\"myimages/$zaznam[foto]\" border=\"0\"  width=\"150\"></a> </div>\n";
}

?>
Radek Cvek
Profil
Nikde nevidím, co je $zaznam - odkud se ta hodnota načte.
Peter2
Profil *
No neviem, daval som tam aj $row[foto] a nic...
Radek Cvek
Profil
v SELECTU je pouze id, kategoria a v druhém parent - takže foto se z Db nevybírá a psal bych $row["foto"] a použil mysql_fetch_array
pokud se použije mysql_fetch_row, nemůže se použít $row["foto"]
Peter2
Profil *
Tak som skusil toto ale nepomaha, ked som dal: $row["foto"] tak hadze chybu:

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /data/x/d/xd-design.eu/web/CS/kattree2.php on line 74


<?php

function processCategories2($level, $path, $sel)
{

	$out = array();
	$cnt = 0;

	$q = mysql_query("select id, kategoria, foto from kategorie where parent=$path[$level] AND kategoria<>'' ORDER BY poradie, kategoria ") or die (mysql_error());
	
	while ($row = mysql_fetch_array($q))
	
	{
		$out[$cnt][0] = $row[0];
		$out[$cnt][1] = $row[1];
		$out[$cnt][2] = $level;
		$cnt++;
    
		
		if ($level+1<count($path) && $row[0] == $path[$level+1])
		{
			$sub_out = processCategories2($level+1,$path,$sel); // vypnu sa podkategorie v menu
		
			for ($j=0; $j<count($sub_out); $j++)
			{
				$out[] = $sub_out[$j];
				$cnt++;
			}
		}

	}

	return $out;
}	



	$path = array($zajazdid);
	$curr = $zajazdid;
	do
	{
		$q = mysql_query("SELECT parent, foto FROM kategorie WHERE id='$curr'  AND kategoria<>''  ORDER BY poradie, kategoria ") or die (mysql_error());
 	
		$row = mysql_fetch_array($q);
		$curr = $row ? $row[0] : 0; //get parent ID
		$path[] = $curr;
     
	} while ($curr);
   

	//$path = array_reverse($path);  //vypnu sa hlavne kategorie

	$cats = processCategories2(0,$path,$zajazdid);


for ($i=0; $i<count($cats); $i++)
{
	$space="<div style=\"margin-top: 0px;\">";
		
  	
		$znazov=$cats[$i][1];
		$zid=$cats[$i][0];
		$zlevel=$cats[$i][2];
$srch = MySQL_Query($q);
$rows = MySQL_Num_Rows($srch);
		
		for ($j=0;$j<$zlevel;$j++) $space.="&nbsp;&nbsp;";

	
	if ($zajazdid==$zid)  $class=""; else $class="";
//			echo "<a class=$class href='?tovarid=$zid'>$space $znazov</a> \n";
			echo "<a href='?zajazdid=$zid'>$space $znazov<img src=\"myimages/$row[foto]\" border=\"0\"  width=\"150\"></a> </div>\n";
}

?>
Radek Cvek
Profil
Znáš strukturu databáze?
Opravdu je sloupec foto v tabulce kategorie?
To je problém toho, že jde špatně poznat, co z databáze vytahuješ - třeba:
$out[$cnt][0] = $row[0];
        $out[$cnt][1] = $row[1];

Najednou vytahuješ tři věci id, kategoria, foto - ale pracuješ jenom se dvěma řádky $row[0], $row[1]
- lepší je to dělat nějak takto:
<?php 
$q = mysql_query("select id, kategoria, foto from kategorie where parent=$path[$level] AND kategoria<>'' ORDER BY poradie, kategoria ") or die (mysql_error());    
    while ($row = mysql_fetch_assoc($q))    
    {
        $id[] = $row["id"];
        $kategoria[] = $row["kategoria"];
        $foto[]  = $row["foto"];
    .... 

pak už víš, co je co a můžeš s tím jednoduše pracovat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0