Ошибка формы PHP - PullRequest
       4

Ошибка формы PHP

0 голосов
/ 11 октября 2011

Вероятно, есть простое решение для этого, но я не очень опытный в php! В основном я хочу отправить форму, и пользователь будет возвращен с наложенным благодарственным изображением без обновления. Мне удалось заставить это работать, НО теперь проверка формы не работает должным образом ...

Мне нужно, чтобы мое наложение отображалось только после того, как проверка формы прошла успешно, если она не удалась, мне нужно отобразить ошибку вместо благодарственного наложения ...

Я знаю, что могу использовать ajax для этой формы, но я не хочу полагаться на javascript!

В момент проверки работает, но поверх него накладывается изображение ...

Это php код:

<?php
if($_POST['formSubmit'] == "Submit")
{
    $errorMessage = "";

  if(empty($_POST['formName']))
  {
    $errorMessage .= "<li>You forgot to enter your name</li>";
  }
  if(empty($_POST['formTown']))
  {
    $errorMessage .= "<li>You forgot to enter your town</li>";
  }

    $varName = $_POST['formName'];
    $varTown = $_POST['formTown'];
    $varAge = $_POST['formAge'];
    $varEmail = $_POST['formEmail'];

    $varOne = $_POST['hidden-one'];
    $varTwo = $_POST['hidden-two'];
    $varThree = $_POST['hidden-three'];
    $varFour = $_POST['hidden-four'];
    $varFive = $_POST['hidden-five'];

    if(empty($errorMessage)) 
    {
        $fs = fopen("mydata.csv","a");
        fwrite($fs,"\n" . $varName . ", " . $varTown . ", " . $varAge . ", " . $varEmail . ", " . $varOne . $varTwo . $varThree . $varFour . $varFive);
        fclose($fs);
    }
}
?>

Это мой HTML (с кодом php):

<?php 
if (isset($_POST['formSubmit'])) { 
    print "<div class=\"thank-you\"><a href='enter.php'><img src='images/thankyou-overlay.png'/></a></div>\n"; 
} 
?>

<div id="mainContainer">
<p>Just complete your entry details below.</p>

<?php
if(!empty($errorMessage)) {
    echo("<p>There was an error with your form:</p>\n");
    echo("<ul>" . $errorMessage . "</ul>\n");
} 
?>

<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" target="_self">
    <div class="inputContainer">
    <label class="text" name="name">Full Name:</label>
    <input type="text" class="box" name="formName" value="<?=$varName;?>">
    </div>
        ... more html inputs...
</form>

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Во-первых, мне трудно понять, что вы пытаетесь сделать: но все же я могу указать на несколько вещей, которые лучше чередуются; Вы должны поставить этот код

if ($ _ POST ['formSubmit'] == "Отправить") { ...

}

над формой для нужной вам функциональности а также выше, если должен иметь еще, чтобы показать форму, когда есть ошибки. лайк еще { --- --- форма }

попробуйте это и c, если это поможет

0 голосов
/ 11 октября 2011

Что бы вы ни собирались делать, вы должны использовать Javascript.Вы можете выбрать AJAX, используя iframe, куда вы направляете свое сообщение, и читая его в javascript, чтобы проверить статус публикации.

Редактировать:

Таким образом, вы можете опубликовать его:

<form action="do_stuff.aspx" method="post" target="my_iframe">
  <input type="submit" value="Do Stuff!" />
</form>

<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.aspx"></iframe>

Поэтому после публикации вы должны прочитать статус из этого iframe (другими словами, вывод HTML из него).

...