Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zewn. plikiem
Forum PHP.pl > Forum > PHP
zenoon
w podręczniku mam ćwiczenie o tym zeby stronę zrobić za pomocą zewn. plików. Mam użyć plików glowna.php i strona.inc, oto one

glowna.php:

Kod
<?php
  require('strona.inc');
  $stronaglowna=new Strona();
  $stronaglowna->zawartosc='<p>Witamy na stronie TLA Consulting.
                Prosimy o poświęcenie czasu i poznanie nas.</p>
                            <p>Specjalizujemy się w zaspokajaniu potrzeb biznesowych
                            i mamy nadzieję na współpracę.</p>';
  $strona->Wyswietl();
?>


strona.inc:

Kod
<?php
  class Strona
  {

    public $zawartosc;
    public $tytul='TLA Consulting';
    public $slowa_kluczowe='TLA Consulting, Tutaj Lubią Atrybuty';
    public $przyciski=array('Strona główna'=>'glowna.php',
                'Kontakt'=>'kontakt.php',
                  'Usługi'=>'uslugi.php',
                       'Mapa strony'=>'mapa.php'
               );

    public function __set($nazwa, $wartosc);
    {
      $this->$nazwa=$wartosc;
    }

    public function Wyswietl()
    {
      echo "<html>\n<head>\n";
      $this->WyswietlTytul();
      $this->WyswietlSlowaKluczowe();
      $this->WyswietlStyle();
      echo "</head>\n<body>\n";
      $this->WyswietlNaglowek();
      $this->WyswietlMenu($this->przyciski);
      echo $this->zawartosc;
      $this->WyswietlStopke();
      echo "</body>\n"</html>\n";
    }

    public function WyswietlTytul()
    {
      echo "<title>$this->tytul</title>";
    }
    pubilc function WyswietlSlowaKluczowe()
    {
      echo "<meta name=\"keywords\" content\"".htmlentities($this->slowa_kluczowe)"\" />";
    }
    public function WyswietlStyle()
    {
?>
  <style>
  <!--
      body {background-color:white}
      h1 {color:white; font-size:24pt; text-align:center;
      font-family:arial,sans-serif}
      .menu {color:white; font-size:12pt; text-align:center;
      font-family:arial,sans-serif; font-weight:bold;}
      td {background-color:black}
      p {color:black; font-size:12pt; text-align:justify;
         font-family:arial,sans-serif}
      p.foot {color:white; font-size:9pt; text-align:center;
              font-family:arial,sans-serif; font-weight:bold}
      a:link,a:visited,a:active {color:white}
  -->
  </style>
<?php
    }
    public function WyswietlNaglowek()
    {
?>
  <table width="100%" cellpadding="12" cellspacing="0" border=0">
  <tr bgcolor="black">
    <td align="left"><img src="logo.gif" /></td>
    <td>
      <h1>TLA Consulting</h1>
    </td>
    <td align="right"><img src="logo.gif" /></td>
  </tr>
  </table>
<?php
    }
    public function WyswietlMenu($przyciski)
    {
      echo "<table width='100%' bgcolor='white' cellpadding='4' cellspacing='4'>\n;
      echo "<tr>\n";
      $szerokosc=100/count($przyciski);
      foreach($przyciski as $nazwa=>$url)
      {
        $this->WyswietlPrzyciski($szerokosc, $nazwa, $url, !$this->CzyToAktualnyURL($url));
      }
      echo "</tr>\n";
      echo "</table>\n";
    }
    public function CzyToAktualnyURL($url)
    {
      if(strpos($_SERVER['PHP_SELF', $url)==false)
      {
        return false;
      }
      else
      {
        return true;
      }
    }
    public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=true)
    {
      if($active)
      {
        echo "<td width='".htmlentities($szerokosc)."%'>
              <a href='".htmlentities($url)."'>
              <img src='m-logo.gif' alt='".htmlentities($nazwa)."' border='0'></a>
              <a href='".htmlentities($url)."'><span class='menu'>$nazwa</span></a></td>";
      }
      else
      {
        echo "<td width='".htmlentities($szerokosc)."%'>
              <img src='boczne-logo.gif'>
              <span class='menu'>$nazwa</span></td>";
      }
    }
    public function WyswietlStopke()
    {
?>
  <table width="100%" bgcolor="black" cellpadding="12" border="0">
  <tr>
    <td>
      <p class="foot">&copy; TLA Consulting</p>
      <p class="foot">Prosimy odwiedzić <a href="prawne.php">stronę informacji prawnych</a></p>
    </td>
  </tr>
  </table>
<?php
    }
  }
?>


niestety strona nie chce działać. Wyświetla się taki komunikat:

Cytat
Fatal error: Non-abstract method Strona::set() must contain body in c:\program files\apache group\Apache\htdocs\6\strona.php on line 14


Co jest tego przyczyną? Proszę o pomoc... worriedsmiley.gif

