Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z klasami
Forum PHP.pl > Forum > PHP
mas13r
  1. <?
  2.  
  3. require('data/main.inc');
  4.  
  5. $main = new Main();
  6.  
  7. $main->Head();
  8. $main->Body($main->Menu(), '');
  9.  
  10.  
  11. ?>


Otóż mój problem polega na tym, ze funkcja $main->Menu() wywołuje się zbyt szybko, tj. menu pojawia się zamiast w wyznaczonym przez $main->Body() miejscu, nad całym skryptem. Nie wiem jak to poprawić. Prosiłbym o pomoc z dokładnym opisem co powinienem zmienić. Dołączam także fragment funkcji $main->Body():

  1. public function Body($a, $b) {
  2. ...
  3.  
  4. $a;
  5.  
  6. ...
  7. }


To jest jedno z moich pierwszych użyć obiektowego php, sam sobie nie zdołam poradzić sad.gif
nospor
Cytat
Dołączam także fragment funkcji $main->Body()
no, a większego fragmentu się nie dało dac?

skoro menu ci się pojawia nie tam gdzie chcesz, to pewnie w Menu masz echo, ktore od razu wali ci kod html na ekran. Nie rob echo tylko zwracaj tekst poprzez return a wyswietlaj dopiero tam gdzie chcesz.
mas13r
I tu się właśnie pojawia mój problem, bo gdy próbuje umieścić pętlę for za return to wyświetla się błąd krytyczny...

Tu cały plik main.inc:

  1. <?
  2.  
  3. // Meta tagi
  4.  
  5. class Main {
  6. public function Head() {
  7. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  8. <html>
  9. <head>
  10. <link rel="stylesheet" href="default.css" type="text/css" media="all" />
  11. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2" />
  12. <meta name="author" content="Poozer" />
  13. <meta http-equiv="reply-to" content="poozer.master@gmail.com" />
  14. <meta name="description" content="Poozer Portfolio" />
  15. <meta name="keywords" content="poozer, portfolio, strona, o, poozerze, master, mistrz, mas13r" />
  16. <meta name="copyright" content="by Poozer 2009" />
  17. <meta http-equiv="content-language" content="pl" />
  18. <meta name="robots" content="ALL" />
  19. <meta name="distribution" content="GLOBAL" />
  20. <meta name="generator" content="CoreEditor" />
  21. <title>Poozer Portfolio</title>
  22. </head>';
  23. }
  24.  
  25. // Sekcja body
  26.  
  27. public function Body($a, $b) {
  28. echo '<body>
  29. <table id="imp" cellpadding="0" cellspacing="0" align="center">
  30. <tr>
  31. <td id="lb" rowspan="3">
  32. </td>
  33. <td id="logo">
  34. </td>
  35. <td id="pb" rowspan="3">
  36. </td>
  37. </tr>
  38. <tr>
  39. <td id="menu">';
  40.  
  41. echo '<table cellpadding="0" cellspacing="0" width="100%" height="100%" border="0"><tr><td width="100px"></td>';
  42.  
  43. $a;
  44.  
  45. echo '<td width="25px"></td></tr></table></td></tr><tr><td id="tresc"><br /><br />';
  46.  
  47. $b;
  48.  
  49. echo '<br /><br />
  50. </td>
  51. </tr><tr>
  52. <td id="copy" colspan="3">
  53. </td>
  54. </tr>
  55. </table>
  56. </body>
  57. </html>';
  58. }
  59.  
  60. // Tablica z elementami menu
  61. // Łączna długość menu wg. równania: każdy pierwszy element + ilość elementów*25px + 25px + 100px = 750px
  62.  
  63. public function Menu() {
  64. $menu = array(
  65. array('125px', 'index.php', 'img/hl.png', 'img/hh.png'),
  66. array('125px', 'base.php', 'img/bl.png', 'img/bh.png'),
  67. array('125px', 'about.php', 'img/ol.png', 'img/oh.png'),
  68. array('150px', 'mail.php', 'img/kl.png', 'img/kh.png')
  69. );
  70.  
  71. for($i = 0; $i <= count($menu)-1 ; $i++) {
  72. echo '<td width="'.$menu[$i][0].'">';
  73. echo '<a href="'.$menu[$i][1].'">';
  74. echo '<img src="'.$menu[$i][2].'" border="0" OnMouseOver="this.src=\''.$menu[$i][3].'\'" OnMouseOut="this.src=\''.$menu[$i][2].'\'"/>';
  75. echo '</a></td><td width="25px">';
  76. }
  77. }
  78.  
  79. }
  80.  
  81. ?>
darko
to może tak:

  1. public function Menu() {
  2. $content=";
  3. $menu = array(
  4. array('125px', 'index.php', 'img/hl.png', 'img/hh.png'),
  5. array('125px', 'base.php', 'img/bl.png', 'img/bh.png'),
  6. array('125px', 'about.php', 'img/ol.png', 'img/oh.png'),
  7. array('150px', 'mail.php', 'img/kl.png', 'img/kh.png')
  8. );
  9.  
  10. for($i = 0; $i <= count($menu)-1 ; $i++) {
  11. $content.= '<td width="'.$menu[$i][0].'">';
  12. $content.='<a href="'.$menu[$i][1].'">';
  13. $content.='<img src="'.$menu[$i][2].'" border="0" OnMouseOver="this.src=\''.$menu[$i][3].'\'" OnMouseOut="this.src=\''.$menu[$i][2].'\'"/>';
  14. $content.='</a></td><td width="25px">';
  15. }
  16. return $content;
  17. }
  18.  



Nie wnikam w ciało metody Menu, natomiast w metodzie Body zamieniłbym linijkę
$a
na
echo $a;

oraz
$b
na
echo $b;
mas13r
W tym przypadku nie ma błędu krytycznego, ani żadnego innego, ale menu w ogóle się nie pojawia sad.gif...
maryaan
Nie pojawia się bo go nie wyświetlasz, do metody Body() przekazujesz "treść" menu jako parametr $a i następnie w funkcji Body() robisz.... $a . Kolega wyżej napisał co trzeba zrobić żeby się wyświetliło, no chyba że walnąłeś gdzieś literówkę i skrypt wyświetla pustą zmienną.
mas13r
Działa... smile.gif Dzięki guitar.gif
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.