Запазване на линк + добавяне на още към него.

paneznam

Registered
Здравейте!
Малко ми е трудно да се изразя, но дано ме разберете.Имам линк примерно index.php?newspage=3 и когато сменя езика от български на английски използвам следната препрадка ?&chlang=bg .Но това не ме устройва, защото Така, примерно докато разглеждам една новина и искам да сменя езика, то ме връща в началото.Искам да запазя този линк
?index.php?newspage=3 и към него да добавя &chlang=bg и да стане
?index.php?newspage=3&chlang=bg .Какъв код трябва да добавя на бутона за смяна на езика ?

Код:
<a href="?chlang=bg">BG</a>

Благодаря ! Дано все пак сте ме разбрали :D
 
Може би както го правят повечето - със сесии !?
Или пък то ти пак ги използваш ама проблема е само докато смениш езика ли? :D
Май не те разбрах...
 
Да.Проблема е при сменянето на езика.За сменянето на езика ползвам сесии, а новините си ги изкарвам по този начин:

Код:
$query = mysql_query("SELECT * FROM news WHERE id=$id");

id-то го взимам от линка с $_GET
 
Ммм, написах я за бързо, можеше и по-съкратена да стане, но не ми се мислеше :D

Така слагаш в началото на файла функцията:
Код:
function change_lang($new_lang)
{
    $raz = explode("=", $new_lang);
    $get = $_GET;
    $get[$raz[0]] = $raz[1];
    
    $st = array();
    foreach ($get as $key => $value)
        $st[] = "{$key}={$value}";
    
    $page = basename($_SERVER['SCRIPT_NAME']);
    return $page."?".implode("&", $st);
}

И после линка за сменяне на език трябва да изглежда така:

echo '<a href="'.change_lang("chlang=bg").'">BG</a>'


EDIT: Редактирах на едно място, че имах грешчица.
 
HunteR каза:
Ммм, написах я за бързо, можеше и по-съкратена да стане, но не ми се мислеше :D

Така слагаш в началото на файла функцията:
Код:
function change_lang($new_lang)
{
    $raz = explode("=", $new_lang);
    $get = $_GET;
    $get[$raz[0]] = $raz[1];
    
    $st = array();
    foreach ($get as $key => $value)
        $st[] = "{$key}={$value}";
    
    $page = basename($_SERVER['SCRIPT_NAME']);
    return $page."?".implode("&", $st);
}

И после линка за сменяне на език трябва да изглежда така:

echo '<a href="'.change_lang("chlang=bg").'">BG</a>'


EDIT: Редактирах на едно място, че имах грешчица.

//OFFTOPIC
Ох незнам защо като използваш функцията explode винаги променливата ти се казва $raz !? От тебе го прихванах това и вече и аз така си кръщавам променливите :D :D :D
//END
 
purko каза:
HunteR каза:
Ммм, написах я за бързо, можеше и по-съкратена да стане, но не ми се мислеше :D

Така слагаш в началото на файла функцията:
Код:
function change_lang($new_lang)
{
    $raz = explode("=", $new_lang);
    $get = $_GET;
    $get[$raz[0]] = $raz[1];
    
    $st = array();
    foreach ($get as $key => $value)
        $st[] = "{$key}={$value}";
    
    $page = basename($_SERVER['SCRIPT_NAME']);
    return $page."?".implode("&", $st);
}

И после линка за сменяне на език трябва да изглежда така:

echo '<a href="'.change_lang("chlang=bg").'">BG</a>'


EDIT: Редактирах на едно място, че имах грешчица.

//OFFTOPIC
Ох незнам защо като използваш функцията explode винаги променливата ти се казва $raz !? От тебе го прихванах това и вече и аз така си кръщавам променливите :D :D :D
//END
Хаха, бях го измислил от razdelqne :D
 
HunteR каза:
Ммм, написах я за бързо, можеше и по-съкратена да стане, но не ми се мислеше :D

Така слагаш в началото на файла функцията:
Код:
function change_lang($new_lang)
{
    $raz = explode("=", $new_lang);
    $get = $_GET;
    $get[$raz[0]] = $raz[1];
    
    $st = array();
    foreach ($get as $key => $value)
        $st[] = "{$key}={$value}";
    
    $page = basename($_SERVER['SCRIPT_NAME']);
    return $page."?".implode("&", $st);
}

И после линка за сменяне на език трябва да изглежда така:

echo '<a href="'.change_lang("chlang=bg").'">BG</a>'


EDIT: Редактирах на едно място, че имах грешчица.

Благодаря, HunteR.Късно видях, че си написал кодът, но аз го направих по този начин:

Това е функцията, която да вземе урл-то.Взех я о нет-а.
Код:
function selfURL() {
  $s = empty($_SERVER["HTTPS"]) ? ''
    : ($_SERVER["HTTPS"] == "on") ? "s"
    : "";
  $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
  $port = ($_SERVER["SERVER_PORT"] == "80") ? ""
		: (":".$_SERVER["SERVER_PORT"]);
	return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2) {
	return substr($s1, 0, strpos($s1, $s2));
}
$currentlink=selfURL();

След това:
Код:
<a href="<?php echo "$currentlink&chlang=bg";?>">

Да, но се появи следния проблем.Примерно, вече съм избрал линка за сменяне на езика. http://127.0.0.1/index.php?newspage=3&chlang=en
и след това като избера да сменя езика пак се получава натрупване
http://127.0.0.1/index.php?newspage=3&chlang=en&chlang=bg .Какво предлагате да направя, за да избегна това?HunteR, благодаря за твоя скрипт получаваш си точката, но просто искам да изчерпам вариантите 8)
 
Ммм, в моя скрипт този проблем не се появява :)

Лично аз го пробвах. При смяната на езици просто се замества последния $_GET ако има :)
 

Back
Горе