---
EDIT:
Dobra już nie potrzebuję pomocy. Heh zauważyłem, że zrobiłem kilka błędów w pisowni biggrin.gif Temat bym prosił do kasacji.
szamer
nierozumiem tylko czemu strona dziala na moim koncie Boo.pl (http://szamo.boo.pl/testy/glowna.php) a nie chce dzialac na moim serwerze lokalnym gdzie dzialaly mi do tej pory WSZYSTKIE skrypty PHPz tej ksiazki i nie tylko sciana.gif .
zyraf_pl
a masz PHP5 czy PHP4 ?

uruchom sobie
  1. <?PHP
  2. phpinfo() ;
  3. ?>

i porównaj wynik lokalny z serwerem
Kicok
Masz nadmiarowy średnik.
W komunikacie błędu masz ładnie napisane w której linii masz tego średnika szukać.
szamer
Kod wydaje mi sie poprawny, chociarz phpDesigner pisze mi
Cytat
Line 144: PHP Parse error: syntax error,unexpected $end in strona.inc
jest to ostatnia linijka i jest ona pusta
Kod
<?php
class Strona
{

  // atrybuty klasy Strona
  public $zawartosc;
  public $tytul = 'TLA CONSULTING';
  public $slowa_kluczowe = 'TLA Consulting, Tutaj Lubią Atrybuty,
                       niektóre z moich najlepszych przyjaciółek to wyszukiwarki';
  public $przyciski = array('Strona główna' => 'glowna.php',
                            'Kontakt'       => 'kontakt.php',
                            'Usługi'        => 'uslugi.php',
                            'Mapa strony'   => 'mapa.php'
                           );
  // operacje klasy Strona

  public function __set($nazwa, $wartosc)
  {
    $this->$nazwa = $wartosc;
  }

  public function Wyswietl()
  {
    echo "<html>\n<head>\n";
    $this->WyswietlTytul();
    $this->WyswietlSlowaKluczowe();
    $this->WyswietlStyle();
    echo "</head>\n<body>\n";
    $this->WyswietlNaglowek();
    $this->WyswietlMenu($this->przyciski);
    echo $this->zawartosc;
    $this->WyswietlStopke();
    echo "</body>\n</html>\n";
  }

  public function WyswietlTytul()
  {
    echo "<title> $this->tytul </title>";
  }

  public function WyswietlSlowaKluczowe()
  {
    echo "<meta name=\"keywords\" content=\"".htmlentities($this->slowa_kluczowe)."\" />";
  }

  public function WyswietlStyle()
  {
?>
  <style>
<!--
      body {background-color: white}
      h1 {color:white; font-size:24pt; text-align:center;
          font-family:arial,sans-serif}
      .menu {color:white; font-size:12pt; text-align:center;
          font-family:arial,sans-serif; font-weight:bold}
      td {background:black}
      p {color:black; font-size:12pt; text-align:justify;
         font-family:arial,sans-serif}
      p.foot { color:white; font-size:9pt; text-align:center;
               font-family:arial,sans-serif; font-weight:bold}
      a:link,a:visited,a:active {color:white}
-->
  </style>
<?php
  }

public function WyswietlNaglowek()
  {
?>
  <table width="100%" cellpadding="12" cellspacing="0" border="0">
  <tr bgcolor="black">
    <td align="left"><img src="logo.gif" /></td>
    <td>
      <h1>TLA Consulting</h1>
    </td>
    <td align="right"><img src="logo.gif" /></td>
  </tr>
  </table>
<?
  }

  public function WyswietlMenu($przyciski)
  {
echo "<table width = '100%' bgcolor = 'white' cellpadding = '4' cellspacing = '4'\n";
    echo " <tr>\n";

    //obliczenie wielkości przycisku
    $szerokosc = 100/count($przyciski);

    foreach ($przyciski as $nazwa=>$url)
    {
     $this->WyswietlPrzycisk($szerokosc, $nazwa, $url,
                             !$this->CzyToAktualnyURL($url));
    }
    echo " </tr>\n";
    echo "</table>\n";
  }

  public function CzyToAktualnyURL($url)
  {
    if(strpos($_SERVER['PHP_SELF'], $url)==false)
    {
      return false;
    }
    else
    {
      return true;
    }
  }

  public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active = true)
  {
    if($active)
    {
      echo "<td width = '".htmlentities($szerokosc)."%'>
            <a href = '".htmlentities($url)."'>
            <img src = 'm-logo.gif' alt = '".htmlentities($nazwa)."' border = '0'></a>
            <a href = '".htmlentities($url)."'><span class='menu'>$nazwa</span></a></td>";
    }
    else
    {
     echo "<td width = '".htmlentities($szerokosc)."%'>
           <img src = 'boczne-logo.gif'>
           <span class='menu'>$nazwa</span></td>";
    }
  }

  public function WyswietlStopke()
  {
?>
    <table width="100%" bgcolor="black" cellpadding="12" border="0">
    <tr>
      <td>
         <p class="foot">&copy; TLA Consulting</p>
         <p class="foot">Prosimy odwiedzić
                             <a href ="prawne.php">stronę informacji prawnych</a></p>
      </td>
    </tr>
    </table>
<?
  }
}
?>


ale na boo dziala - porownam jeszcze phpinfo() lokalne i na boo jak kolega radzil
emacieka
używaj '<?php' zamiast samego '<?'.
szamer
Cytat(emacieka @ 13.09.2007, 11:28:07 ) *
używaj '<?php' zamiast samego '<?'.


no i tu tkwil problem, ale glupota z mojej strony ze od razu nie wpadlem na to <wstyd> dzieki emacieka
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.