Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z substr()
Forum PHP.pl > Forum > Przedszkole
podziak
witam

mam cos takiego
  1. <a href="<? print $_SERVER['PHP_SELF'];?>?lang=de&<? echo substr($_SERVER['QUERY_STRING']."&lang=en",0,-8); ?>">PL</a>
  2. <a href="<? print $_SERVER['PHP_SELF'];?>?lang=de&<? echo substr($_SERVER['QUERY_STRING']."&lang=pl",0,-8); ?>">EN</a>


no i nie dziala tak jak nalezy bo chodzilo mi o wybor jezyka i przekazywanie linka ale po klikniecu na link PL jest ok ale jak pozniej klikne EN to wychodzi mi link takiej postaci "?lang=PL&lang=EN&..."
a chodz mi o to ze za kazdym kliknieciem pokazywal tylko jezyk
Cysiaczek
Przyjrzyj się temu, co przekazujesz do funkcji string. Za każdym razem jest tego o jeden ?lang=[pl/en] więcej. Po prostu doklejasz do stringa...
podziak
no tak ale jak sie tego pozbyc aby nieprzekazywalo tej opcji lang questionmark.gif
Cysiaczek
Po prostu nie doklejaj stringa. Zauważ, że QUERY_STRING jest zapamietany, a nastepnie przekazany i jest do niego doklejany kolejny QUERY_STRING.

tak wogóle, to jeśli ma to Tobie zmieniać języki, to wogóle funkcja substr wydaje się naduzyciem. Nie lepiej po prostu zapisać gdzieś te wartości i po prostu dodawać do przy linku?
podziak
ok wytlumacze to lopatologicznie
mam linka w urlu index.php?blabla...&lang=pl

pozniej chce kliknac link en i pozostaje mi index.php?lang=en a chce aby byl index.php?blabla...&lang6=en
i nie wiemjak takie rozwiazanie zrobic
Cysiaczek
http://www.php.net/manual/pl/function.http-build-query.php

MOże to ci trochę rozjaśni w takim razie.
podziak
wiesz nie jestemdobry w te klocki i wydawalo mi sie ze zastosowanie $_SERVER['QUERY_STRING'] bedzie najlepszym rozwiazaniem tylko nie wiem jak z tego URLa odcinac koncowke lang=pl tzn chodzi oodciecie powtorzonego fragmentu.

Poza tym musze to dostosowac do istniejacego systemu. Wiec nowe linkowanie odpada
tiraeth
  1. <?php
  2. function httpd_query_builder ( $language = PL, $filename = $_SERVER['PHP_SELF'] )
  3. {
  4.  $httpdQuery = $filename;
  5.  if ( count($_GET) > 0 )
  6.  {
  7. foreach ( $_GET as $getKey => $getValue )
  8. {
  9.  if ( $getKey != 'lang' )
  10.  {
  11. $httpdQuery.= ( eregi('?', $httpdQuery) ) ? '&' : '?';
  12. $httpdQuery .= $getKey . '=' . $getValue;
  13.  }
  14. }
  15.  }
  16.  
  17.  
  18.  if ( $add != null )
  19.  {
  20. $httpdQuery .= ( eregi('?', $httpdQuery) ) ? '&lang=' : '?lang';
  21. $httpdQuery .= $language;
  22.  }
  23.  
  24.  return $httpdQuery;
  25. }
  26.  
  27. //
  28. //
  29. // Aktualnie adres to: blabla.php?lolek=25&lang=PL
  30. // Powinno zrobic tak:
  31. //
  32. echo httpd_query_builder(); // blabla.php?lolek=25&lang=PL
  33. echo httpd_query_builder('EN'); // blabla.php?lolek=25&lang=EN
  34. echo httpd_query_builder('EN', 'index.php'); // index.php?lolek=25&lang=EN 
  35. ?>


Pisane z palca, jak nie działa tzn. że powinno być coś w tym rodzaju 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.