Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z wczytywaniem zmiennej do klasy
Forum PHP.pl > Forum > Przedszkole
Dunio
Siemka wszystkim
Mam taki problem. Jakiś czas temu zbudowałem sobie kod klasy zawierający całą strukturę strony. Działał on mniej więcej na tej zasadzie że klasa posiadała zmienną odpowiadającą za wyświetlenie zawartości głównej okna strony. Wystarczyło zdeklarować tą zmienną przed wywołaniem funkcji klasy wyświetlającej całą strony. Problem pojawił się gdy chciałem tam wsadzić jakiś kod php.
Wyglądało to mniej więcej tak że w kodzie klasy była taka część
  1. <?php
  2. echo $this->zawartosc
  3. ?>

a kod każdej strony wyglądał tak:
  1. <?
  2.   require('include/style.inc');
  3.   $strona= new strona();
  4.   $strona->zawartosc = "echo'cos tam'; ";
  5.   $strona->wyswietl();
  6. ?>

Przy wywołaniu tego w ten sposób efekt był taki że w polu gdzie powinna znajdować się treść pojawiało się coś takiego :
  1. <?php
  2. echo'cos tam';
  3. ?>

Próbowałem odwołać się do tej zmiennej w klasie bez użycia "echo" ale wtedy pole okazywało się puste
A więc dzięki z góry za pomoc i pozdro
P.S. Nie umieszczałem kodu całej klasy bo uznałem to za niepotrzebne ale jeśli takie się okaże to piszcie.
ayeo
Witam!

Twoja klasa działa doskonale. Przecież wartością zmiennej jest właśnie string "echo'cos tam';"! Jednak użycie echo "kod_php"; nie spowoduje wykonania kodu spomiędzy cudzysłowów. Nie wiem jak wpadłeś na ten szalony pomysł, ale zapraszam do manuala biggrin.gif Temat przenoszę na Przedszkole bo nie ma nic wspólnego z OOP.

Pozdrawiam!
Kojak
Gdy przypisujesz do zmiennej w klasie, to nie dawaj echo:

  1. <?
  2.   require('include/style.inc');
  3.   $strona= new strona();
  4.   $strona->zawartosc = "cos tam";
  5.   $strona->wyswietl();
  6. ?>
lukada
Cytat(Kojak @ 24.07.2009, 08:16:12 ) *
Gdy przypisujesz do zmiennej w klasie, to nie dawaj echo:

  1. <?php
  2. require('include/style.inc');
  3.   $strona= new strona();
  4.   $strona->zawartosc = &#092;"cos tam\";
  5.   $strona->wyswietl();
  6. ?>

Chyba najlepiej byłoby potem w funkcji wyswietl() widoku ją zwracać(return $this->zawartosc;), która jak dla mnie powinna stanowić zmienną prywatną klasy. Poza klasą zmieniałbyś ją po prostu za pomocą funkcji.
Dunio
no tak : wszystko by się zgadzało i też mi to przyszło do głowy ale problem w tym że bez "echo" nie wyświetla się nic !
ayeo
A może pokażesz nam tajemniczą metodę wyświetl(); Bo nasz etatowy jasnowidz jest nad morzem w związku z urlopem i inaczej nic nie poradzimy. Na domiar złego szklana kula się gdzieś zapodziała. Nie ma rady, musisz wkleić kod swojej klasy tongue.gif

Pozdrawiam!
Fifi209
echo $obiekt->wyswietl() ?

