2014-11-10 1 views
0

최근에 일부 코드로 어려움을 겪고있는 것 같습니다. 제출시 검증 된 선택 양식이 있습니다. 오류가있는 경우 오류가 있음을보고하고 아래 양식을 다시 표시하여 사용자가이를 수정할 수 있도록합니다. 그러나 오류가없고 모든 것이 성공적이면 여전히 그 아래에 양식이 표시됩니다. 오류가 없을 때 양식을 표시하고 싶지 않습니다. 설정 한 방식으로 어떻게 가능합니까?양식을 확인하지만 오류가없는 경우

<?php 
if (isset($_POST['submit'])) 
{ 
if ($row2[matches] == 3) 
    { 
    if ($_POST["matches"] == 1 & $_POST["matches2"] == 1) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
    if ($_POST["matches"] + $_POST["matches2"] < 2) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
    if ($_POST["matches"] + $_POST["matches2"] == 4) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You cannot have 4 matches!</span>"; 
    } 

if ($row2[matches] == 1) 
    { 
    if ($_POST["matches"] + $_POST["matches2"] < 1) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
    if ($_POST["matches"] + $_POST["matches2"] == 2) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
    } 

if ($error["matches"] == '') 
    { 
    echo "test"; 
    } 


} 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?&id=<?php 
echo "$id"; ?>"> 
    <select name="matches"> 
    <?php 

if ($row2[matches] == 1) 
    { 
    echo "<option value='0'>0</option>"; 
    echo "<option value='1'>1</option>"; 
    } 
elseif ($row2[matches] == 3) 
    { 
    echo "<option value='0'>0</option>"; 
    echo "<option value='1'>1</option>"; 
    echo "<option value='2'>2</option>"; 
    } 

?> 
</select> 
<select name="matches2"> 
<?php 

if ($row2[matches] == 1) 
{ 
echo "<option value='0'>0</option>"; 
echo "<option value='1'>1</option>"; 
} 
elseif ($row2[matches] == 3) 
{ 
echo "<option value='0'>0</option>"; 
echo "<option value='1'>1</option>"; 
echo "<option value='2'>2</option>"; 
} 

?> 
</select> 
</fieldset> 
<input type="submit" class="md-trigger blue-texture postbit-button-big md-pointer" name="submit" id="submit" value="Submit" /> 
</form> 
+0

는'if' 내부 전체 양식을 넣어 줄에 $error의 인스턴스를하자 "matches"])) {...}' –

+0

양식이 비어 있는지 여부에 상관없이 작동하지 않으므로 $ error [matches]에서 완전히 중요합니다. 또한 if 문을 양식에만 설정하면 양식이 페이지에서 시작하는 것이 아니라 오류를 표시하기 위해 제출 된 경우에만 양식이 표시됩니다. –

+0

'$ validated '변수를 추가하면 처음에는 false로 설정됩니다. 오류가 발견되지 않으면 'true'로 설정하십시오. 'if (! $ validated) '조건에 양식을 넣으십시오. – RST

답변

1
<?php 
    $validated = false; 
    if (isset($_POST['submit'])) 
    { 
    if ($row2[matches] == 3) 
     { 
     if ($_POST["matches"] == 1 & $_POST["matches2"] == 1) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
     if ($_POST["matches"] + $_POST["matches2"] < 2) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
     if ($_POST["matches"] + $_POST["matches2"] == 4) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You cannot have 4 matches!</span>"; 
     } 

    if ($row2[matches] == 1) 
     { 
     if ($_POST["matches"] + $_POST["matches2"] < 1) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
     if ($_POST["matches"] + $_POST["matches2"] == 2) $error["matches"] = "<span class='error'><span class='errorbox'><img src='images/other/error2.png' style='vertical-align:middle' /></span>ERROR: You are attempting to report an invalid score!</span>"; 
     } 

    if ($error["matches"] == '') 
     { 
     $validated = true; 
     } 


    } 
    ?> 
    if (! $validated) { 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?&id=<?php 
    echo "$id"; ?>"> 
     <select name="matches"> 
     <?php 

    if ($row2[matches] == 1) 
     { 
     echo "<option value='0'>0</option>"; 
     echo "<option value='1'>1</option>"; 
     } 
    elseif ($row2[matches] == 3) 
     { 
     echo "<option value='0'>0</option>"; 
     echo "<option value='1'>1</option>"; 
     echo "<option value='2'>2</option>"; 
     } 

    ?> 
    </select> 
    <select name="matches2"> 
    <?php 

    if ($row2[matches] == 1) 
    { 
    echo "<option value='0'>0</option>"; 
    echo "<option value='1'>1</option>"; 
    } 
    elseif ($row2[matches] == 3) 
    { 
    echo "<option value='0'>0</option>"; 
    echo "<option value='1'>1</option>"; 
    echo "<option value='2'>2</option>"; 
    } 

    ?> 
    </select> 
    </fieldset> 
    <input type="submit" class="md-trigger blue-texture postbit-button-big md-pointer" name="submit" id="submit" value="Submit" /> 
    </form> 
} 
1

당신은 내가 무엇을 볼 수에서 $error["matches"] 내에 오류를 저장하고, 그렇게 간단한 if() 충분합니다. !`경우 (빈 ($ 오류 [:

if (empty($error['matches']) == FALSE) { 
    ?> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?&id=<?php echo "$id"; ?>"> 
     <select name="matches"> 
      <?php 
      if ($row2[matches] == 1) { 
       echo "<option value='0'>0</option>"; 
       echo "<option value='1'>1</option>"; 
      } elseif ($row2[matches] == 3) { 
       echo "<option value='0'>0</option>"; 
       echo "<option value='1'>1</option>"; 
       echo "<option value='2'>2</option>"; 
      } 
      ?> 
     </select> 
     <select name="matches2"> 
      <?php 
      if ($row2[matches] == 1) { 
       echo "<option value='0'>0</option>"; 
       echo "<option value='1'>1</option>"; 
      } elseif ($row2[matches] == 3) { 
       echo "<option value='0'>0</option>"; 
       echo "<option value='1'>1</option>"; 
       echo "<option value='2'>2</option>"; 
      } 
      ?> 
     </select> 
    </fieldset> 
    <input type="submit" class="md-trigger blue-texture postbit-button-big md-pointer" name="submit" id="submit" value="Submit" /> 
    </form> 
<?php 
    } 
?> 

그리고 좋은 연습을 위해서

,의 1.

$error = array("matches" => array()); 
관련 문제