2011-10-11 97 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