2017-10-04 59 views
0

形勢使按鈕積極的,如果會話變量匹配

我有3個按鈕,被設計成能夠在不同公司之間進行切換。

我已經把這些按鈕的形式:

echo '<form action="?" method="post">'; 

foreach ($_SESSION['bedrijf'] as $value) { 
    echo '<button type="submit" class="btn btn-default" name="bedrijf_keuze[]" value="bedrijf_keuze_'.$value.'"><img src="images/logo_'.$value.'_small.png" height="40"></button> '; 
} 
echo'</form>'; 

直通POST我用這作爲一個會話變量進入系統的其餘部分:

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    foreach($_POST["bedrijf_keuze"] as $key=>$value) 
    { 
     $bedrijf_keuze = trim(mysqli_real_escape_string($mysqli, $value)); 
     $_SESSION['bedrijf_keuze'] = $bedrijf_keuze; 
    } 
} 

現在當一個按鈕被點擊時,表單被髮送,當我回顯我看到正確的值$_SESSION['bedrijf_keuze']

爲了能夠看到被選擇哪個公司我已經取代class="btn btn-default"if($_SESSION['bedrijf_keuze'] == "bedrijf_keuze_'.$value.'") { echo 'class="btn btn-default active"'; } else { echo 'class="btn btn-default"'; }

問題

被點擊,並且其中所述會話值被設定爲不顯示爲活動的按鈕。 形式的最終代碼現在:

echo '<form action="?" method="post">'; 

foreach ($_SESSION['bedrijf'] as $value) 
{ 
    echo '<button type="submit" '; 
    if($_SESSION['bedrijf_keuze'] == "bedrijf_keuze_'.$value.'") { 
     echo 'class="btn btn-default active"'; } 
    else { 
     echo 'class="btn btn-default"'; 
    } 
    echo ' name="bedrijf_keuze[]" value="bedrijf_keuze_'.$value.'"><img src="images/logo_'.$value.'_small.png" height="40"></button> '; 
} 
echo'</form>'; 

當我回聲$_SESSION['bedrijf_keuze']和bedrijf_keuze _ '$價值。'這些值是相對應的。那麼出了什麼問題以及如何解決這個問題?

回答

1

您面臨的問題是您正在比較永遠不會對應的值。

"bedrijf_keuze_'.$value.'" != '"bedrijf_keuze_'.$value.'"'

代碼

<?php 
    $value = 'foo'; 

    echo "bedrijf_keuze_'.$value.'"; 
    echo '"bedrijf_keuze_'.$value.'"'; 

輸出

bedrijf_keuze_'.foo.' 
"bedrijf_keuze_foo" 
+0

OK,那WAAS的問題,雖然我仍然不;噸理解爲什麼這可能是問題。 – Muiter

+0

小心[混合](https://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php)雙重和單個qoutes 。該按鈕的發佈值不包含任何單引號,而您的條件是因爲雙引號圍繞它 – DarkBee