Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Menu z mysql
nikestylex7
post 5.06.2013, 01:17:23
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Witam. Stworzyłem menu drzewiaste i skorzystałem ze skryptu z kurs html co do skryptu działał dopuki nie wstawiłem skryptu php który swoim działaniem powoduje że podmenu są już otwarte nawet na nie nie klikając.

  1. <?php
  2. function display_children($parent, $level) {
  3. $result = mysql_query("SELECT a.id, a.label, a.link, Deriv1.Count FROM `menu` a LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent);
  4. while ($row = mysql_fetch_assoc($result)) {
  5. if ($row['Count'] > 0) {
  6. echo "<ul><li><a href='" . $row['link'] . "'>" . $row['label'] . "</a>";
  7. display_children($row['id'], $level + 1);
  8. echo "</li></ul>";
  9. } elseif ($row['Count']==0) {
  10. echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a></li>";
  11. } else;
  12. }
  13. }
  14. ?>
  15. <ul id="tree0" class="tree">
  16. <?php
  17. display_children(0, 1);
  18. ?>


tabela sql

id
label
link
parent
sort

1
Home
#home
0
0

2
Code
#code
0
0

3
Contract
#contract
0
0

4
PHP
#php
2
0

5
CSS
#css
2
0

6
Scripts
#scripts
4
0

7
Help
#help
4
0

8
Archive
#archive
6
0

9
Snippet
#snippet
8
0


Nie wiem co może być nie tak być może jakoś źle ze znacznikami ul li

Prawidłowo powinno pokazać to tak

  1. <ul id="tree0" class="tree">
  2. <li><a>Home</a></li>
  3. <li><a>Code</a>
  4. <ul>
  5. <li><a>PHP</a>
  6. <ul>
  7. <li><a>Scripts</a>
  8. <ul>
  9. <li><a>Archive</a></li>
  10. <li><a>Snippet</a></li>
  11. </ul>
  12. </li>
  13. </ul>
  14. </li>
  15. <li><a>Help</a></li>
  16. </ul>
  17. </li>
  18. <li><a>CSS</a></li>
  19. <li><a>Contract</a></li>
  20. </ul>
  21. </li>
  22. </ul>
Go to the top of the page
+Quote Post
maniana
post 5.06.2013, 09:35:02
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


Trochę posprzątane, o ile zapytanie SQL zwraca poprawne wyniki, powinno działać na 99%
  1. function display_children($parent) {
  2. $result = mysql_query("SELECT a.id, a.label, a.link, Deriv1.Count FROM `menu` a LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent);
  3. if(mysql_num_rows($result)>0){
  4. echo '<ul'.($parent==0?' id="tree0" class="tree"':'').'>';
  5. while($row = mysql_fetch_assoc($result)){
  6. echo '<li><a href="' . $row['link'] . '">' . $row['label'] . '</a>';
  7. if($row['Count']>0){
  8. display_children($row['id']);
  9. }
  10. echo '</li>';
  11. }
  12. echo '</ul>';
  13. }
  14. }
  15.  
  16. display_children(0);
Go to the top of the page
+Quote Post
nikestylex7
post 5.06.2013, 12:35:26
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Twój skrypt działa lecz dalej jest otwarte nie wiem czy to wina tego że nie może być brane z bazy wtedy skrypt tego nie obsluguje czy co...

o to chodzi : http://www.kurshtml.edu.pl/skrypty/skrypt,...drzewiaste.html
Go to the top of the page
+Quote Post
nospor
post 5.06.2013, 12:38:43
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W przeglądarce robisz: POKAZ Źródło strony i patrzysz sobie, czy twoj html z UL i LI jest wygenerowany tak jak powinienen.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 5.06.2013, 19:36:12
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----



Podsumowując skrypt wypisuje to:

  1. <ul id="tree0" class="tree">
  2. <li><a href="index.php">Strona Główna</a></li>
  3. <li><a>Samochody</a>
  4. <ul>
  5. <li><a>Autobusy</a>
  6. <ul>
  7. <li><a>Miejskie</a>
  8. <ul>
  9. <li><a>AEC</a>
  10. <ul>
  11. <li><a>Q</a></li>
  12. <li><a>Regent III</a></li>
  13. <li><a>Regent V</a></li>
  14. <li><a>Routemaster</a></li>
  15. </ul>
  16. </li>
  17. </ul>
  18. </li>
  19. </ul>
  20. </li>
  21. </ul>
  22. </li>
  23. </ul>


jak zamiast używając bazy wkleje to w kod to już skrypt działa. Nie rozumiem dlaczego tak jest?

Ten post edytował nikestylex7 5.06.2013, 19:36:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 15:59