wojtek9915 Opublikowano 19 Lutego 2015 Udostępnij Opublikowano 19 Lutego 2015 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: Home Products Product 1 Product 2 Product 3 About Company Contact Contact [/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 "".$row['tytul'].""; } } } > 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 Więcej opcji udostępniania...
Cuan Opublikowano 19 Lutego 2015 Udostępnij Opublikowano 19 Lutego 2015 $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 Więcej opcji udostępniania...
wojtek9915 Opublikowano 19 Lutego 2015 Autor Udostępnij Opublikowano 19 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 19 Lutego 2015 Udostępnij Opublikowano 19 Lutego 2015 przed $query2 daj var_dump($menu); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wojtek9915 Opublikowano 20 Lutego 2015 Autor Udostępnij Opublikowano 20 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 20 Lutego 2015 Udostępnij Opublikowano 20 Lutego 2015 usuń już va_dump i spróbuj tak: Zamień: foreach($menu[$row['id']] as $m) Na $c = $menu[$row['id']]; foreach($c as $m) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wojtek9915 Opublikowano 20 Lutego 2015 Autor Udostępnij Opublikowano 20 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 20 Lutego 2015 Udostępnij Opublikowano 20 Lutego 2015 Daj to: var_dump($row['id']); w lini 53 i pokaż Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wojtek9915 Opublikowano 20 Lutego 2015 Autor Udostępnij Opublikowano 20 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 21 Lutego 2015 Udostępnij Opublikowano 21 Lutego 2015 ten var_dump() zamień na unset($m); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
aragog Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 aragog, twój skrypt pobierze wszystkie dostępne "submenu" do menu, a nie tylko przydzielone do niego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
aragog Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 MAMY WINOWAJCĘ PROBLEMU Z MOIM ROZWIĄZANIEM... po ***wklejeniu*** tego do indexu Nie mój problem, że jesteś aż tak leniwy... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cuan Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 Frendom, powinieneś to przepisać i dostosować... Dlaczego? Dlatego że na stronie kod jest przekształcony, np. zamiast < jest < Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wojtek9915 Opublikowano 22 Lutego 2015 Autor Udostępnij Opublikowano 22 Lutego 2015 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 Więcej opcji udostępniania...
Cuan Opublikowano 22 Lutego 2015 Udostępnij Opublikowano 22 Lutego 2015 Frendom, idź być głupim gdzie indziej... wojtek9915, upewnij się czy masz przydzielone odnośniki dla tych kolejnych kategorii. Na marginesie, jest to mało optymalne. Zakładając 10 kategorii - wykonanych zostanie 11 zapytań dla samego menu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wojtek9915 Opublikowano 22 Lutego 2015 Autor Udostępnij Opublikowano 22 Lutego 2015 Nydylier, Dzięki Ci bardzo za pomoc, wszystko śmiga aragog, również dziękuje. Temat do zamknięcia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę