Witam, mam problem z stworzeniem skryptu, który będzie dodawał do linku kolejną wartość lub zamieniał bierząca.. Mianowicie:
<?
function link($link,$wartosc) {
if(!empty($_SERVER["QUERY_STRING"])) {
parse_str($_SERVER['QUERY_STRING'], $params);
foreach($params as $pName => $pValue)
{
$tablica[$pName]=$pName;
}
if(isset($tablica[$link])) {
$indeks=$link;
$$indeks=$wartosc;
echo "$indeks=${$indeks}"; }
else
{
echo $_SERVER['QUERY_STRING']; }}
}
echo "<a href='?".link('asd','wit')."'>a</a><br>";
echo "<a href='?".link('asd','lol')."'>b</a>"; ?>
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
function link($link,$wartosc,$numer='0') {
if(!empty($_SERVER["QUERY_STRING"])) /* sprawdza czy istnieje w linku juz jakas pozycja*/ {
parse_str($_SERVER['QUERY_STRING'], $params); /* rozklada pozycje na tablice*/
foreach($params as $pName => $pValue)
{
$tablica[$pName]=$pName."=".$pValue;
}
if(isset($tablica[$link])) /* sprawdza czy w tablicy istnieje dana pozycja*/ {
$tablica[$link]=$link."=".$wartosc; /* jezeli istnieje zamienia jej wartość na inną (podaną w funkcji) */
$_SERVER["QUERY_STRING"] = implode("&", $tablica); /* splata tablicę w ciąg który posłuży jako link*/ if($numer<1) /* sprawdza czy to jest jedyna pozycja w danym linku */
{
echo "?".$_SERVER["QUERY_STRING"]; /* jeżeli istnieje tylko jedna pozycja w linku, pokazuje $_SERVER["QUERY_STRING"]*/ }
else
{
if(!isset($tablica[$link])) {
echo "&".$link."=".$wartosc; /* jeżeli istnieje więcej niż jedna, sprawdza czy następna pozycja nie istnieje w tabeli i dodaje ją do linku*/ }
}
}
else
{
if($numer<1)
{
echo "?".$_SERVER["QUERY_STRING"]."&".$link."=".$wartosc; /* podobnie jak wyżej tylko dodaje wartość przy nieistniejącej pierwszej danej*/ }
else
{
if(!isset($tablica[$link])) {
echo "&".$link."=".$wartosc; }
}
}
}
else
{
if($numer<1)
{
echo "?".$link."=".$wartosc; /* podobnie jak wyżej tylko przy braku $_SERVER["QUERY_STRING"]*/ }
else
{
if(!isset($tablica[$link])) {
echo "&".$link."=".$wartosc; }
}
}
}
tutaj linki które dodałem w strona.php
<a href="<?
link('id','2',1
); ?>">Twoj profil</a><br />
<a href="<?
link('strona','uzytkownicy'); ?>">Uzytkownicy</a><br />
<a href="<?
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..
Ten post edytował daggi 27.01.2011, 16:50:07