Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] include: zmienna ma dziedziczyć wartość
Forum PHP.pl > Forum > Przedszkole
hiszpanespaniol
witam.
Jestem pewien, że to żaden problem, ale nie mogę go rozwiązać. Proszę nie bijcie smile.gif jestem przedszkolakiem.

Chcę maksymalnie oddzielić PHP od HTML, więc każdą zmienną która ma doczepiony jakiś HTML wycinam do osobnego pliku ustawienia.php (narazie tak tylko potrafię). Tam mam komunikaty, zdefiniowane ścieżki itp.
Jedną z takich zmiennych jest format zapisu do pliku tekstowego. Pomiędzy tagami HTML są zmienne PHP.

Includuję plik ustawienia.php do pliku ksiega.php:

  1. <?php
  2. require_once('../ustawienia.php');
  3. // tutaj mam kod pobierający dane z formularza
  4. //a później
  5. // jeśli tu zdefiniuję wygląd wpisu (zmienna wpis), to wszystko działa
  6. $plik =&#092;"wpisy.txt\";
  7. $fd = fopen (&#092;"$plik\", \"r\");
  8. $wpisy = fread ($fd, filesize (&#092;"$file\"));
  9. $fp = fopen($plik, &#092;"w\");
  10. fwrite($fp, &#092;"$wpis \n $wpisy\");
  11. fclose($fp);
  12. ?>


a w pliku ustawienia.php mam tak zdefiniowany format wpisu:

  1. <?php
  2. $wpis = '<div class=\"wpis\"></div class=\"wpis\">autor: ' .$nick. ' - w dniu ' .$czas. ' o godzinie ' .$godzina. ' Z numeru ip: ' .$ip. '
  3.  
  4.  ' .$tresc_ksiegi. 
  5.  
  6. ';
  7. ?>


no i do księgi zapisują się puste pola. ten sposób mi nie działa. Działa tylko wtedy gdy zmienną $wpis dam wewnątrz skryptu wpisującego do pliku tekstowego. Inaczej pisząc: zmienna wpis wypełnia się danymi z formularza tylko gdy jest podana wewnątrz skryptu księgi, nie wypełnia się, gdy jest w includowanym pliku.

Czytałem o zmiennych globalnych, znalazłem tylko sposoby na odwrotną sytuację. Może słabo czytałem.

Da się to jakoś rozwiązać? Nie chcę przerabiać skryptu wpisującego do pliku tekstowego (bo wiem, ze można wpisywać tak: nick||wpis||data||kolor_oczu, a później explode przy odczytywaniu, ale to też wymaga mieszania HTML z PHP).
Proszę o pomoc. Aha no i chyba nie ma sensu zapisywać w sesji tych zmiennych


edit:
dodałem tylko komentarz do kodu
devnul
poczytaj o systemach szablonów, wyjdzie na zdrowie i będzie bardziej poprawne,
ale jak już chcesz się uprzeć przy tego typu rozwiązaniu to proponuje coś takiego
  1. <?php
  2. $wpis=require('../ustawienia.php');
  3.  
  4. $plik="wpisy.txt";
  5. $fd = fopen ("$plik", "r");
  6. $wpisy = fread ($fd, filesize ("$file"));
  7. $fp = fopen($plik, "w");
  8. fwrite($fp,"$wpis\n$wpisy");
  9. fclose($fp);
  10. ?>

  1. <?php
  2. return '<div class="wpis"></div class="wpis">autor: ' .$nick. ' - w dniu ' .$czas. ' o godzinie ' .$godzina. ' Z numeru ip: ' .$ip. '
  3.  
  4.  ' .$tresc_ksiegi. 
  5.  
  6. ';
  7. ?>
nevt
pierwsze:
  1. <?php
  2. require_once('../ustawienia.php');
  3. // tutaj mam kod pobierający dane z formularza
  4. //a później
  5. ?>

skoro w ustawienia.php potrzebujesz danych z formularza, to raczej:
  1. <?php
  2. // tutaj mam kod pobierający dane z formularza
  3.  //a później
  4.  require_once('../ustawienia.php');
  5. ?>


drugie: co to za wynalazek
  1. <div class="wpis"></div class="wpis">

jeśli już, to:
  1. <div class="wpis"></div>


no i trzecie:
  1. <?php
  2. $wpis = '<div class=\"wpis\"></div class=\"wpis\">autor: ' .$nick. ' - w dniu ' .$czas. ' o godzinie ' .$godzina. ' Z numeru ip: ' .$ip. '
  3.  
  4.  ' .$tresc_ksiegi. 
  5.  
  6. ';
  7. ?>

ta składnia jest do niczego, albo:
  1. <?php
  2. $wpis = '<div class="wpis"></div>autor: ' .$nick. ' - w dniu ' .$czas. ' o godzinie ' .$godzina. ' Z numeru ip: ' .$ip. ' ' .$tresc_ksiegi;
  3. ?>

albo:
  1. <?php
  2. $wpis = "<div class=\"wpis\"></div>autor: $nick - w dniu $czas o godzinie $godzina Z numeru ip: $ip $tresc_ksiegi";
  3. ?>


powodzenia
hiszpanespaniol
@nevt: co do składni: ja mam wszystko dobrze u siebie, tylko podczas wklejania na forum coś się popsuło. widać, że $tresc_ksiegi poszła kilka linijek niżej zamiast zostać w div'ie. i bez przesady, chyba można się domyśleć że człowiek próbujący sił w PHP wie już coś o stylach css: zamykając diva nie podałem jego klasy, coś tu się źle powklejało smile.gif naprawdę. więc składnię mam dobrą, zwyczajnie do zmiennych doczepiam HTML.

w każdym razie przesunięcie tego:

  1. <?php
  2. require_once('../ustawienia.php');
  3. ?>


pod kod pobierający i walidujący dane z formularza pomogło. Już się pozbyłem całego HTML'a dzięki, pomogłeś.

@devnul: zrobiłem tak jak poradziłeś, czyli:

  1. <?php
  2. $wpis=require('../ustawienia.php');
  3. ?>


i teraz nie wiem co dalej. niżej dałeś kod z "return" ale nie wiem gdzie to wpisać. w pliku ustawienia.php mam wiele różnych zmiennych. chętnie nauczę się kilku sposobów, w każdym razie musi być to rozwiązanie bez HTML'a w skrypcie księgi.
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.