Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazanie zmiennej wewnątrz kodu
Forum PHP.pl > Forum > PHP
barat
Witam
Mam drobne pytanie, i nie ukrywam, że bardzo przydatna byłaby odpowiedź smile.gif

Otóż chciałbym się dowiedzieć, czy jest możliwość przekazania wartości jakiejś zmiennej (jakiegoś wyniku wykonania skryptu) kilka linijek wyżej tego samego kodu czyli schemat:

echo $zmienna;

trochę kodu który np pobiera coś z bazy czy sprawdza warunki

$zmienna = 'tu wynik tego kodu'

Z tego co na razie wyczytałem w mądrych książkach jakoś nie umiem tego zrobić ... nawet nie wiem, czy tak się da smile.gif
Bo może konieczne jest takie ustawianie funkcji/kodu by zmienna pobierana już wystąpiła wyżej ?
phpion
Może zainteresuj się operatorem .= i podczas wykonywania tego kodu dopisuj do zmiennej kolejne wartosci czyli $zmienna .= "dopis"
barat
No właśnie chyba to nie bardzo zadziała ? To tylko spowoduje dodanie wartosci do poprzedniej zmiennej bez nadpisywania jej, ale dalej - dodana wartosć będzie widoczna dopiero gdy echo będzie poniżej jej:

$zmienna = 'coś';
echo $zmienna //wyświetli: coś
$zmienna .= ' jeszcze';
echo $zmienna; //wyświetli: coś jeszcze

Chodzi o to, że mam jakąś tam stronę index.php

w niej mam przywołanie najważniejszych funkcji do wygenerowania strony + na dole include strony z "szablonem czyli metadane, itp - taka pusta poprawna strona ... a w tej stronie dopiero w zależności od parametru hmm page (ondex.php?page=cośtam) wyświetlam poszczególne moduły.
Chodzi o to, że dopiero te poszczególne moduły będą wyciagać z bazy info co mają załadować + dodatkowo dan z 3 kolumn (meta_title, meta_desc i meta_keywords) ... moge wtedy te 3 wartosci przypisac do zmiennych i chciałbym je wyświetlić w odpowiednich miejscach czyli
<title></title> i <meta name="desc/keywords ...

Gdybym przyjął rozwiązanie, że cały szablon strony jest tworzony na poziomie tych include'owanych modułów sprawa by była prosta - funkcje wyciagajace ustawiłbym na semej górze i bez problemu miałbym dostęp do tych zmiennych ... ale takiego rozwiazania nie chcę, bo wtedy dla każdego nowego modułu musiałbym wklejać ten sam szablon WWW ... a to ma być automat smile.gif
domis86
przekazac dane do kodu znajdujacego sie kilka linijek wyzej ,
inaczej:
przekazaz dane do kodu, ktory sie juz wykonal

nie da sie smile.gif


Cos mi sie wydaje, ze zle zaplanowales ten swoj system.
Moze poczytaj o MVC biggrin.gif
barat
Sam doszedłem, że źle zaprojektowałem smile.gif

Musze przenieść dane o metatagach do osobnej tabeli i będzie dobrze (teraz każdy mod typu Strona statyczna, news itp miała 3 dodatkowe kolumny z metatagami poza treścia właściwą... smile.gif )
wystarczą kolumny |mod|link|meta_title|meta_desc|meta_key| bo zanim wyświetlę body już mam info o tym który mod odpalam i jaki link tego moda więc bez problemu wyciągnę z bazy info o metatagach smile.gif

Ehh wystarczyło pomyśleć biggrin.gif

Ale mimo wszystko - dobrze mieć pewność, że tak się nie da smile.gif
D3vilroot
Mam identyczny problem. Musze zrobic coś identycznego, ale wątpie czy da się zrobic coś takiego.
Sytucja identyczna. Tez problem z Meta Tagami tongue.gif


Na szczęście bardzo łatwo sobie z tym poradziełem... smile.gif
domis86
czyli już nie masz problemu snitch.gif
emacieka
A moze byc tak?
  1. <?php
  2.  
  3. //na poczatek
  4.  
  5. // jakies operacje
  6.  
  7. ?>
  8. <html>
  9. <meta name=keywords content=%%META_KEYS%%>
  10. <meta name=description content=%%META_DESC%%>
  11. ...
  12. </html>
  13. <?php
  14.  
  15. $out = ob_get_clean();
  16.  
  17. $meta_patern = array('%%META_KEYS%%', '%%META_DESC%%');
  18. $meta_replace = array(
  19. 'keys' => 'jakies, slowa, dziwne',
  20. 'desc' => 'A tuaj opis'
  21. );
  22.  
  23. $out = str_replace($meta_patern, $meta_replace, $out);
  24. echo $out;
  25. ?>
barat
Cytat(D3vilroot @ 20.05.2007, 13:52:45 ) *
Na szczęście bardzo łatwo sobie z tym poradziełem... smile.gif


Ja miałem założenie, by plik szablonu (caly wyglad strony) to był czysty kod HTML + tylko w odpowiednich miejscach
metatag(title); metatag(keys); metatag(descr); menu(); body()

Ot ... chciałem oddzielić szablon od kodu smile.gif

Stąd rodził się problem, że wszystko to co tyczy się kolejno ładowanych modułow w body() było już "pod" </head> smile.gif

U mnie wymagało to przeprojektowania bazy smile.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.