Podstawy PHP.
ayeo
~fifi209, nazwa mnie zmyliła biggrin.gif myślałem, że wyświetl() robi echo biggrin.gif
Dunio
no to macie kod klasy :
  1. <?
  2.  
  3. include('include/config.php');
  4. mysql_select_db($baza,$connection) or die ('mysql_error()');
  5.  
  6.   class strona
  7.   {
  8.      public $tytul='tytul strony';
  9.      public $zawartosc='';
  10.      
  11.      public function wyswietl(){
  12.         echo"<html><head>";
  13.         $this->wyswietltytul();
  14.         $this->wyswietlstyle();
  15.         echo"</head><body>";
  16.  
  17.         echo"<div id='container'>";
  18.         $this->wyswietltop();
  19.         $this->wyswietlgmenu();
  20.         $this->wyswietlpanelnews();
  21.         $this->wyswietllewemenu();
  22.         $this->zawartosc;
  23.         $this->wyswietlprawemenu();
  24.         echo"</div>";
  25.  
  26.         $this->wyswietlstopke();
  27.         echo"</body></html>";
  28.    }
  29.      public function  wyswietltytul(){
  30.         echo"<title>{$this->tytul}</title>";
  31.      }
  32.  
  33.      public function wyswietlstyle(){
  34.         echo"<link rel='Stylesheet' type='text/css' href='include/style.css'>";
  35.      }
  36.  
  37.      public function wyswietltop(){
  38.         include('include/config.php');
  39.        echo"
  40.        <div id='top_foto'>
  41.            <div id='wypelnienie_top'>            
  42.            </div>
  43.            <div id='logowanie'>
  44.        ";
  45.        
  46.        
  47.        
  48.         $this->wyloguj();
  49.         $this->sprawdzenie_danych ();
  50.         $this->wyswietl_formularz_logowania();
  51.         $this->przycisk_wyloguj();
  52.         $this->rejestracja();
  53.        
  54.        echo"            
  55.            </div>
  56.            </div>
  57.             ";
  58.      }
  59.  
  60.      public function wyswietlgmenu(){
  61.         echo"<div id='gmenu'>
  62.           <img src='grafika/przycisk.jpg'><img src='grafika/przycisk.jpg'><img src='grafika/przycisk.jpg'><img src='grafika/przycisk.jpg'><img src='grafika/przycisk.jpg'>
  63.         </div>";
  64.      }
  65.  
  66.      public function wyswietlpanelnews(){
  67.                      echo"<div id='panelnews'>
  68.                      <div id='panelnews_maly'>
  69.                      <table>
  70.                      ";
  71.                      
  72.                       include('include/config.php');
  73.                       $kategoria=$_GET['kate'];
  74.                       mysql_select_db ($baza)  or die ('mysql_error()');
  75.                       $pokaz="select * from news ORDER BY id DESC LIMIT 5";
  76.                       $rezultat=mysql_query($pokaz,$connection) or die ('blad');
  77.                       if($rezultat){
  78.                          while($wiersz=mysql_fetch_array($rezultat)){
  79.                                $id=$wiersz['id'];
  80.                                $nazwa=$wiersz['nazwa'];
  81.                                $opis=$wiersz['opis'];
  82.                                $autor=$wiersz['autor'];
  83.                                $data=$wiersz['data'];
  84.                                   echo"
  85.                                     <tr>
  86.                                     <td>
  87.                                        <table width='450' border='1'><tr><td width='370'>$nazwa</td><td width='80'>$data<br></td></tr></table>
  88.                                     </td>
  89.                                     </tr>
  90.                                   ";
  91.                            }
  92.                }
  93.                        
  94.                        echo"
  95.                        </table>
  96.                        </div>
  97.                        <div id='panelnews_maly2'>
  98.                        <table>
  99.                        ";        
  100.                          include('include/config.php');
  101.                          $kategoria=$_GET['kate'];
  102.                          mysql_select_db($baza,$connection) or die ("mysql_error");
  103.                          $pokaz="select * from music ORDER BY id DESC limit 5";
  104.                          $rezultat=mysql_query($pokaz,$connection) or die ('blad');
  105.                              if($rezultat){
  106.                                while($wiersz1=mysql_fetch_array($rezultat)){
  107.                                   $id1=$wiersz1['id'];
  108.                                   $nazwa1=$wiersz1['nazwa'];
  109.                                   $opis1=$wiersz1['opis'];
  110.                                   $link1=$wiersz1['link'];
  111.                                   $autor1=$wiersz1['autor'];
  112.                                   $data1=$wiersz1['data'];
  113.                                      echo"
  114.                                      <tr>
  115.                                      <td>
  116.                                        <table width='450' border='1'><tr><td width='370'>$nazwa1</td><td width='80'>$data1<br></td></tr></table>
  117.                                      </td>
  118.                                      </tr>
  119.                                      ";
  120.                                }
  121.                               }
  122.        
  123.                           echo"
  124.                           </table>
  125.                           </div>
  126.                           </div>
  127.                           ";
  128.                       }  
  129.      
  130.  
  131.      public function wyswietllewemenu(){
  132.         echo"<div id='lewemenu'>
  133.            <div class='zwezenie'>jakies tam menu</div>
  134.            </div>
  135.            <div id='zawartosc'>
  136.         <div class='zwezenie'>";
  137.      }
  138.  
  139.      public function wyswietlprawemenu(){
  140.         echo"</div></div>
  141.            <div id='prawemenu'>
  142.            <div class='zwezenie'>jakies tam menu</div>
  143.         </div>";
  144.      }
  145.      public function wyswietlstopke(){
  146.         echo"<div id='stopka'>stopka</div>";
  147.      }
  148.  
  149.  
  150.  
  151. //funkcje dodatkowe !      
  152.      public function wyswietl_formularz_logowania (){
  153.        
  154.         $sesja=$_SESSION['user'];
  155.      if($sesja===0||empty($sesja)){
  156.          echo"
  157.          <form method='POST'>
  158.           Nazwa użytkownika<br>
  159.          <input type='text' name='nazwa'><br>
  160.          Hasło użytkownika<br>
  161.          <input type='password' name='haslo'><br>
  162.          <input type='submit' value='zaloguj'>
  163.          </form>  
  164.          ";
  165.          }
  166.        
  167. }
  168. public function sprawdzenie_danych (){
  169.         $data=date("Y-m-d");
  170.         $sesja=$_SESSION['user'];
  171.         $pnazwa=$_POST['nazwa'];
  172.         $phaslo=$_POST['haslo'];
  173.         if (isset($pnazwa)&&isset($phaslo)){
  174.              $wybieranie_dane="select * from users where nazwa=\"$pnazwa\" ";
  175.              $pobieranie_dane=mysql_query($wybieranie_dane) or die ('nie znaleziono');
  176.              $dane=mysql_fetch_array($pobieranie_dane);
  177.              $nazwa_from_database=$dane['nazwa'];
  178.              $haslo_from_database=$dane['haslo'];
  179.              $uprawnienia=$dane['uprawnienia'];
  180.              $ilosc_logowan=$dane['logowania'];
  181.              $ilosc_logowan++;
  182.                       if($nazwa_from_database===$pnazwa && $haslo_from_database === md5($phaslo )){
  183.                       $edycja="UPDATE users SET data='\"$data\"' , logowania='\"$ilosc_logowan\"' where nazwa='\"$pnazwa\"'" or die ('lala');
  184.      
  185.                       $wczytanie=mysql_query($edycja);
  186.                       echo"Użytkownik <b> $pnazwa </b> został zalogowany poprawnie !! <br> ";
  187.                       if($uprawnienia>1){
  188.                       echo"<a href='admin/admin.php'>kliknij aby rozpocząć administrowanie strona <br>";
  189.                       }
  190.                      $_SESSION['nazwa']=$pnazwa;
  191.                      $_SESSION['haslo']=$phaslo;    
  192.                      $_SESSION['user']=$uprawnienia;
  193.    
  194.    
  195.                      }
  196.                      else{
  197.                      echo "Nie prawidłowe dane !! ";
  198.                      }
  199.            
  200.    }
  201. }
  202.  
  203. public function wyloguj(){
  204.  $sesja=$_SESSION['user'];
  205.  $akcja=$_GET['action'];
  206.  if($akcja==="wyloguj"&&$sesja!==0){
  207.  $_SESSION['user']=0;
  208.  echo"Zostałe wylogowany poprawnie";
  209.  
  210. }
  211. }
  212. public function przycisk_wyloguj(){
  213.  if($_SESSION['user']>0){
  214.    echo"
  215.  <form method='get'>
  216.  <input type='hidden' name='action' value='wyloguj'>
  217.  <input type='submit' value='wyloguj'><br>
  218.  ";
  219.  
  220. }
  221. }
  222. public function rejestracja(){
  223. if ($_SESSION['user']===0){
  224. echo"<a href='rejestracja.php'>Zarejestruj się !</a>";
  225. }
  226. }
  227.  
  228.  
  229.  
  230.      
  231. }  
  232.  
  233. ?>


