Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niewidoczne zmienne
Forum PHP.pl > Forum > Przedszkole
Vocatio
Witam.

Mam problem z widocznoscia zmiennych. posiadam taka strukture:

plik1.php

  1. <?php
  2.  
  3. [...]
  4. $zmienna1=1;
  5. $zmienna2=2;
  6. include 'plik2.php';
  7. [...]
  8.  
  9. ?>


plik2.php
  1. <?php
  2.  
  3. [...]
  4. if (zmienna1=1) 
  5.  { include 'plik3.php'; }
  6. [...]
  7.  
  8. ?>


plik3.php
  1. <?php
  2.  
  3. [...]
  4. echo 'zmienna 2 ma wartosc '.$zmienna2;
  5. [...]
  6.  
  7. ?>


i wyglada na to ze plik3.php nie widzi zmiennych, bo w efekcie mam tylko wyswietlone na ekranie "zmienna 2 ma wartość ". Probowalem rowniez przekazywanie zmiennych za pomoca sesji i nic. Oczywiscie moje pytanie brzmi dlaczego tak sie dzieje i jak temu zapobiec.

pozdrawiam
Wojtek B.
nospor
użyc global
plik1.php
  1. <?php
  2.  
  3. [...]
  4. global $zmienna1,$zmienna2;
  5. $zmienna1=1;
  6. $zmienna2=2;
  7. include 'plik2.php';
  8. [...]
  9.  
  10. ?>


plik2.php
  1. <?php
  2.  
  3. [...]
  4. global $zmienna1,$zmienna2;
  5. if (zmienna1==1)//tu poprawilem warunek bo miales zle 
  6. { include 'plik3.php'; }
  7. [...]
  8.  
  9. ?>


plik3.php
  1. <?php
  2.  
  3. [...]
  4. global $zmienna1,$zmienna2;
  5. echo 'zmienna 2 ma wartosc '.$zmienna2;
  6. [...]
  7.  
  8. ?>
Vocatio
Warunek byl przykladowy, ale dzieki.
Natomiast zadeklarowanie zmiennych jako globalne nie pomoglo, nadal w pliku 3 nie sa widoczne zmienne deklarowane w pliku 1.
Probowalem jeszcze takiego motywu, ze w pliku2 robie przepisanie zmiennej do drugiej czyli $zmienna22=$zmienna2 i w pliku3 odwoluje sie do $zmienna22 - tez nic.
Wyglada mi to tak jakby plik3 nie przyjmowal zadnych zmiennych spoza pliku
bigZbig
Nie wiem moze masz cos w tzw. miedzyczasie co Ci zmienia wartosc drugiej zmiennej bo ja zrobilem tak
  1. <?php
  2.  
  3. //plik1
  4. $a = 1;
  5. $b = 2;
  6.  
  7. include 'plik2.php';
  8.  
  9. //plik2
  10. if ($a==1) include 'proba3.php';
  11.  
  12. //plik3
  13. echo 'zmienna b ma wartosc '.$b;
  14.  
  15. ?>


I wszystko dziala jak powinno. Jest jeszcze pytanie czy includowanie zarowno w pliku pierwszym jak i drugim nie jest przypadkiem wywolywane w funkcji, ale w takim przypadku powinno pomoc global.
Vocatio
Ok. moze calkowity opis sytuacji cos pomoze.
ogolna zasada ma byc taka, ze plik1 znajduje sie w Katalogu1 na ktory jest skierowana subdomena katalog1.domena.pl. Pozostale pliki znajduja sie w katalogu "glowny" - oba katalogi sa rownorzedne.
Plik 1 ma za zadanie pobrac z subdomeny zmienna2=katalog1 i wywolac plik2. W pliku 2 zawarty jest pelny HTML i menu. Pliki Plik3, Plik4 ...., sa plikami odpowiedzialnymi za podanie glownej tresci strony. o tym ktory plik jest ladowany decyduje plik2 czyli
  1. <?php
  2.  
  3. if (zmienna1==1)
  4. { include 'plik3.php'; }
  5.  
  6. ?>


zmienna2 jest potrzebna w pliku3 do pobrania odpowiednych zmiennych z bazy, no i okazuje sie ze w pliku 3 zmienne te sa niewidoczne. Ciekawostka ktora moze wam pomoze mi pomoc jest fakt ze polecenie
  1. <?php
  2. $domena = $_SERVER['HTTP_HOST']; 
  3. ?>

wywolane w plik1 daje w efekcie katalog1.domena.pl natomiast gdy wstawilem je w plik3 to otrzymalem domena.pl
Nie wiem czy to moze miec jakies znaczenie bo w koncu Plik2 i plik3 sa w tym samym katalogu i plik2 te zmienne widzi natomiast plik3 nie.

Zmienne nie sa tworzone przez funkcje i nie sa w miedzyczasie wykorzystywane. I jeszcze jedna ciekawostka. Jedna ze zmiennych tworzonych w plik1 to sciezka bezwgledna do katalogu z grafika. Jesli w plik2 includuje pliki np plik4 ktore nie korzystaja zmiennych to nie ma problemow z grafika ktora wyswietlana jest przez plik2 po includowaniu. Natomiast jesli includuje plik3 uzywajacy zmienne to elementy grafiki wystepujace po includowaniu nie sa wyswietlane. czyli tak jakby wywolanie plik3 kasowalo mi wszystkie zmienne.

  1. <img src=\"<? echo $SESSION['domena'] ?>image.gif\">
  2. <?
  3.  include ''.$SESSION['glowna'].''.$plik.'.php';
  4. ?>
  5. <TD width=6 background=\"<? echo $SESSION['domena'] ?>image.gif\"> // ta grafika nie jest wyswietlana jesli includowanym plikiem jest plik3 korzystaj
  6. cy ze zmiennych


Ostatnia wskazowka. jesli w pliku 3 nie zainkluduje pliku do polaczenia z baza to rowniez go nie uzyskam mimo ze odwolywalem sie do niego w plik1

to tyle.

Zrobilem jeszcze jeden test - po wywolaniu pliku plik3 bezposrednio z plik1 zmienne w plik3 sa widoczne

Dlaczego one gina przy przejsciu plik1->plik2->plik3 questionmark.gifquestionmark.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.