Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Elseif заморочки
Новая тема
Ответить
цитата
09/01/09 в 06:25
WebOldie
"Если видишь в стенке люк, не пугайся - это глюк"
Делаю обычную include этого :
Код:
if(aaa() == "111")
{
include("inc111.inc");
}
else
{
include("inc_inc.inc");
}
Всё замечательно работает.
Но как только добавляю
elseif
:
Код:
if(aaa() == "111")
{
include("inc111.inc");
}
elseif(aaa() == "222")
{
include("inc222.inc");
}
else
{
include("inc_inc.inc");
}
всё затыкается.
Любые варианты работают пока не добавляется
elseif
. Т.е.
elseif
каким-то непонятным образом затыкает всю дальнейшую работу скрипта.
Я уже голову сломал, но так и не могу понять каким образом обычный
elseif
может срабатывать таким образом.
Help !
цитата
09/01/09 в 07:49
wMaster
Попробуй раздельно
else if
цитата
09/01/09 в 19:55
SomeVar
если написано на php то ошибок в условии нет. смотри логику скрипта и включи error_reporting
цитата
10/01/09 в 01:20
Sterx
а что возвращает aaa() ?
цитата
10/01/09 в 01:51
Cibtor
Включи вывод ошибок.
Возможно отсутствует файл inc222.inc
цитата
10/01/09 в 03:16
webboxxx
aaa() в студию. кстати, ничо что aaa вызывается 2 раза? а вообще тут логичнее будет сделать через switch .. case
цитата
10/01/09 в 03:32
Stek
тупо включить вывод ошибок и посмотреть что чего возвращает.
Кстати, а в чем затык то выражается ?
цитата
10/01/09 в 03:45
ibiz
лучше реализовать черезе
switch()
цитата
10/01/09 в 08:06
WebOldie
webboxxx писал:
aaa() в студию. кстати, ничо что aaa вызывается 2 раза? а вообще тут логичнее будет сделать через switch .. case
Да похоже проблема в том, что вызывается два раза.
Вот полный код :
Код:
function getCountryCode()
{
if(isset($_COOKIE["geoCode"]))
{
$countryCode = $_COOKIE["geoCode"];
}
else
{
include("geoip.inc");
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$countryCode = geoip_country_code_by_addr($gi, $_SERVER["REMOTE_ADDR"]);
geoip_close($gi);
setcookie("geoCode", $countryCode, time()+15552000, "/", ".domain.com", 0);
}
return $countryCode;
}
if(getCountryCode() == "GB")
{
include("GB.inc");
}
elseif(getCountryCode() == "US")
{
include("US.inc");
}
else
{
include("ALL.inc");
}
switch ... case не помогает.
цитата
10/01/09 в 09:56
xfive
нужно или убрать двойной вызов getCountryCode(), или поменять строку include("geoip.inc") на include_once("geoip.inc")
цитата
10/01/09 в 10:06
WebOldie
Yup
Коллективный разум рулит. Всем спасибо )
цитата
10/01/09 в 10:10
Corex
В каждом условии вызывать функцию и заново исполнять её не стоит - лишняя нагрузка. Проще получить значение в переменную 1 раз и потом сравнивать:
Код:
$countryCode = getCountryCode();
if($countryCode == "GB")
{
include("GB.inc");
}
elseif($countryCode == "US")
{
include("US.inc");
}
else
{
include("ALL.inc");
}
А чтобы избежать повторного инклюда и ошибок из-за этого, можно юзать include_once() или require_once();
цитата
10/01/09 в 10:24
WebOldie
Corex писал:
В каждом условии вызывать функцию и заново исполнять её не стоит - лишняя нагрузка. Проще получить значение в переменную 1 раз и потом сравнивать:
Теперь вообще красиво. Спасибо )
цитата
10/01/09 в 13:24
ibiz
WebOldie писал:
switch ... case не помогает.
хм... почему кусок не будет работать?
switch(getCountryCode()){
case "GB":
include("GB.inc");
break;
case "US":
include("US.inc");
break;
default:
include("ALL.inc");
}
просто интересно
цитата
10/01/09 в 21:29
_s_[sov]
ibiz
+5
в пизду else if
цитата
11/01/09 в 01:50
borgivan
_s_[sov] писал:
ibiz
+5
в пизду else if
+1 никогда не доводилось юзать! Switch Rules!!!
цитата
11/01/09 в 02:09
Stek
Примерно так:
Код:
<?php
function getCountryCode()
{
if(isset($_COOKIE["geoCode"]))
{
$countryCode = $_COOKIE["geoCode"];
}
else
{
include("geoip.inc");
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$countryCode = geoip_country_code_by_addr($gi, $_SERVER["REMOTE_ADDR"]);
geoip_close($gi);
setcookie("geoCode", $countryCode, time()+15552000, "/", ".domain.com", 0);
}
return $countryCode;
}
$country_code = getCountryCode();
switch ($country_code) {
case 'GB':
include("GB.inc");
break;
case 'US':
include("US.inc");
break;
default:
include("ALL.inc");
}
?>
цитата
12/01/09 в 06:15
WebOldie
ibiz писал:
хм... почему кусок не будет работать?
switch(getCountryCode()){
case "GB":
include("GB.inc");
break;
case "US":
include("US.inc");
break;
default:
include("ALL.inc");
}
просто интересно
Там проблема была в include_once. Switch же тоже функцию два раза вызывал, поэтому тоже не работал.
цитата
12/01/09 в 06:58
webboxxx
неправда ваша, switch выполняет условие единожды, а потом результат сравнивает с каждым предложенным значением.
цитата
12/01/09 в 07:47
WebOldie
Ну фиг его знает. Может break как то не так срабатывал.
include_once всё решил, всё работает, а elseif или switch пофиг )
Новая тема
Ответить
Эта страница в полной версии