Реклама на сайте Advertise with us

Elseif заморочки

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 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 !

0
 

Гражданин планеты Земля

С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185

Ссылка на сообщениеДобавлено: 09/01/09 в 07:49       Ответить с цитатойцитата 

Попробуй раздельно else if

Гыыы

1
 



С нами с 19.07.08
Сообщения: 110
Рейтинг: 218

Ссылка на сообщениеДобавлено: 09/01/09 в 19:55       Ответить с цитатойцитата 

если написано на php то ошибок в условии нет. смотри логику скрипта и включи error_reporting

in da crysis

1
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 10/01/09 в 01:20       Ответить с цитатойцитата 

а что возвращает aaa() ?

крипта на ByBit

2
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 10/01/09 в 01:51       Ответить с цитатойцитата 

Включи вывод ошибок.
Возможно отсутствует файл inc222.inc

1
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 10/01/09 в 03:16       Ответить с цитатойцитата 

aaa() в студию. кстати, ничо что aaa вызывается 2 раза? а вообще тут логичнее будет сделать через switch .. case

3
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 10/01/09 в 03:32       Ответить с цитатойцитата 

тупо включить вывод ошибок и посмотреть что чего возвращает.
Кстати, а в чем затык то выражается ?

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

1
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 10/01/09 в 03:45       Ответить с цитатойцитата 

лучше реализовать черезе switch()

1
 



С нами с 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 не помогает.

0
 



С нами с 24.07.07
Сообщения: 4
Рейтинг: 11

Ссылка на сообщениеДобавлено: 10/01/09 в 09:56       Ответить с цитатойцитата 

нужно или убрать двойной вызов getCountryCode(), или поменять строку include("geoip.inc") на include_once("geoip.inc")

3
 



С нами с 20.04.06
Сообщения: 296
Рейтинг: 71

Ссылка на сообщениеДобавлено: 10/01/09 в 10:06       Ответить с цитатойцитата 



Yup smail54.gif
Коллективный разум рулит. Всем спасибо )

0
 

« ... 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 раз и потом сравнивать:



Теперь вообще красиво. Спасибо )

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 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");
}

просто интересно

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 10/01/09 в 21:29       Ответить с цитатойцитата 

ibiz +5
в пизду else if

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 



С нами с 13.11.06
Сообщения: 777
Рейтинг: 418

Ссылка на сообщениеДобавлено: 11/01/09 в 01:50       Ответить с цитатойцитата 

_s_[sov] писал:
ibiz +5
в пизду else if

+1 никогда не доводилось юзать! Switch Rules!!! icon_smile.gif

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 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 же тоже функцию два раза вызывал, поэтому тоже не работал.

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 12/01/09 в 06:58       Ответить с цитатойцитата 

неправда ваша, switch выполняет условие единожды, а потом результат сравнивает с каждым предложенным значением.

0
 



С нами с 20.04.06
Сообщения: 296
Рейтинг: 71

Ссылка на сообщениеДобавлено: 12/01/09 в 07:47       Ответить с цитатойцитата 



Ну фиг его знает. Может break как то не так срабатывал.
include_once всё решил, всё работает, а elseif или switch пофиг )

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »