POST表单显示错误的回声

时间:2017-11-24 08:39:20

标签: php html css session

我试图显示两个按钮中的一个,取决于" magnum"(printername)存在于数组" booleans"中。

我的问题是,当表单发布时,页面加载时检索的数据是正确的,但显示的按钮不正确。如果单击按钮,表单会发布并刷新页面," 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']是一个包含&#34; magnum&#34;的数组。 -
$_SESSION['booleans']是一个不按照我的意愿工作的数组 -

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

1 个答案:

答案 0 :(得分: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.S。注意使用&#34; magnumBool&#34;作为键而不是作为值:以这种方式(如果可能的话),您将避免重复输入,并且如果您有大型数组,将使代码更轻;)

P.p.s。尽量让您与模板分开登录,这将使您的代码更易读,更易于维护