Подтвердите форму, но при отсутствии ошибок не показывайте поля

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>
Теги:
validation
forms

2 ответа

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
   }
 ?>

И ради хорошей практики, пусть экземпляр $error в строке 1.

$error = array("matches" => array());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню