Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmiana get pobierając zmienną $_SERVER
Forum PHP.pl > Forum > Przedszkole
piotr485
Zakładając, ze aktualnie znajduje sie w adresie www.mojastrona.pl/index?wartosc=klucz&wartosc2=klucz2&wartosc3=klucz3 chciałbym zmienic wartosc3 na inna wartosc, zakladajac ze adres pobieramy bezpośrednio poprzez $_SERVER['QUERY_STRING'], a wiec pisze kod:


  1. $adres_get = $_SERVER['QUERY_STRING'];
  2. $nowa_wartosc = klucz57;
  3. $zmieniany_get = $_GET['wartosc3'];
  4. echo '<a href="'.$adres_get.'">Zmiana klucz3 na '.$nowa_wartosc.'</a>';


jakaś trzeba podmienic $zmieniany_get w linku, ale nie mam pojecia jak - moze jakas podpowiedz ?

P.S. chodzi mi tu o inne rozwiazanie niz typu:
  1. echo '<a href="www.mojastrona.pl/index?wartosc=klucz&wartosc2=klucz2&wartosc3='.$nowa_wartosc.'">link</a>';
cojack
Musiałbyś rozbić query_stringa do tablicy, a później w tablicy go podmienić, a nastepnie spowrotem tablice połączyć i zwrócić jako string.
piotr485
Cytat(cojack @ 19.08.2009, 15:12:00 ) *
Musiałbyś rozbić query_stringa do tablicy, a później w tablicy go podmienić, a nastepnie spowrotem tablice połączyć i zwrócić jako string.


Hmm ..., a nie ma jakiegoś łatwiejszego sposobu ?
Fifi209
Cytat(piotr485 @ 19.08.2009, 14:20:38 ) *
Hmm ..., a nie ma jakiegoś łatwiejszego sposobu ?

Nie ma.

Ew. mógłbyś spróbować z wyrażeniami regularnymi preg_replace aby nie rozbijać ciągu. (ale wątpię, że to się uda)

P.S. Jeżeli musisz coś takiego zrobić, to znaczy że coś źle zaprojektowałeś.
cojack
Albo wiedzieć jakie gety się przesyła i po prostu na jana podmienić geta ;] wrzucając do linka gety przesyłane + get zmieniony, ale to mało ciekawe zajęcie.
#luq
Można by użyć substr_replace() ale rozwiązanie oparte o explode() jest o wiele prostsze.
Co za problem napisać sobie funkcję do tego?
seth-kk
moznaby cos w stylu
  1. function rebuild_current_link(array $newData)
  2. {
  3. $link = $_SERVER['SCRIPT_NAME'] . '?';
  4. foreach($_GET as $key=>$val)
  5. {
  6. if(array_key_exists($key, $newData))
  7. $link .= $key . '=' . $newData[$key] . '&';
  8. else
  9. $link .= $key . '=' . $_GET[$key] . '&';
  10. }
  11. return $link;
  12. }

czy to prostsze sami ocencie winksmiley.jpg
erix
Ale Wy kombinujecie...

parse_url + http_build_query...
piotr485
Cytat(#luq @ 19.08.2009, 15:45:04 ) *
Można by użyć substr_replace() ale rozwiązanie oparte o explode() jest o wiele prostsze.
Co za problem napisać sobie funkcję do tego?


Napisałem coś takiego:

  1. function id_firmy($id_firmy) {
  2. $rozbijanie_firm = explode("&", $adres_get);
  3. echo 'index.php?';
  4. echo $rozbijanie_firm[0];
  5. echo $rozbijanie_firm[1];
  6. echo '&firma='.$id_firmy;
  7. }


ale przy wylowywaniu cos dziwnego wychodzi cos mi sie wydaje ze nie powinno byc tam tego echo jak umieszczam ta funkje w echo tylko nie wiem jak to przerobic
Fifi209
Cytat(erix @ 19.08.2009, 15:06:13 ) *
Ale Wy kombinujecie...

parse_url + http_build_query...



Cytat(piotr485 @ 19.08.2009, 15:14:26 ) *
Napisałem coś takiego:

  1. function id_firmy($id_firmy) {
  2. $rozbijanie_firm = explode("&", $adres_get);
  3. echo 'index.php?';
  4. echo $rozbijanie_firm[0];
  5. echo $rozbijanie_firm[1];
  6. echo '&firma='.$id_firmy;
  7. }


ale przy wylowywaniu cos dziwnego wychodzi cos mi sie wydaje ze nie powinno byc tam tego echo jak umieszczam ta funkje w echo tylko nie wiem jak to przerobic


Przecież masz na tacy...
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.