при нажатии на "ru", в адресную сроку передается "?lang=ru", но если там уже есть другие элементы, они стираются и добавляется "?lang=ru".
Как сделать чтобы просто в добавить в конец "&lang=ru" ??
я сделал так:
<a href="
<?
if(empty($_GET)) {echo "?lang=ua";}
else
{
if($_GET['lang'] == 'ru')
echo "?lang=ua";
else echo "&lang=ua";
}
?>">ua</a>
как в этой строке "else echo _*здесь*_ "&lang=ua";" прицепить то, что уже есть?
Спустя 31 минута, 28 секунд (19.01.2010 - 15:14) Gradus написал(а):
Серверные переменные типо
p.s. поправил пост )
$_SERVER['REQUEST_URI']
p.s. поправил пост )
Спустя 1 минута, 41 секунда (19.01.2010 - 15:16) Gabriel написал(а):
Crash2007
а взять запихнуть текущий урл в ссылку и добавить к нему &lang=ua пробовали?
а взять запихнуть текущий урл в ссылку и добавить к нему &lang=ua пробовали?
Спустя 3 минуты, 47 секунд (19.01.2010 - 15:20) Crash2007 написал(а):
Gradus
если у меня ссылка выглядит: index.php?add
то преврящается: index.php?&lang=ua
если у меня ссылка выглядит: index.php?add
то преврящается: index.php?&lang=ua
Спустя 3 минуты, 33 секунды (19.01.2010 - 15:23) Gradus написал(а):
if($_GET['lang'] == 'ru')
echo "?lang=ua";
else echo $_SERVER['REQUEST_URI']."&lang=ua";
Спустя 4 минуты, 50 секунд (19.01.2010 - 15:28) Crash2007 написал(а):
Gradus
оО спасибо!
но немножко корявенько..
нажимаю несколько раз на "ua", "ru" --получается:
/index.php?add&lang=ua&lang=ru&lang=ua&lang=ru
как это исправить?..
оО спасибо!
но немножко корявенько..
нажимаю несколько раз на "ua", "ru" --получается:
/index.php?add&lang=ua&lang=ru&lang=ua&lang=ru
как это исправить?..
Спустя 2 минуты, 52 секунды (19.01.2010 - 15:31) arlamar написал(а):
Gradus
если сделать как ты сказал то получится примерно так: /news?lang=ru&lang=ua
не буду сильно мудрить) вот такой вариант:
если сделать как ты сказал то получится примерно так: /news?lang=ru&lang=ua
не буду сильно мудрить) вот такой вариант:
if($_GET['lang'] == 'ru')
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
else echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
Спустя 8 минут, 37 секунд (19.01.2010 - 15:39) Crash2007 написал(а):
arlamar
теперь если в адр.стоке сущечтвует только "lang", твой пример работает хорошо.
но если там есть ещё чтото, то не работает...
теперь если в адр.стоке сущечтвует только "lang", твой пример работает хорошо.
но если там есть ещё чтото, то не работает...
Спустя 2 минуты, 4 секунды (19.01.2010 - 15:42) arlamar написал(а):
быть этого не может.
покажи адресную строку в которой не сработало, попробуем разобраться
покажи адресную строку в которой не сработало, попробуем разобраться
Спустя 4 минуты, 42 секунды (19.01.2010 - 15:46) Crash2007 написал(а):
если она выглядит так: http://xxx/xxx/index.php?add
то если нажимаю "ru " или "ua" ничего не происходит
а если так: http://xxx/xxx/index.php , всё работает!)
вот как всё выглядит:
то если нажимаю "ru " или "ua" ничего не происходит
а если так: http://xxx/xxx/index.php , всё работает!)
вот как всё выглядит:
<a href="
<?
if(empty($_GET)) {echo "?lang=ua";}
else
{
if($_GET['lang'] == 'ua')
echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
else echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
}
?>">ua</a>
<a href="
<?
if(empty($_GET)) {echo "?lang=ru";}
else
{
if($_GET['lang'] == 'ru')
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
else echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
}
?>">ru</a>
Спустя 2 минуты, 34 секунды (19.01.2010 - 15:49) arlamar написал(а):
так... давай ка весь кусок кода подстановки)) ща будем смотреть)
Спустя 2 минуты (19.01.2010 - 15:51) Crash2007 написал(а):
ещё и это: )
function language()
{
if(isset($_REQUEST['lang']))
{
session_unregister('lang');
if($_REQUEST['lang'] == 'ua') {include "languages/ua.php";}
elseif($_REQUEST['lang'] == 'ru') {include "languages/ru.php";}
$_SESSION['lang'] = $_REQUEST['lang'];
}
if(isset($_SESSION['lang']))
{
if($_SESSION['lang'] == 'ua') {include "languages/ua.php";}
elseif($_SESSION['lang'] == 'ru') {include "languages/ru.php";}
}
if(!isset($_REQUEST['lang'])) {include "languages/ru.php";}
}
Спустя 19 минут, 39 секунд (19.01.2010 - 16:10) arlamar написал(а):
там не надо 2 ссылки... раз у тебя по умолчанию русский язык значит ссылку сразу делаем на укр. язык.
вроде так:
должно работать но не проверял)
вроде так:
<a href="
<?
if(empty($_GET)) {echo "?lang=ua"; $lng="ua"}
else
{
if(isset($_GET['lang']) {
if ($_GET['lang'] == 'ru') {
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
$lng = "ua";
} else {
else echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
$lng = "ru";
}
} else {
echo $_SERVER['REQUEST_URI']."&lang=ru";
$lng = "ru";
}
}
?>"><? echo $lng; ?></a>
должно работать но не проверял)
Спустя 9 минут, 19 секунд (19.01.2010 - 16:20) Crash2007 написал(а):
Спустя 3 минуты, 2 секунды (19.01.2010 - 16:23) sergeiss написал(а):
Тут лучше "забыть" про $_SERVER['REQUEST_URI'], и просто пройти по массиву $_GET.
Проверяем наличие значения (чтобы избежать дубля)
Затем, когда все параметры ГЕТа готовы, формируем строку параметров
И окончательно формируем строку для следующего вызова:
Всё это можно сделать более компактно, чем я написал. Я тут специально разнес в разные строки, чтобы понятнее была моя мысль.
Проверяем наличие значения (чтобы избежать дубля)
if( in_array(.... ) ) ;// не надо добавлять
// иначе вставляем в массив $_GET новое значение
$_GET[...]=...
Затем, когда все параметры ГЕТа готовы, формируем строку параметров
$new_get=implode( '&', $_GET);
И окончательно формируем строку для следующего вызова:
$_SERVER['PHP_SELF']. '?' . $new_get;
Всё это можно сделать более компактно, чем я написал. Я тут специально разнес в разные строки, чтобы понятнее была моя мысль.
Спустя 3 минуты, 30 секунд (19.01.2010 - 16:26) Crash2007 написал(а):
sergeiss
если с этого кода сделаешь как надо, буду очень благодарен..=)
если с этого кода сделаешь как надо, буду очень благодарен..=)
<a href="
<?
if(empty($_GET)) {echo "?lang=ua";}
else
{
if($_GET['lang'] == 'ua')
echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
else echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
}
?>">ua</a>
<a href="
<?
if(empty($_GET)) {echo "?lang=ru";}
else
{
if($_GET['lang'] == 'ru')
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
else echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
}
?>">ru</a>
Спустя 4 минуты (19.01.2010 - 16:30) sergeiss написал(а):
А я чего?
"Мавр сделал своё дело, мавр может уходить".
Я расписал алгоритм, как я его вижу. А ты уж сам подумай... Там, в моем предыдущем ответе в этой теме, написана едва ли не половина кода. А остальное расписано словами.

