2017-11-24 11 views
0

현재 "magnum"(printername)이 "booleanans"배열에있는 것에 따라 두 개의 버튼 중 하나를 표시하려고합니다.POST 양식에 잘못된 에코가 표시됨

제 문제는 양식을 게시 할 때 페이지로드시 가져온 데이터가 정확하지만 표시되는 단추가 정확하지 않습니다. 버튼을 클릭하면 양식이 게시되고 페이지가 새로 고쳐지고 "magnum"은 $_SESSION['booleans']으로 푸시되지만 버튼에는 여전히 "btn btn-default"이 표시되므로 버튼을 올바르게로드하려면 다른 페이지 새로 고침이 필요합니다 ('btn btn-succes').

$_SESSION으로 인한 문제입니까, 아니면 누락 된 것이 있습니까?
$_SESSION['booleans'] 내가 그것을 원하는대로 작동하지 않는 배열입니다 - -

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

문제하면 정교 혼합되어 있다는 것입니다 및 인쇄, 코드를 분할하려고하면 작동하고 더 읽기 쉬울 것입니다 :

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

도와 드리겠습니다 :) –