Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Błędy
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Zrobiłem funkcję budującą menu:
  1. function BudujMenu ($rek)
  2. {
  3. MysqlStart ();
  4. if ($rek)
  5. { $query = "SELECT * FROM ".$db['prefix']."menutop WHERE parent_id='".$rek['id']."' AND page='".PageID."' ORDER BY position DESC";}
  6. else {$query = "SELECT * FROM ".$db['prefix']."menutop WHERE page='".PageID."' ORDER BY position DESC";}
  7. $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem");
  8. while($rek = mysql_fetch_array($result))
  9. {
  10. if ($rek['parent'])
  11. {
  12. echo '<li><span class="dir">'.$rek['name'].'</span><ul>';
  13. BudujMenu ($rek);
  14. echo '</ul></li>';
  15. } else
  16. {
  17. echo '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';
  18. }
  19. }
  20. MysqlEnd ();
  21. }

i wyskakują mi błędy:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/zs4tychy/ftp/new/Global.inc on line 46

Warning: Missing argument 1 for BudujMenu(), called in /home/zs4tychy/ftp/new/THEMES/DEFAULT/theme.inc on line 87 and defined in /home/zs4tychy/ftp/new/Global.inc on line 56
Zapytanie zakończone niepowodzeniem
co robię nie tak?
wookieb
Cytat(patryk9200 @ 19.09.2009, 22:48:15 ) *
co robię nie tak?

Nie czytasz komunikatów. Uzyj wyszukiwarki. Pierwszy błąd poruszany MILIONY RAZY!

A w drugim pisze jak wół. Brak pierwszego argumentu.
patryk9200
dobra poprawiłem, mam teraz tak:
  1. function BudujMenu ($t=NULL)
  2. {
  3. MysqlStart ();
  4. if ($t)
  5. { $query = "SELECT * FROM zs4_menutop WHERE parent_id='".$t."' AND page='1' ORDER BY id DESC";}
  6. else {$query = "SELECT * FROM zs4_menutop WHERE page='1' ORDER BY id DESC";}
  7. $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem");
  8. while($rek = mysql_fetch_array($result))
  9. {
  10. if ($rek['parent'])
  11. {
  12. echo '<li><span class="dir">'.$rek['name'].'</span><ul>';
  13. BudujMenu ($rek['id']);
  14. echo '</ul></li>';
  15. } else
  16. {
  17. echo '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';
  18. }
  19. }
  20. MysqlEnd ();
  21. }

jak zrobić żeby zamiast echo można było użyć return i zwracało gotową zawartośc?
Void
Cytat(patryk9200 @ 19.09.2009, 23:12:29 ) *
jak zrobić żeby zamiast echo można było użyć return i zwracało gotową zawartośc?

Przypisać tą zawartość do zmiennej i ją zwrócić? smile.gif

Utwórz sobie jakąś zmienną lokalną wewnątrz funkcji BudujMenu i przypisuj do niej kolejne instrukcje operatorem .=
np.
  1. $var = '';
  2. $var .= '<li><span class="dir">'.$rek['name'].'</span><ul>';
  3. BudujMenu ($rek['id']);
  4. $var .= '</ul></li>';
patryk9200
Dzięki masz pomógł ;-) wielopoziomowe menu działa świetnie ;-)
Poprawny kod:
  1. function BudujMenu ($t=NULL)
  2. {
  3. //global $var; $var ='';
  4. MysqlStart ();
  5. $query = "SELECT * FROM zs4_menutop WHERE parent_id='".$t."' AND page='1'";
  6. $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem");
  7. while($rek = mysql_fetch_array($result))
  8. {
  9. if ($rek['typ'] == 1)
  10. {
  11. $var .= '<li><span class="dir">'.$rek['nazwa'].'</span><ul>';
  12. $var .= BudujMenu ($rek['id']);
  13. $var .= '</ul></li>';
  14. } elseif ($rek['typ'] == 0)
  15. {
  16. $var .= '<li><a href="'.$rek['link'].'">'.$rek['nazwa'].'</a></li>
  17. ';
  18. }
  19. }
  20.  
  21. return $var;
  22. }
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.