Generowanie menu z tablicy


(northwest) #1

Witam serdecznie,

mam taki kod:

$tablica2 = $ms->query_select("SELECT z bazy;");

echo "

";

print_r ($tablica2);

echo "

"; [/code] który zwraca mi następujący wynik:
[code] Array ( [0] => Array ( [nazwa_kategori] => Kategoria 1 [id_kategori] => 1 [nazwa_podkategori] => Podkategoria 2 [id_podkategori] => 2 [nazwa_podpodkategori] => Podpodkategoria 3 [id_podpodkategori] => 3 ) [1] => Array ( [nazwa_kategori] => Kategoria 1 [id_kategori] => 1 [nazwa_podkategori] => Podkategoria 3 [id_podkategori] => 3 [nazwa_podpodkategori] => Podpodkategoria 3 [id_podpodkategori] => 3 ) [2] => Array ( [nazwa_kategori] => Kategoria 1 [id_kategori] => 1 [nazwa_podkategori] => Podkategoria 3 [id_podkategori] => 3 [nazwa_podpodkategori] => Podpodkategoria 3 [id_podpodkategori] => 3 ) [3] => Array ( [nazwa_kategori] => Kategoria 1 [id_kategori] => 1 [nazwa_podkategori] => Podkategoria 2 [id_podkategori] => 2 [nazwa_podpodkategori] => Podpodkategoria 3 [id_podpodkategori] => 3 ) [4] => Array ( [nazwa_kategori] => Kategoria 2 [id_kategori] => 2 [nazwa_podkategori] => Podkategoria 1 [id_podkategori] => 1 [nazwa_podpodkategori] => Podpodkategoria 1 [id_podpodkategori] => 1 ) [5] => Array ( [nazwa_kategori] => Kategoria 2 [id_kategori] => 2 [nazwa_podkategori] => Podkategoria 1 [id_podkategori] => 1 [nazwa_podpodkategori] => Podpodkategoria 1 [id_podpodkategori] => 1 ) )

chciałbym zbudować w oparciu o te dane coś takiego (takie menu):

  • [id_kategori] - [nazwa_kategori]

  • [id_podkategori] - [nazwa_podkategori]

  • [id_podkategori] - [nazwa_podkategori]

  • [id_podpodkategori] - [nazwa_podpodkategori]

  • [id_podkategori] - [nazwa_podkategori]

  • [id_podpodkategori] - [nazwa_podpodkategori]

  • [id_podpodkategori] - [nazwa_podpodkategori]

  • [id_podpodkategori] - [nazwa_podpodkategori]

  • [id_kategori] - [nazwa_kategori]

  • [id_kategori] - [nazwa_kategori]

....

....

Czyli chciałbym przefiltrować całą tablicę pod kontem duplikatów i potem zbudować menu na tej podstawie...

Wie ktoś może jak to zrobić najlepiej?

Z góry dziękuje za pomoc,


(Grzesie K) #2
foreach($tablica2 as $a){

	$menu[$a['id_kategori']]=$a;

}

foreach($menu as $a){

	$a=array_values($a);

	for($i=0;$i
		if($i%2==1){continue;}

		echo $a[$i+1].' - '.$a[$i]."
\n";

	}

}

Mam nadzieję, że o to chodziło. (Filtracja według id_kategori, ale można też porównywać inne elementy).

Ps. Powinieneś napisać chyba kategori i (przez dwa "i") :slight_smile:


(northwest) #3

to nie do końca to, ale blisko :slight_smile:

nie wyświetla wszystkich podkategorii i podpodkategorii przypisanych kategoriom głównym :frowning:

czyli:

Kategoria 1

-- Podkategoria 2

----Podpodkategoria 3

-- Podkategoria 3

----Podpodkategoria 3

Kategoria 2

-- Podkategoria 1


(Grzesie K) #4

Mógłbyś mi podać czego dokładnie nie wyświetla bo jakoś nadal nie widzę błędu...