Я расписал алгоритм, как я его вижу. А ты уж сам подумай... Там, в моем предыдущем ответе в этой теме, написана едва ли не половина кода. А остальное расписано словами.
Спустя 41 секунда (19.01.2010 - 16:31) arlamar написал(а):
в моём предыдущем посте была ошибка) теперь вроде всё должно работать.
Crash2007
пробовал этот код?)
Crash2007
пробовал этот код?)
Спустя 1 минута, 22 секунды (19.01.2010 - 16:32) Crash2007 написал(а):
arlamar
а если ссылка выглядит так: http://xxx/xxx/index.php ? add & lang =ru
тоесть я сам дописал "?add" то работает...
(а ошибку я исправил(если ты про лишний else))
sergeiss
ок.спс)
а если ссылка выглядит так: http://xxx/xxx/index.php ? add & lang =ru
тоесть я сам дописал "?add" то работает...
(а ошибку я исправил(если ты про лишний else))
sergeiss
ок.спс)
Спустя 12 минут, 1 секунда (19.01.2010 - 16:44) arlamar написал(а):
всё проверил код) вот этот точно работает))
<a href="
<?php
if (empty($_GET)) {
echo '?lang=ua';
$lng='ua';
} else {
if(isset($_GET['lang'])) {
if ($_GET['lang'] == 'ru') {
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
$lng = "ua";
} else {
echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
$lng = "ru";
}
} else {
echo $_SERVER['REQUEST_URI']."&lang=ru";
$lng = "ru";
}
}
?>"><?php echo $lng; ?></a>
Спустя 2 минуты, 32 секунды (19.01.2010 - 16:47) sergeiss написал(а):
arlamar - а если будет не 2 языка, а больше? Код сильно "распухнет". То, что я предложил - более универсально, более компактно и более наглядно.
Спустя 2 минуты, 5 секунд (19.01.2010 - 16:49) arlamar написал(а):
sergeiss, ну это понятно) я сам бы так не делал)) просто человек попросил решить проблему и дал свой код, который надо было подправить) и делать по уму у меня нет времени)) пытаюсь одновременно работать
Спустя 2 минуты, 31 секунда (19.01.2010 - 16:52) Crash2007 написал(а):
оО спасибо!! arlamar
сейчас всё работает!! =)
только почемуто сейчас если делаю "session_unregister('lang');" когда язык "ua", то дефолтный не ставится "ru", а только после перезагрузки страницы!
сейчас всё работает!! =)
только почемуто сейчас если делаю "session_unregister('lang');" когда язык "ua", то дефолтный не ставится "ru", а только после перезагрузки страницы!
Спустя 3 минуты, 25 секунд (19.01.2010 - 16:55) arlamar написал(а):
ты про эту функцию?
function language()
{
if(isset($_REQUEST['lang']))
{
session_unregister('lang');
if($_REQUEST['lang'] == 'ua') {include "languages/ua.php";}
elseif($_REQUEST['lang'] == 'ru') {include "languages/ru.php";}
$_SESSION['lang'] = $_REQUEST['lang'];
}
if(isset($_SESSION['lang']))
{
if($_SESSION['lang'] == 'ua') {include "languages/ua.php";}
elseif($_SESSION['lang'] == 'ru') {include "languages/ru.php";}
}
if(!isset($_REQUEST['lang'])) {include "languages/ru.php";}
}
Спустя 2 минуты, 35 секунд (19.01.2010 - 16:58) Crash2007 написал(а):
у меня есть ещё это:
<a href="?logout">unregister_session</a>
<?
if(isset($_REQUEST['logout'])) {session_unregister('lang');}
?>
Спустя 6 минут, 45 секунд (19.01.2010 - 17:04) arlamar написал(а):
попробуй такой вариант функции language
function language()
{
$include_file = "ru.php";
$_SESSION['lang'] = 'ru';
if(isset($_REQUEST['lang']))
{
if($_REQUEST['lang'] == 'ua') {
$include_file = 'ua.php';
$_SESSION['lang'] = 'ua';
}
//Не понятно для чего тут сессии... ты где то ещё испольщуешь $_SESSION['lang']?
}
include "languages/$include_file";
}
Спустя 3 минуты (19.01.2010 - 17:07) Crash2007 написал(а):
сеанс у меня сохранялся и для других страниц..
с твоим примером не работает..(
с твоим примером не работает..(
Спустя 3 минуты, 40 секунд (19.01.2010 - 17:11) arlamar написал(а):
что именно не работает с моим примером? по тому, что у меня всё работает
Спустя 1 минута, 46 секунд (19.01.2010 - 17:13) Crash2007 написал(а):
после перезагрузки страницы язык ставится "ru"
Спустя 10 минут, 13 секунд (19.01.2010 - 17:23) arlamar написал(а):
function language()
{
if(isset($_REQUEST['lang']))
{
switch ($_REQUEST['lang']) {
case 'ua':
$_SESSION['lang'] = 'ua';
break;
case 'ru':
$_SESSION['lang'] = 'ru';
break;
}
}
if (isset($_SESSION['lang'])) {
include "languages/".$_SESSION['lang'].".php";
} else {
include "languages/ru.php";
}
}
пробуй)
Спустя 28 минут, 24 секунды (19.01.2010 - 17:51) Crash2007 написал(а):
функция работает..
есть проблема в
ведь сеанс когда "ua" оно всёравно выводит ссылку на укр.язык ("ua")...
есть проблема в
if(empty($_GET)) {echo "?lang=ua"; $lng="ua";}
ведь сеанс когда "ua" оно всёравно выводит ссылку на укр.язык ("ua")...
Спустя 9 минут, 2 секунды (19.01.2010 - 18:00) arlamar написал(а):
if (empty($_GET)) {
if (isset($_SESSION['lang']) && $_SESSION['lang']=='ru') {
echo '?lang=ua';
$lng='ua';
} else {
echo '?lang=ru';
$lng='ru';
}
}
исправил пост
Спустя 5 минут, 41 секунда (19.01.2010 - 18:06) Crash2007 написал(а):
когда нажимаю "ru", ссылка исчезает, и только после перезагрузки страницы появляется "ua"..
Спустя 5 минут, 2 секунды (19.01.2010 - 18:11) arlamar написал(а):
ну не знаю уже... вот это у меня отлично переключает.
вот тут можешь посмотреть, всё работает
function language()
{
if(isset($_REQUEST['lang']))
{
switch ($_REQUEST['lang']) {
case 'ua':
$_SESSION['lang'] = 'ua';
break;
case 'ru':
$_SESSION['lang'] = 'ru';
break;
}
}
if (isset($_SESSION['lang'])) {
include "languages/".$_SESSION['lang'].".php";
} else {
include "languages/ru.php";
}
}
?>
<a href="
<?php
if (empty($_GET)) {
if (isset($_SESSION['lang']) && $_SESSION['lang']=='ru') {
echo '?lang=ua';
$lng='ua';
} else {
echo '?lang=ru';
$lng='ru';
}
} else {
if(isset($_GET['lang'])) {
if ($_GET['lang'] == 'ru') {
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
$lng = "ua";
} else {
echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
$lng = "ru";
}
} else {
echo $_SERVER['REQUEST_URI']."&lang=ru";
$lng = "ru";
}
}
?>"><?php echo $lng; ?></a>
вот тут можешь посмотреть, всё работает
Спустя 6 минут, 33 секунды (19.01.2010 - 18:18) Crash2007 написал(а):
ну всё, работает!!=))
спасибо тебе большое!!
спасибо тебе большое!!

