Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z funkcją define()
Forum PHP.pl > Forum > PHP
Mertuch
Piszę galerię na stronę internetową.
Pisząc to, testowałem wszystko na katalogu głównym strony. Galeria działała w porządku.
Problem pojawił się, kiedy chciałem umieścić jeden i ten sam system galerii do różnych folderów.

Kod
define('FOLDER_ZDJEC','.img/');


wartość .img/ to ścieżka do folderu ze zdjęciami w której trzymam zdjęcia.

Moje pytanie brzmi:
czy do wartości mogę dopisać zmienną?
Chodzi mi o to, żeby do każdej galerii nie trzeba było dopisywać dokładną ścieżkę, tylko żeby wpisać tam zmienne. Moją propozycją byłby kod:
Kod
define('KATALOG_ZDJEC','./sloneczne/galeria_zdjec/$rocznik/$impreza/img/');

który niestety nie działa wstydnis.gif

W pliku oczywiście znajdują się:
Kod
      $rocznik = $_GET['rocznik'];
      $impreza = $_GET['impreza'];


Jest jakaś możliwość wpisania w wartość zmiennej?

Pozdrawiam,
Mertuch
batman
Zmiennej nie, ale zawsze możesz użyć funkcji sprintf.
Mały przykład:
  1. <?php
  2. define('COS_TAM', 'jakis string: %s, inny string: %s');
  3. echo sprintf(COS_TAM, 'teskt1', 'tekst2');
  4. ?>

Powinno zadziałać. i podmienić %s na kolejne stringi. To rozwiąże Twój problem.
Mertuch
Rozumiem o co ci chodzi, ale nie jestem na tyle pojęty, żeby to umiejętnie zastosować.
W ogóle nie wiem jak to zastosować... W tym przypadku...

Ok. Problem rozwiązany. Napiszę jak to zrobiłem, może komuś się przyda winksmiley.jpg

Skoro musiałem określić ścieżkę katalogu, która była zmienna, to nie mogłem użyć stałej... Na to nie wpadłem. A więc tam gdzie chciałem zastosować:

Kod
define('KATALOG_ZDJEC','./sloneczne/galeria_zdjec/$rocznik/$impreza/img/');


Zastosowałem zmienną:

Kod
$katalog_zdjec = "./sloneczne/galeria_zdjec/$rocznik/$impreza/img/";


Potem tylko we wszystkich miejscach zamieniłem stałą na mienną i gotowe smile.gif
batman
Skoro już wiesz jak to zrobić to dam Ci gotowca, dla potomnych też winksmiley.jpg
  1. <?php
  2. define('KATALOG_ZDJEC','./sloneczne/galeria_zdjec/%s/%s/img/');
  3. echo sprintf(KATALOG_ZDJEC, $_GET['rocznik'], $_GET['impreza']);
  4. ?>
legorek
A po co takie kombinacje?

Kod:

  1. <?php
  2. $rocznik = '2008';
  3. $impreza = 'urodziny';
  4.  
  5. define('KATALOG_ZDJEC', "./sloneczne/galeria_zdjec/$rocznik/$impreza/img/");
  6.  
  7. echo KATALOG_ZDJEC;
  8. ?>


Działa bez problemu. Jest pewna subtelna różnica pomiędzy ' (apostrof) i " (cudzysłów), którą powinieneś znać.
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.