sory za "nieporządny" kod ale do pewnego czasu używałem dziwnego programu, który za każdym uruchomieniem rozwalał kod ;/
Fifi209
Nie potrzebny nam ten kod. Co nie działa?

P.S. Co do kodu, nie mieszaj php i html w klasie - bardzo zły nawyk. Tam nie powinno być skrawka html...
Dunio
Cytat(ayeo @ 24.07.2009, 12:23:11 ) *
A może pokażesz nam tajemniczą metodę wyświetl(); Bo nasz etatowy jasnowidz jest nad morzem w związku z urlopem i inaczej nic nie poradzimy. Na domiar złego szklana kula się gdzieś zapodziała. Nie ma rady, musisz wkleić kod swojej klasy tongue.gif

Pozdrawiam!


Tutaj napisaliście że to jest potrzebne. A w pierwszym poście chyba już się rozpisałem co jest nie tak.
Fifi209
W klasie:
$this->zawartosc;

Zmień na:
echo $this->zawartosc;
Dunio
zdaje się że mnie nie rozumiecie. W pierwszym poście napisałem że tak właśnie miałem to powiedzieliście żeby to zmienić. Skoro jednak mam użyć to z "echo" to napiszcie jak sformułować deklaracje zmiennej ($this->zawartosc) tak aby wyświetlała efekt działania kodu php a nie sam kod.
Fifi209
eval" title="Zobacz w manualu PHP" target="_manual

Hmm, poszukać nie zaszkodzi...
Dunio
próbuje zastosować tą funkcję ale to nic nie daje ;/
Fifi209
To pokaż jak próbujesz ją zastosować ?
Dunio
tak:
  1. <?
  2.   require('include/style.inc');
  3.   $strona= new strona();
  4.   $strona->zawartosc = "eval(include('include/rejestracja.php'))";
  5.   $strona->wyswietl();
  6. ?>


i tak:

  1. <?
  2.   require('include/style.inc');
  3.   $strona= new strona();
  4.   $wykonaj="eval(include('include/rejestracja.php'))";
  5.   $strona->zawartosc = "$wykonaj";
  6.   $strona->wyswietl();
  7. ?>
Fifi209
Kod
$strona->zawartosc = "eval(include('include/rejestracja.php'))";

Tu masz błąd składni...

Ma być:
Kod
$strona->zawartosc = "eval(include('include/rejestracja.php');)";
Dunio
to nic nie zmienia - nadal pojawia się kod w czystej postaci.
Fifi209
A jakbyś bez " dał ? smile.gif
Dunio
nie działa ;/
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.