Спустя 3 минуты, 13 секунд (19.01.2010 - 18:21) arlamar написал(а):
Цитата |
ну всё, работает!!=)) |
ура!

Цитата |
спасибо тебе большое!! |
да пожалуйста)
Спустя 2 часа, 1 минута, 2 секунды (19.01.2010 - 20:22) Crash2007 написал(а):
arlamar
скажи как получить доступ к переменной $lng, из функции..
скажи как получить доступ к переменной $lng, из функции..
Спустя 4 минуты, 48 секунд (19.01.2010 - 20:27) arlamar написал(а):
из какой функции, для чего?
функция в этом же файле?
функция в этом же файле?
Спустя 4 минуты, 42 секунды (19.01.2010 - 20:31) Crash2007 написал(а):
этот код я поместил в функцию:
в другом файле.
и теперь:
<?php echo $lng; ?>
не работает..
if (empty($_GET)) {
if (isset($_SESSION['lang']) && $_SESSION['lang']=='ru') {
echo '?lang=ua';
$lng='ua';
} else {
echo '?lang=ru';
$lng='ru';
}
} else {
if(isset($_GET['lang'])) {
if ($_GET['lang'] == 'ru') {
echo str_replace('lang=ru', 'lang=ua', $_SERVER['REQUEST_URI']);
$lng = "ua";
} else {
echo str_replace('lang=ua', 'lang=ru', $_SERVER['REQUEST_URI']);
$lng = "ru";
}
} else {
echo $_SERVER['REQUEST_URI']."&lang=ru";
$lng = "ru";
}
}
в другом файле.
и теперь:
<?php echo $lng; ?>
не работает..
Спустя 2 минуты, 29 секунд (19.01.2010 - 20:34) arlamar написал(а):
допустим функция set_lng()
тогда в конце функции верни значение $lng
вот так: return $lng;
а вместо <?php echo $lng; ?>
вот это <?php echo set_lng(); ?>
тогда в конце функции верни значение $lng
вот так: return $lng;
а вместо <?php echo $lng; ?>
вот это <?php echo set_lng(); ?>
Спустя 5 минут, 21 секунда (19.01.2010 - 20:39) Crash2007 написал(а):
и выводит "?lang=ruru" почемуто..))
Спустя 2 минуты, 21 секунда (19.01.2010 - 20:42) arlamar написал(а):
блин ну я не могу так... я же не вижу весь код
Спустя 5 минут, 3 секунды (19.01.2010 - 20:47) arlamar написал(а):
кароч верни как было и $lng объяви глобальной...
в начале функции. вот так: global $lng;
в начале функции. вот так: global $lng;
Спустя 3 минуты, 50 секунд (19.01.2010 - 20:50) Crash2007 написал(а):
оо..вот и я об этом! спс!)
_____________
Рисую на PHP :)