2011-10-11 78 views
0

这可能有一个简单的解决方案,但我不是很精通php!基本上我想提交一个表格,并且用户可以返回一个感谢覆盖图像而不刷新。我已经设法得到这个工作,但现在表格验证不能正常工作...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> 

回答

0

无论你打算做什么,你都必须使用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> 

所以帖子后,你必须(由它去HTML输出换句话说)读取该iframe中的地位。

+0

有一个小麻烦理解这一点。您能否详细说明do_stuff.aspx和not_submitted_yet.aspx页面上的内容。 – kala233

+0

基本上,当你在页面中放置一个iframe时,你可以在你的表单中发布你的表单(这样主页面不会重新加载)。所以在我的例子中,页面do_stuff.aspx和post数据将被调用,但在iframe中! – Wesley

-1

首先,我很难理解你在做什么:但是我仍然可以指出一些有更好的替代方案; 你应该把这个代码

如果($ _ POST [ 'formSubmit'] == “提交”) { ...

} 

形式的功能上面你想 ,也是上面是否应该有一个其他的显示表单时出现错误。 像 其他 { --- ---形式}

试试这个和c,如果有帮助

+0

他不希望他的整个页面刷新;) – Wesley

+0

他不想使用ajax 2 ...他没有办法完成这项任务,没有刷新...在某些情况下,他可能会在不知道的情况下进行操作 – xmaestro

+0

因此,我与他的awnser他应该找到他在找什么:) – Wesley