Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodanie do adresu zmiennej
Forum PHP.pl > Forum > Przedszkole
Michał Ziółkowski
Dzień dobry, czy mógłby ktoś mi pomóc napisać skrypt dodający do aktualnego adresu zmienną language=english lub language=polish po kliknięciu na link eng lub pl spełniający następujące warunki:
  • jeżeli w adresie są już jakieś inne zmienne to zamiast ?language=english doda &language=english (lub polish)
  • jeżeli w adresie występuje już ?language=english lub &language=english (lub polish) nie doda nic, chyba że w adresie znajduje się zmienna english a wymuszona zostanie polish (i na odwrót) - wtedy podmieni je ze sobą

Jeżeli ktoś byłby na tyle miły by pomóc to z góry dziękuje smile.gif
desperat666
Tak.. zbuduj sobie tablicę tych swoich zmiennych
  1. <?php
  2. $twojezmienne = Array();
  3.  
  4. $twojezmienne["language"] = "polish";
  5. $twojezmienne["dupa"] = "ryba";
  6. ?>


i zobacz co wyświetli funkcja http_build_query:
  1. <?php
  2. echo http_build_query($twojezmienne, '', '&amp;');
  3. ?>


Może pomoże
Michał Ziółkowski
A nie dało by się jakoś sprawdzić (za pomocą wyrażeń regularnych?) czy występuje już w adresie ?jakas_zmienna=cos i jeżeli tak dodać &amp;?
Mam dużo podstron, na każdych różne zmienne i zaproponowany sposób średnio mi pasuje.
desperat666
przecież żeby wiedzieć czy jest ta zmienna w adresie trzeba użyć tablicy $_GET, na przykład
  1. <?php
  2. if ($_GET["language"]=="polish") { }
  3. ?>

i tejŻe tablicy też możesz użyć do http_build_query() no nie?
Michał Ziółkowski
Nie wiem czy się dobrze zrozumieliśmy, ale nie ważne poszukałem w google i znalazłem takie rozwiązanie:
  1. $activepageuri = explode ('/', $_SERVER['REQUEST_URI']);
  2. $activepage = $activepageuri[count ($activepageuri) - 1];
  3.  
  4. $queryString = array();
  5. if ($board_config['default_lang'] == "english") $setLang = 'polish';
  6. elseif ($board_config['default_lang'] == "polish") $setLang = 'english';
  7.  
  8. $count = 0;
  9.  
  10. foreach($_GET as $key => $val)
  11. if($key <> 'language'){
  12. $queryString[] = urlencode($key) . '=' . urlencode($val);
  13. $count++;
  14. }
  15. $queryString = $activepage;
  16. $queryString .= implode('&amp;', $queryString);
  17. $queryString .= $count ? '&amp;' : '?';
  18. $queryString .= 'language=' . $setLang;

I wyświetlanie w sposób następujący: <a href="' . $queryString . '"><img src="images/lang_'.$setLang.'.png" alt="language" /></a>'.
Wszystko działa tak jak należy, jednak czy dało by się zrobić tak aby jeżeli po kliknięciu na zmianę języka i dodaniu powiedzmy ?language=english i ponownym kliknięciu na zmianę języka skrypt dodawał ?language=polish a ?language=english kasował?
Bo teraz w takiej sytuacji tworzy link ?language=english?language=polish, który co prawda działa ale nie jest najlepszym wyjściem.
Pozdrawiam.
-quba-
dołączam do prośby, czy mógłby ktoś poprawić ten skrypt tak by działał poprawnie?
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.