С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 09/01/09 в 06:25 |
"Если видишь в стенке люк, не пугайся - это глюк"
Делаю обычную 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 !
|
|
|
|
Гражданин планеты Земля
С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185
|
Добавлено: 09/01/09 в 07:49 |
Попробуй раздельно else if
|
|
|
|
С нами с 19.07.08
Сообщения: 110
Рейтинг: 218
|
Добавлено: 09/01/09 в 19:55 |
если написано на php то ошибок в условии нет. смотри логику скрипта и включи error_reporting
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 10/01/09 в 01:20 |
а что возвращает aaa() ?
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 10/01/09 в 01:51 |
Включи вывод ошибок.
Возможно отсутствует файл inc222.inc
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 10/01/09 в 03:16 |
aaa() в студию. кстати, ничо что aaa вызывается 2 раза? а вообще тут логичнее будет сделать через switch .. case
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 10/01/09 в 03:32 |
тупо включить вывод ошибок и посмотреть что чего возвращает.
Кстати, а в чем затык то выражается ?
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
1
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 10/01/09 в 03:45 |
лучше реализовать черезе switch()
|
|
|
|
С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 10/01/09 в 08:06 |
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 не помогает.
|
|
|
|
С нами с 24.07.07
Сообщения: 4
Рейтинг: 11
|
Добавлено: 10/01/09 в 09:56 |
нужно или убрать двойной вызов getCountryCode(), или поменять строку include("geoip.inc") на include_once("geoip.inc")
|
|
|
|
С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 10/01/09 в 10:06 |
Yup
Коллективный разум рулит. Всем спасибо )
|
|
|
|
« ... full on ... »
С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686
|
Добавлено: 10/01/09 в 10:10 |
В каждом условии вызывать функцию и заново исполнять её не стоит - лишняя нагрузка. Проще получить значение в переменную 1 раз и потом сравнивать:
Код: | $countryCode = getCountryCode();
if($countryCode == "GB")
{
include("GB.inc");
}
elseif($countryCode == "US")
{
include("US.inc");
}
else
{
include("ALL.inc");
} |
А чтобы избежать повторного инклюда и ошибок из-за этого, можно юзать include_once() или require_once();
|
|
Power of the lime madness...
|
3
|
|
|
С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 10/01/09 в 10:24 |
Corex писал: | В каждом условии вызывать функцию и заново исполнять её не стоит - лишняя нагрузка. Проще получить значение в переменную 1 раз и потом сравнивать:
|
Теперь вообще красиво. Спасибо )
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 10/01/09 в 13:24 |
WebOldie писал: |
switch ... case не помогает. |
хм... почему кусок не будет работать?
switch(getCountryCode()){
case "GB":
include("GB.inc");
break;
case "US":
include("US.inc");
break;
default:
include("ALL.inc");
}
просто интересно
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 10/01/09 в 21:29 |
ibiz +5
в пизду else if
|
|
|
|
С нами с 13.11.06
Сообщения: 777
Рейтинг: 418
|
Добавлено: 11/01/09 в 01:50 |
_s_[sov] писал: | ibiz +5
в пизду else if |
+1 никогда не доводилось юзать! Switch Rules!!!
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 11/01/09 в 02:09 |
Примерно так:
Код: | <?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");
}
?> |
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 12/01/09 в 06:15 |
ibiz писал: | хм... почему кусок не будет работать?
switch(getCountryCode()){
case "GB":
include("GB.inc");
break;
case "US":
include("US.inc");
break;
default:
include("ALL.inc");
}
просто интересно |
Там проблема была в include_once. Switch же тоже функцию два раза вызывал, поэтому тоже не работал.
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 12/01/09 в 06:58 |
неправда ваша, switch выполняет условие единожды, а потом результат сравнивает с каждым предложенным значением.
|
|
|
|
С нами с 20.04.06
Сообщения: 296
Рейтинг: 71
|
Добавлено: 12/01/09 в 07:47 |
Ну фиг его знает. Может break как то не так срабатывал.
include_once всё решил, всё работает, а elseif или switch пофиг )
|
|
|
|