2015-08-22 7 views
1

Я занят изучением PHP. Однако, делая небольшой веб-сайт с PHP, где я управляю переданными переменными, я застрял в проблеме с предложением If.If Statment with Empty _Get

Каждую внутреннюю ссылку на страницу я передаю переменную, чтобы управлять содержимым, которое я извлекаю из базы данных. даже ссылки с других внутренних страниц на мою страницу Index.php. Дело в том, что страница index.php дает ошибки, потому что при вводе saite из внешней ссылки существует пустая ошибка _Get. Есть четыре страницы. все остальные страницы работают без ошибок, но загрузка индексной страницы дает ошибку.

Мой код:

$Section = $_GET['SID']; 
if ($Section == "HOME") { 
    $SectionTitle = 'Start'; 
    $SectionID = 'HOME'; 
} 
if ($Section == "BDIR") { 
    $SectionTitle = 'Directory'; 
    $SectionID = 'BDIR'; 
} 
if ($Section == "ACOM") { 
    $SectionTitle = 'Accommodation'; 
    $SectionID = 'ACOM'; 
} 
if ($Section == "REST") { 
    $SectionTitle = 'Restaurants'; 
    $SectionID = 'REST'; 
} 

Что мне нужно достичь, когда есть пустой _GET его необходимо присвоить то же значение, что и Home (First If) Values.

Я попытался

if (!empty($_GET)) { 
    $SectionTitle = 'Start'; 
    $SectionID = 'HOME'; 
} 

и несколько других вариантов, не повезло.

Но я думаю, что я вне пределов моей лиги, как мне интересно, должны ли некоторые, если мои утверждения не будут находиться внутри (под) других, если бы здесь были утверждения?

Спасибо

+0

Рассмотрим переход на @ EugeneSue-х [ответ] (http://stackoverflow.com/a/32154803/66580). Для небольшого числа ветвей моя так же хороша, как и его, но подход, который он принял, чище. –

ответ

0

Возможно, это поможет вам. попробуйте этот код.

if($_GET) 
{ 
    $Section = $_GET['SID']; 
    if ($Section == "HOME") { 
     $SectionTitle = 'Start'; 
     $SectionID = 'HOME'; 
    } 
    if ($Section == "BDIR") { 
     $SectionTitle = 'Directory'; 
     $SectionID = 'BDIR'; 
    } 
    if ($Section == "ACOM") { 
     $SectionTitle = 'Accommodation'; 
     $SectionID = 'ACOM'; 
    } 
    if ($Section == "REST") { 
     $SectionTitle = 'Restaurants'; 
     $SectionID = 'REST'; 
    } 
} 
+0

Спасибо всем за ваши ответы. Мне удается получить от Маджида Фуладпура работу. – Cavemanharris

2
$Section = !isset($_GET['SID']) || empty($_GET['SID']) ? 'HOME' : $_GET['SID']; 
switch($Section) { 
    case "BDIR": 
    $SectionTitle = 'Directory'; 
    $SectionID = 'BDIR'; 
    break; 
    case "ACOM" 
    $SectionTitle = 'Accommodation'; 
    $SectionID = 'ACOM'; 
    break; 
    case "REST": 
    $SectionTitle = 'Restaurants'; 
    $SectionID = 'REST'; 
    break; 
    case "HOME": 
    default: 
    $SectionTitle = 'Start'; 
    $SectionID = 'HOME'; 
    break; 
} 
+1

отлично ... он работает сейчас! Пожалуйста, объясните работу, если первая строка? остальное я понимаю! его первая строка не имеет смысла – Cavemanharris

+1

@Cavemanharris В первой строке мы проверяем, не '' '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [ присвойте 'HOME'' $ Section', иначе мы просто прочитаем этот параметр в '$ Section'. –

2

Для того, чтобы не писать много подобных, если-заявления я предпочел бы добавить массив и проверить его ключом присутствия. Затем определяют по умолчанию SectionTitle и SectionID как это:

<?php 

$SectionTitle = 'Start'; 
$SectionID = 'HOME'; 

$sections = [ 
    'BDIR' => 'Directory', 
    'ACOM' => 'Accommodation', 
    'REST' => 'Restaurants' 
]; 

if (!empty($_GET['SID']) && array_key_exists($_GET['SID'], $sections)) { 
    $SectionTitle = $sections[$_GET['SID']]; 
    $SectionID = $_GET['SID']; 
} 
+0

Это сближает бизнес-логику. Мне это нравится! –