Witam, mam problem z stworzeniem skryptu, który będzie dodawał do linku kolejną wartość lub zamieniał bierząca.. Mianowicie:
  1. <?
  2. function link($link,$wartosc)
  3. {
  4. if(!empty($_SERVER["QUERY_STRING"]))
  5. {
  6. parse_str($_SERVER['QUERY_STRING'], $params);
  7.  
  8. foreach($params as $pName => $pValue)
  9.  
  10. {
  11. $tablica[$pName]=$pName;
  12. }
  13. if(isset($tablica[$link]))
  14. {
  15. $indeks=$link;
  16. $$indeks=$wartosc;
  17. echo "$indeks=${$indeks}";
  18. }
  19. else
  20. {
  21. echo $_SERVER['QUERY_STRING'];
  22. }}
  23. }
  24.  
  25. echo "<a href='?".link('asd','wit')."'>a</a><br>";
  26.  
  27. echo "<a href='?".link('asd','lol')."'>b</a>";
  28. ?>

Problem polega na tym, że nie umiem zamienic wartosci zmiennej(która istnieje w linku).. Dalej wyświetlana jest poprzednia wartość zmiennej. dla przykladu gdy link ma postać ?asd=www i zmienna asd zmienia swoją wartość na wit, nie zapisuje mi się to w linku.

function.php
  1. function link($link,$wartosc,$numer='0')
  2. {
  3. if(!empty($_SERVER["QUERY_STRING"])) /* sprawdza czy istnieje w linku juz jakas pozycja*/
  4. {
  5. parse_str($_SERVER['QUERY_STRING'], $params); /* rozklada pozycje na tablice*/
  6.  
  7. foreach($params as $pName => $pValue)
  8.  
  9. {
  10. $tablica[$pName]=$pName."=".$pValue;
  11. }
  12. if(isset($tablica[$link])) /* sprawdza czy w tablicy istnieje dana pozycja*/
  13. {
  14. $tablica[$link]=$link."=".$wartosc; /* jezeli istnieje zamienia jej wartość na inną (podaną w funkcji) */
  15.  
  16. $_SERVER["QUERY_STRING"] = implode("&", $tablica); /* splata tablicę w ciąg który posłuży jako link*/
  17. if($numer<1) /* sprawdza czy to jest jedyna pozycja w danym linku */
  18. {
  19. echo "?".$_SERVER["QUERY_STRING"]; /* jeżeli istnieje tylko jedna pozycja w linku, pokazuje $_SERVER["QUERY_STRING"]*/
  20. }
  21. else
  22. {
  23. if(!isset($tablica[$link]))
  24. {
  25. echo "&".$link."=".$wartosc; /* jeżeli istnieje więcej niż jedna, sprawdza czy następna pozycja nie istnieje w tabeli i dodaje ją do linku*/
  26. }
  27.  
  28. }
  29. }
  30. else
  31. {
  32. if($numer<1)
  33. {
  34. echo "?".$_SERVER["QUERY_STRING"]."&".$link."=".$wartosc; /* podobnie jak wyżej tylko dodaje wartość przy nieistniejącej pierwszej danej*/
  35. }
  36. else
  37. {
  38. if(!isset($tablica[$link]))
  39. {
  40. echo "&".$link."=".$wartosc;
  41. }
  42.  
  43. }
  44.  
  45. }
  46.  
  47. }
  48. else
  49. {
  50. if($numer<1)
  51. {
  52. echo "?".$link."=".$wartosc; /* podobnie jak wyżej tylko przy braku $_SERVER["QUERY_STRING"]*/
  53. }
  54. else
  55. {
  56. if(!isset($tablica[$link]))
  57. {
  58. echo "&".$link."=".$wartosc;
  59. }
  60.  
  61. }
  62.  
  63. }
  64.  
  65. }

tutaj linki które dodałem w strona.php
  1. <a href="<?
  2. link('strona','profil');
  3. link('id','2',1); ?>">Twoj profil</a><br />
  4. <a href="<?
  5. link('strona','uzytkownicy'); ?>">Uzytkownicy</a><br />
  6. <a href="<?
  7. link('strona','www'); ?>">WWW</a><br />


Rozwiązałem ten problem w taki sposób, dodałem komentarze dla latwiejszego odczytu kodu.. prosiłbym o ocene przydatności takiego rozwiązania..