2017-11-24 17 views
0

"マグナム"(printername)が配列 "ブーリアン"に存在することに応じて、2つのボタンのいずれかを表示しようとしています。POSTフォームが間違ったエコーを表示しています

私の問題は、フォームがポストされると、ページの読み込み時に取得されるデータは正しいが、表示されるボタンが正しくないということです。ボタンをクリックすると、フォームがポストされてページが更新され、「magnum」は$_SESSION['booleans']にプッシュされますが、ボタンはまだ"btn btn-default"と表示されるため、ボタンを正しく読み込むために別のページを更新する必要があります('btn btn-succes')。

私の問題は$_SESSIONであるか、何か不足していますか?

echo' 
<form class="form1" method="post" action="" id="form1"> 
<div class="col-xs-offset-1 col-xs-2">'; 

if(in_array('magnum', $_SESSION['printers'])){ 
    if(in_array('magnumBool',$_SESSION['booleans'])){ 
     echo '<input type="submit" name="unSubmitMagnum" id="magnumBool" value="magnum" class='.$enabled_printer.'>'; 
     if(isset($_POST['unSubmitMagnum']) && $_POST['unSubmitMagnum']){ 
      $pos = array_search('magnumBool', $_SESSION['booleans']); 
      unset($_SESSION['booleans'][$pos]); 
      dump('unset'); 
     } 
    } 
    elseif(!in_array('magnumBool',$_SESSION['booleans'])){ 
     echo '<input type="submit" name="submitMagnum" id="magnumBool" value="magnum" class='.$disabled_printer.'>'; 
     if(isset($_POST['submitMagnum'])&& $_POST['submitMagnum']){ 
      array_push($_SESSION['booleans'],'magnumBool'); 
      dump('set'); 
     } 
    } 
} 
else{ 
    echo '<button id="magnum" class='.$lost_connection_printer.'>1. Magnum</button>'; 
    } 

echo ' 
</div> 
</form>'; 

$_SESSION['printers']「マグナム」を含む配列である - 問題は、あなたが推敲を混合していることである

$enabled_printer = "btn btn-success" <br> 
$disabled_printer = "btn btn-default" <br> 
$lost_connection_printer = "btn btn-danger disabled" 

答えて

1

- 私はそれを希望として
$_SESSION['booleans']が機能していない配列であります印刷してコードを分割しようとすると、それは機能し、より読みやすくなります:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['unSubmitMagnum']) && $_POST['unSubmitMagnum']) { 
     $pos = array_search('magnumBool', $_SESSION['booleans']); 
     unset($_SESSION['booleans']['magnumBool']); 
    } elseif (isset($_POST['submitMagnum'])&& $_POST['submitMagnum']) { 
     $_SESSION['booleans']['magnumBool'] = true; 
    } 
} 

echo'<form class="form1" method="post" action="" id="form1"> 
<div class="col-xs-offset-1 col-xs-2">'; 

if(in_array('magnum', $_SESSION['printers'])){ 
    if(isset($_SESSION['booleans']['magnumBool'])){ 
     echo '<input type="submit" name="unSubmitMagnum" id="magnumBool" value="magnum" class='.$enabled_printer.'>'; 
    } else { 
     echo '<input type="submit" name="submitMagnum" id="magnumBool" value="magnum" class='.$disabled_printer.'>'; 
    } 
} 
else{ 
    echo '<button id="magnum" class='.$lost_connection_printer.'>1. Magnum</button>'; 
} 

echo '</div> 
</form>'; 

P.値としてではなくキーセットとして "magnumBool"を使用することに注意してください。このように(可能な場合)、重複した配列を避けることができ、大規模配列の場合はコードを軽くすることができます。)

P.p.s.テンプレートとは別にログインし続けるようにしてください。これにより、コードを読みやすく、維持しやすくなります。

P.p.s.スタックオーバーフローへようこそ;)この回答または他の誰かがあなたの問題を解決した場合は、それを受け入れたものとしてマークしてください:)

+0

ありがとうございました!想像して動作します!あなたにはたくさんの珍しいものがあります! :) – Dannylycka

+0

喜んで:) –

関連する問題