PHP - отображение ввода формы без повторного отображения формы

1

Как выполнить эхо ввода формы без повторного отображения формы после проверки? Я могу отображать только данные после формы. Вот код, который у меня есть

<?php
$postalCode = $_POST['postalCode'];
$postalCodeErr = "";
$postalCodeValidation = '/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/';
$postalCodeIsValid = false;
?>
<html>
<body>
    INT322 Lab 3-1
    <br />
    <br />
    <form name="lab3form" action="index.php" method="post">
        Postal Code:
        <input type="text" name="postalCode" value="<?php if(isset($postalCode)) echo $postalCode; ?>" />
        <?php
        if(($postalCode != "") && preg_match($postalCodeValidation, $postalCode)) {
            $postalCodeIsValid = true;
        }
        else {
            $postalCodeErr = "Invalid Postal Code";
        }
        if(isset($postalCode)) echo " $postalCodeErr";
        ?>
        <br />
        <br />
        <input type="submit" name="submit" />
    </form>
</body>
</html>

<?php
if($_POST['submit'] && $postalCodeIsValid) {
    echo "Postal Code: $postalCode";
}
?>
  • 1
    Попробуйте использовать AJAX;)
  • 0
    Отправьте форму в php через ajax, если она действительна, покажите свой контент, иначе предупредите пользователя.
Теги:
forms

1 ответ

1

Как насчет обертывания вашей формы в else if($_POST['submit'] && $postalCodeIsValid) {... } else {... }

<?php
if($_POST['submit'] && $postalCodeIsValid) {
    echo "Postal Code: $postalCode";
}
else {
    <form name="lab3form" action="index.php" method="post">
        Postal Code:
        <input type="text" name="postalCode" value="<?php if(isset($postalCode)) echo $postalCode; ?>" />
        <?php
        if(($postalCode != "") && preg_match($postalCodeValidation, $postalCode)) {
            $postalCodeIsValid = true;
        }
        else {
            $postalCodeErr = "Invalid Postal Code";
        }
        if(isset($postalCode)) echo " $postalCodeErr";
        ?>
        <br />
        <br />
        <input type="submit" name="submit" />
    </form>
}
?>

ОБНОВЛЕННЫЙ ОТВЕТ с полным кодом:

<html>
<body>
    INT322 Lab 3-1
    <br />
    <br />
    <?php 
        if(!empty($_POST['submit'])):
            $postalCode = $_POST['postalCode'];
            if(isValidPostalCode($postalCode)):
                echo "Postal Code: $postalCode";
            else:
                form($postalCode, true);
            endif;
        else:
            form();
        endif;
    ?>
</body>
</html>

<?php

function form($postalCode = null, $hasError = false) { ?>
    <form name="lab3form" action="postal.php" method="post">
        Postal Code:
        <input type="text" name="postalCode" value="<?php if(isset($postalCode)) echo $postalCode; ?>" />
        <?php if ($hasError): ?>
            <div class="error">Invalid Postal Code</div>
        <?php endif; ?>
        <br />
        <br />
        <input type="submit" name="submit" />
    </form>
<?php }

function isValidPostalCode($postalCode) {
    $postalCodeValidation = '/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/';
    return !empty($postalCode) && preg_match($postalCodeValidation, $postalCode);
}
?>

Обратите внимание, что ваше регулярное выражение работает только с почтовыми кодами, такими как A1B2C3 Я не уверен, что это поведение, которое вы хотите.

  • 0
    Я пробовал это, однако форма все еще отображается и результаты не отражены
  • 0
    @ user3211391 это решило твою проблему?
Показать ещё 1 комментарий

Ещё вопросы

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