Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]menu rozwijane
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Mam takie pytanko. Probuje wlasnie zrobic menu rozwijane w php/mysql bez uzycie js. Nie wiem czy jest to tak do konca mozliwe ale cos juz mam. Zrobilem dwie tabele, w pierwszej menu glowne (menu_id, menu_nazwa) i druga tabela (podmenu_id, podmenu_nazwa, podmenu_nalezy). Pole podmenu_nalezy wskazuje do ktorego punktu menu nalezy dane podmenu. Troche to zamotane ale daje rade jak narazie:) Menu ma miec tylko jeden poziom zagniezdzenia wiec chyba nie ma co bawic sie z drzewkami itd... (i tak nie bardzo siedze w temacie drzewek). To co mam wyglada tak:
  1. <?php
  2. include('polaczenie.php');
  3. $sql = "SELECT * FROM menu ORDER BY menu_id";
  4. $results = mysql_query($sql) or die (mysql_error());
  5. echo "<ul>";
  6. while ($row = mysql_fetch_array($results)) 
  7. {
  8. extract($row);
  9. echo "<li><a href='index.php?menu=" . $row['menu_id'] . "'>" . $row['menu_nazwa'] . "</a></li>";
  10. {
  11. $podmenu = $row['menu_id'];
  12. $sql2 = "SELECT * FROM podmenu WHERE podmenu_nalezy='$podmenu' ORDER BY podmenu_id";
  13. $results2 = mysql_query($sql2) or die (mysql_error());
  14. echo "<ul>";
  15. while ($row2 = mysql_fetch_array($results2))
  16. {
  17. extract($row);
  18. echo "<li><a href='index.php?podmenu=" . $row2['podmenu_id'] . "'>" . $row2['podmenu_nazwa'] . "</a></li>";
  19. } 
  20. echo "</ul>";
  21. }
  22. }
  23. echo "</ul>";
  24. ?>

Wyswietla mi to niestety cale menu od razu czyli jesli w menu glownym pojawi sie jakies podmenu to tez od razu jest wyswietlane. W sumie nie wyglada az tak zle ale chcialbym aby podmenu pojawilo sie dopiero po kliknieciu w ktores z menu i zwinelo, kiedy sie kliknie na inne menu. Nie chodzi o zadne plynne przejscie bo do tego potrzebowalbym js a to nie wchodzi w gre raczej. Chodzi o to, zeby ta czesc pojawila sie dopiero po kliknieciu:
  1. <?php
  2. $podmenu = $row['menu_id'];
  3. $sql2 = "SELECT * FROM podmenu WHERE podmenu_nalezy='$podmenu' ORDER BY podmenu_id";
  4. $results2 = mysql_query($sql2) or die (mysql_error());
  5. echo "<ul>";
  6. while ($row2 = mysql_fetch_array($results2))
  7. {
  8. extract($row);
  9. echo "<li><a href='index.php?podmenu=" . $row2['podmenu_id'] . "'>" . $row2['podmenu_nazwa'] . "</a></li>";
  10. } 
  11. echo "</ul>";
  12. ?>

Mam nadzieje, ze nie zamotalem zbytnio pytania. Wyglada to tak narazie:
.
Jesli macie jakis pomysl na cos takiego to dajcie znac. Pozdrawiam, Łukasz
marian84
Skrypt js umiesc w head: Pobierz plik

W Twoim kodzie popraw znaczniki ul i li tak jak ponizej
Kod
<?php
include('polaczenie.php');
$sql = "SELECT * FROM menu ORDER BY menu_id";
$results = mysql_query($sql) or die (mysql_error());
echo "<dl id='menu0'>";
while ($row = mysql_fetch_array($results))
                {  
                    extract($row);
                    echo "<dt><a href='index.php?menu=" . $row['menu_id'] . "'>" . $row['menu_nazwa'] . "</a></dt>";
                    {
                        $podmenu = $row['menu_id'];
                        $sql2 = "SELECT * FROM podmenu WHERE podmenu_nalezy='$podmenu' ORDER BY podmenu_id";
                        $results2 = mysql_query($sql2) or die (mysql_error());
                        while ($row2 = mysql_fetch_array($results2))
                            {
                            extract($row);
                            echo "<dd><a href='index.php?podmenu=" . $row2['podmenu_id'] . "'>" . $row2['podmenu_nazwa'] . "</a></dd>";
                            }
                    }
                }
echo "</dl>";
?>
<script type="text/javascript">
// <![CDATA[
new Menu('menu0');
// ]]>
</script>


powinno grac. Jak nie daj znac
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.