![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
chciałbym prosić o pomoc w rozwiązaniu problemu nad którym siedze już bardzo długo i do niczego logicznego nie potrafie dojść otóż chce zrobić menu z podkategoriami menu1 >submenu1 >>subsub1 >>subsub2 >submenu2 >>subsub1 >>subsub2 menu2 >submenu1 >>subsub1 >>subsub2 >submenu2 >>subsub1 >>subsub2 wyświetlane w ten sposób, umieściłem wszystko w jednej tabeli mysql ![]() Próbuje to teraz wyświetlic na stronie jednak nie bardzo mi to wychodzi. Domyślam się że powinienem tutaj wykonać pętle w pętli jednak nic z tego.. Bardzo prosze o pomoc, do odczytu z bazy używam obiektowego mysqli. Kod $query = "select * from categories where product_type='B';"; $result = $mysqli->query($query); $row = $result->fetch_all(); Dodam że przy takim kodzie Kod $query = "select * from categories where product_type='B';"; $arr = array(); $i=0; $result = $mysqli->query($query); while($row = $result->fetch_assoc()) { $arr[$i++]=$row; } print_r($arr); wypluwa mi Kod Array ( [0] => Array ( [category] => 0 [subcategory] => 0 [subsub] => 0 [name] => Informatyka [product_type] => B ) [1] => Array ( [category] => 1 [subcategory] => 0 [subsub] => 0 [name] => Psychologia [product_type] => B ) [2] => Array ( [category] => 2 [subcategory] => 0 [subsub] => 0 [name] => Sport [product_type] => B ) [3] => Array ( [category] => 0 [subcategory] => 1 [subsub] => 0 [name] => Programowanie [product_type] => B ) [4] => Array ( [category] => 0 [subcategory] => 2 [subsub] => 0 [name] => Projektowanie [product_type] => B ) [5] => Array ( [category] => 0 [subcategory] => 1 [subsub] => 1 [name] => php [product_type] => B ) [6] => Array ( [category] => 0 [subcategory] => 1 [subsub] => 2 [name] => ajax [product_type] => B ) [7] => Array ( [category] => 0 [subcategory] => 1 [subsub] => 3 [name] => mysql [product_type] => B ) [8] => Array ( [category] => 0 [subcategory] => 2 [subsub] => 1 [name] => photoshop [product_type] => B ) [9] => Array ( [category] => 0 [subcategory] => 2 [subsub] => 1 [name] => gimp [product_type] => B ) ) jednak nadal nie wiem jak sie dostać do tego... być może w zły sposób próbuje to rozwiązać ale zależy mi aby było to w jednej tabeli. Ten post edytował Miedziaq 14.09.2013, 17:46:11 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
A gdzie jakieś id...
o coś takiego Ci chodzi? http://codepad.org/rqsT0NPf Ten post edytował aras785 14.09.2013, 21:13:40 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
nie, o coś takiego
![]() już mi się udało to zrobić wykorzystując metodę id | id nadrzednego i funkcje rekurencyjną Dzieki za pomoc Pozdrawiam. Ten post edytował Miedziaq 14.09.2013, 22:48:54 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
No to baze którą dałeś wskazywała na coś innego i nie dało się tego zrobić według tej bazy. Dobrze, że się udało
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
tak ponieważ taką miałem wizje jednak internet i kilkanascie godzin zabawy naprowadziły mnie na ten trop.
Napotkałem jednak kolejny problem mam taki kod Kod function show_categories($parent) { // Potrzebna jest globalna tablica $tasks: global $categories; // Rozpoczynamy listę: echo '<ul>'; // Przetwarzanie w pętli wszystkich tablic podrzędnych: foreach ($parent as $category_id => $name) { // Wyświetlenie elementu: echo "<li>$name"; // Sprawdzenie, czy z zadaniem są powiązane zadania podrzędne: if (isset($categories[$category_id])) { // Wywołanie funkcji: show_categories($categories[$category_id]); } // Wyświetlenie elementu: echo '</li>'; } // Koniec pętli FOREACH. // Zamykamy uporządkowaną listę: echo '</ul>'; } // Koniec funkcji show_categories(). // Nawiązanie połączenia z bazą danych. $dbc = @mysqli_connect ('localhost', 'root', '3531734', 'rentaloffice') OR die ('<p>Nie można połączyć się z bazą danych!</p></body></html>'); // Pobranie wszystkich niezakończonych zadań: $q = 'SELECT cat_id, subcat, name FROM categories2 WHERE product_type="'.$product_type.'" ORDER BY subcat ASC'; $r = mysqli_query($dbc, $q); // Zainicjowanie tablicy: $categories = array(); while(list($category_id, $subcat, $name) = mysqli_fetch_array($r, MYSQLI_NUM)) { // Dodanie zadania do tablicy: $categories[$subcat][$category_id] = $name; } // Dla celów diagnostycznych: //echo '<pre>' . print_r($categories,1) . '</pre>'; // Przesłanie pierwszego elementu tablicy // do funkcji make_list(): show_categories($categories[0]); działa pięknie jednak jeśli utworze funkcje w ten sposób Kod function show_categories($parent) { // Potrzebna jest globalna tablica $tasks: global $categories; // Rozpoczynamy listę: echo '<ul>'; // Przetwarzanie w pętli wszystkich tablic podrzędnych: foreach ($parent as $category_id => $name) { // Wyświetlenie elementu: echo "<li>$name"; // Sprawdzenie, czy z zadaniem są powiązane zadania podrzędne: if (isset($categories[$category_id])) { // Wywołanie funkcji: show_categories($categories[$category_id]); } // Wyświetlenie elementu: echo '</li>'; } // Koniec pętli FOREACH. // Zamykamy uporządkowaną listę: echo '</ul>'; } // Koniec funkcji show_categories(). function show_categories_menu($product_type) { // Nawiązanie połączenia z bazą danych. $dbc = @mysqli_connect ('localhost', 'root', 'xxx', 'rentaloffice') OR die ('<p>Nie można połączyć się z bazą danych!</p></body></html>'); // Pobranie wszystkich niezakończonych zadań: $q = 'SELECT cat_id, subcat, name FROM categories2 WHERE product_type="'.$product_type.'" ORDER BY subcat ASC'; $r = mysqli_query($dbc, $q); // Zainicjowanie tablicy: $categories = array(); while(list($category_id, $subcat, $name) = mysqli_fetch_array($r, MYSQLI_NUM)) { // Dodanie zadania do tablicy: $categories[$subcat][$category_id] = $name; } // Dla celów diagnostycznych: //echo '<pre>' . print_r($categories,1) . '</pre>'; // Przesłanie pierwszego elementu tablicy // do funkcji make_list(): show_categories($categories[0]); } to wywołuje wczytuje menu ale tylko pierwszy poziom, czyli nie działa rekurencja, czy mielibyscie jakies wskazówki jak to rozwiazac? Problem rozwiązany wystarczyło dodac global $categories. Ten post edytował Miedziaq 15.09.2013, 00:15:35 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 17:55 |