Skocz do zawartości

Problem z wielopoziomowym menu


Rekomendowane odpowiedzi

Witam, mam problem z wielopoziomowym menu, a mianowicie chce wyciągnąć do menu z javascript i css kategorie i wiadomości przypisane do konkretnej kategorii z bazy.

Wiem jak wyciągnąć kategorie, wiadomości, ale nie wychodzi mi wstawienie tego do menu.. Proszę o pomoc.

Standardowe menu:


[/code]
Moja edycja:
[code]
  • Głowna <? $pytanie_01 = mysql_query("SELECT * FROM menu_kategorie"); $pytanie_02 = mysql_query("SELECT * FROM menu") or die("Błąd połączenia z tabelą..."); if(mysql_num_rows($pytanie_01) > 0) { while ($row = mysql_fetch_assoc($pytanie_01)) { echo "
  • ".$row['nazwa'].""; while ($row = mysql_fetch_assoc($pytanie_02)) { echo ""; } } } ?>
menu - tabela z wiadomościami menu_kategorie - tabela z kategoriami Aktualnie wyciąga tylko jedna wiadomość, wcześniej próbowałem innych sposobów to wyciągało mi wszystkie wiadomości ale do ostatniej kategorii na liście. Bardzo proszę o pomoc, męczę się z tym już sporo czasu.
Odnośnik do komentarza
Udostępnij na innych stronach

$query = mysql_query("SELECT * FROM menu");

$menu = array();

while($row = $query->fetch_assoc()){

$menu[$row['catid']][] = $row['name'];

}


$query = mysql_query("SELECT * FROM menu_kategorie");

while($row = $query->fetch_assoc()){

echo $r['name'];

foreach($menu[$row['id']] as $m)

echo $m;

}

To jest wzór, przerób sobie. ;-)

Nazwa tabeli: menu_kategorie

Kolumny: id, name

Id - id kategorii

name - nazwa kategorii

Nazwa tabeli: menu

Kolumny: catid, name

catid - id kategorii do której przypisany jest odnośnik

name - nazwa odnośnika

Odnośnik do komentarza
Udostępnij na innych stronach

Mam coś takiego

$query = mysql_query("SELECT * FROM menu");

$menu = array();

while ($row = mysql_fetch_assoc($query)) {

$menu[$row['kategoria']][] = $row['tytul'];

}


$query2 = mysql_query("SELECT * FROM menu_kategorie");

while ($row = mysql_fetch_assoc($query2)) {

echo $r['nazwa'];

foreach($menu[$row['id']] as $m)

echo $m;

}
Ale wywala mi błąd

Warning: Invalid argument supplied for foreach() in /home/virtual/..../index.php on line 54


Linia 54: foreach($menu[$row['id']] as $m)

Nie mam już ogólnie do tego pomysłów :( i jak to wstawić to to menu? Pomocy :(

Odnośnik do komentarza
Udostępnij na innych stronach

moje dwie tabele wygladaja tak:

menu: id-tytul-tresc-data-kategoria-autor

menu_kategorie: id-nazwa

chodzi mi o wyswietlenie tytulow w danej kategorii. do menu pobiera mi kategorie z tabeli menu_kategorie (np sport, motoryzacja itp) ale po rozwinieciu danej kategorii nie wyswietla artykulow, ktore naleza do tej wlasnie kategorii. Dzieki z gory za pomoc ;)

Po dodaniu przed $query2 "var_dump($menu);" wyświetla sie blad:

array(3) { [1]=> array(2) { [0]=> string(13) "Link Pierwszy" [1]=> string(10) "Link drugi" } [2]=> array(2) { [0]=> string(11) "Link trzeci" [1]=> string(4) "test" } [3]=> array(1) { [0]=> string(5) "g fyc" } } Link PierwszyLink drugiarray(3) { [1]=> array(2) { [0]=> string(13) "Link Pierwszy" [1]=> string(10) "Link drugi" } [2]=> array(2) { [0]=> string(11) "Link trzeci" [1]=> string(4) "test" } [3]=> array(1) { [0]=> string(5) "g fyc" } } 

Warning: Invalid argument supplied for foreach() in /home/.../index.php on line 55

array(3) { [1]=> array(2) { [0]=> string(13) "Link Pierwszy" [1]=> string(10) "Link drugi" } [2]=> array(2) { [0]=> string(11) "Link trzeci" [1]=> string(4) "test" } [3]=> array(1) { [0]=> string(5) "g fyc" } } 

Warning: Invalid argument supplied for foreach() in /home/.../index.php on line 55

Odnośnik do komentarza
Udostępnij na innych stronach

Nadal jest błąd, tym razem taki


Warning: Invalid argument supplied for foreach() in /home/virtual/.../index.php on line 56
Linie kodu od 51 do 58:

51: $query2 = mysql_query("SELECT * FROM menu_kategorie");

52: while ($row = mysql_fetch_assoc($query2)) {

53: 

54: echo $r['nazwa'];

55: $c = $menu[$row['id']];

56: foreach($c as $m) 

57: echo $m;

58: }

Odnośnik do komentarza
Udostępnij na innych stronach

Po dodaniu

var_dump($row['id']);
Jest taki błąd. Ale wyciąga dwie nazwy tytułów (Link PierwszyLink drugi), w bazie jest 5 artykułów.
string(1) "1" Link PierwszyLink drugistring(1) "4"

Warning: Invalid argument supplied for foreach() in /home/..../index.php on line 56

string(1) "5"

Warning: Invalid argument supplied for foreach() in /home/..../index.php on line 56

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem po co kombinować z foreach itd skoro błędnie była tworzona tylko struktura html przez złe umieszczenia w pętlach

i


  • Głowna <?php $pytanie_01 = mysql_query("SELECT * FROM menu_kategorie"); $pytanie_02 = mysql_query("SELECT * FROM menu"); if(mysql_num_rows($pytanie_01) > 0){ while ($row = mysql_fetch_assoc($pytanie_01)) { echo "
  • ".$row['nazwa']."
    • "; while ($r = mysql_fetch_assoc($pytanie_02)){ echo "
    • ".$r['tytul'].""; } echo '
    '; } } ?>
[/code]

Odnośnik do komentarza
Udostępnij na innych stronach

Racja natomiast twój nie wnosi niczego do problemu.

Wersja jeśli w kolumnie "kategoria" przechowujesz id kategorii


  • Głowna <?php $pytanie_01 = mysql_query("SELECT * FROM `menu_kategorie`"); if(mysql_num_rows($pytanie_01) > 0){ while ($row = mysql_fetch_assoc($pytanie_01)) { echo "
  • ".$row['nazwa']."
    • "; $pytanie_02 = mysql_query("SELECT * FROM `menu` WHERE `kategoria`='{$row['id']}'"); while ($r = mysql_fetch_assoc($pytanie_02)){ echo "
    • ".$r['tytul'].""; } echo '
    '; } } ?>
[/code] Wersja jeśli w kolumnie "kategoria" przechowujesz nazwę kategorii
[code]
  • Głowna <?php $pytanie_01 = mysql_query("SELECT * FROM `menu_kategorie`"); if(mysql_num_rows($pytanie_01) > 0){ while ($row = mysql_fetch_assoc($pytanie_01)) { echo "
  • ".$row['nazwa']."
    • "; $pytanie_02 = mysql_query("SELECT * FROM `menu` WHERE `kategoria`='{$row['nazwa']}'"); while ($r = mysql_fetch_assoc($pytanie_02)){ echo "
    • ".$r['tytul'].""; } echo '
    '; } } ?>

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz sprawa wygląda tak, że jeżeli mam


$pytanie_01 = mysql_query("SELECT * FROM `menu_kategorie`");

      if(mysql_num_rows($pytanie_01) > 0){

          while ($row = mysql_fetch_assoc($pytanie_01)) {

              echo "".$row['nazwa']."
  • "; $pytanie_02 = mysql_query("SELECT * FROM `menu` WHERE `kategoria`='{$row['id']}'"); while ($r = mysql_fetch_assoc($pytanie_02)){ echo "
  • ".$r['tytul'].""; } echo '
'; } }[/code]

To pokazuje mi odpowiednie wiadomości tylko z jednej kategorii, a w pozostałych nie ma nic. Co może być przyczyną?

Odnośnik do komentarza
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×