2011-06-03 125 views
3

你好 我在mvc系統視圖中構建表單,並且希望在表單提交失敗的情況下保留所有插入的值。 如何才能做到這一點:我試着像(例如一個字段):PHP在提交表單失敗後保留表單信息

 <label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value=<?= $_POST['user_firstmane'] ?> > 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 

但當然,它不工作的第一次(當沒有動作後完成)。

要做到這一點,最簡單的方法是什麼?有任何想法嗎?

謝謝

+1

這是什麼意思? 「但當然,它不會第一次運作」....第一次向用戶顯示錶格時,由於他尚未提交任何內容,因此該值不能存在。或者是有一些PHP錯誤? – 2011-06-03 10:11:49

+0

1)你爲什麼說'它第一次不起作用?' 2)你拼錯$ _POST ['user_firstmane'],當然應該是$ _POST ['user_firstname'] 3)(小OT)在我看來,更多的「MVC」你不應該直接使用$ _POST變量但是從「控制器」(例如,具有「firstName」屬性的「用戶」對象)取得的值將是更好的選擇。 – ArtoAle 2011-06-03 10:23:31

回答

1

我建議是這樣的:

<label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value=<?(isset($_POST['user_firstname']) ? $_POST['user_firstname'] : ""; ?>> 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 

你也有一個錯字的$ _ POST [ 「user_firstmane」]應該是$ _ POST [ 「user_firstname」]: )

+1

值得注意的是,爲了實現這個功能,當提交**失敗時,你不能執行POST/Redirect/GET模式。 – 2014-04-28 18:59:23

1
value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>" 
+0

你是否應該將「」更改爲「」? – 2013-11-18 21:45:07

1

你的意思是你想保持表單的值,當它沒有提交?您可以使用$ _SESSION將值存儲在檢查頁面中。例如:

check.php

<?php 
    session_start(); 
    if (strlen($_POST['user_firstname']) < 5) { //for example 
     $_SESSION['user_firstname'] = $_POST['user_firstname']; 
    } 
?> 

在當前的形式。改變value=<?= $_POST['user_firstmane'] ?>value="<?=$_SESSION['user_firstname']?>",所以:

<label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value="<?=$_SESSION['user_firstname']?>" /> 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 
2

只是遍歷JavaScript中的DOM,並把PHP $ _ POST數據到input.value

<script type='text/javascript'> 

<?php 
    echo "var jsArray = new Array();"; 
    foreach ($_POST as $key=>$value){ 
     echo "jsArray['$key'] = '$value';"; //turn it into a javascript array 
    } 
?> 


     // Grab all elements that have tagname input 
     var inputArr = document.getElementsByTagName("input"); 

     // Loop through those elements and fill in data 
     for (var i = 0; i < inputArr.length; i++){ 
      inputArr[i].value = jsArray[inputArr[i].name]; 

     } 

</script> 
0
<input id="FirstName" name="FirstName" placeholder="First name" title="First Name" required="" tabindex="1" type="text" value="<?php if(isset($_POST['FirstName'])){ echo htmlentities($_POST['FirstName']);}?>"/> 

此代碼是爲了更容易提交表單失敗後保留表單信息。