2011-05-09 33 views
1

我已經提交了一份表格下面的代碼 - 它並沒有做太多的時刻,但我所期待實現的是:PHP形式 ​​- 保留文本框的值上提交

文本框docTitle是必需的領域。

如果yourName文本框具有文本在它和docTitle文本框留空,提交時出現所需的字段信息和yourName文本框保留了它的價值。

我正在努力提交後表單保留以前的值的部分。

下面的代碼:

<?php 
if(isset($_POST['submit'])) { 
    if(empty($docTitle)) { 
    } else { 
     if ((($_FILES["file"]["type"] == "application/pdf")) && ($_FILES["file"]["size"] < 2000000) && ($_POST["docTitle"] > "")) { 
      if ($_FILES["file"]["error"] > 0) { 
       echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
      } 
       else 
      { 
       echo "Upload: " . $_FILES["file"]["name"]; 
       if (file_exists("upload/pdf/" . $_FILES["file"]["name"])) { 
        echo $_FILES["file"]["name"] . " already exists. "; 
       } 
        else 
       { 
        move_uploaded_file($_FILES['file']['tmp_name'], 
        "upload/pdf/" . $_FILES["file"]["name"]); 
       } 
      } 
     } 
     else 
     { 
      echo "Invalid file"; 
     } 
    } 
} 
?> 

<form name="uploadAPdf" id="uploadAPdf" action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"> 
<label for="text">Name: </label> <input type="text" name="yourName" id="yourName" /><br /> 
<label for="text">Document: </label> <input type="text" name="docTitle" id="docTitle" /> 
<?php if(isset($_POST['submit']) && empty($docTitle)) { 
echo " Document title must be filled in..."; 
echo "<script type='text/javascript'>document.uploadAPdf.docTitle.focus();</script>"; 
} ?> 
<br /> 
<label for="file">Select PDF to upload: </label> <input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
+0

從我收集你基本上是想,如果他們留下了一個領域的空白,以提示用戶?所以我問的是,爲什麼在提交表單之後呢?爲什麼不使用jquery或javascript來執行檢查並在提交之前提示用戶? – buymypies 2011-05-09 15:03:03

+0

這是一個公平的觀點......在這種情況下,這將工作......我仍然想知道如何使表格在提交後記住它的價值。 – Tom 2011-05-09 15:05:39

+0

每當你這樣做,你**必須**做它的服務器端。 **請永遠不要忘記檢查用戶輸入!! **客戶端是好的,但**做它的服務器端**。得到它了? =) – Rudie 2011-05-09 15:07:59

回答

0

這不是你想要的東西:

<?php 
function postValue($name, $alt = '') { 
    return isset($_POST[$name]) ? $_POST[$name] : $alt; 
} 
?> 
<label for="text">Name: </label> <input type="text" name="yourName" id="yourName" value="<?=htmlspecialchars(postValue('yourName'))?>" /><br /> 
<label for="text">Document: </label> <input type="text" name="docTitle" id="docTitle" value="<?=htmlspecialchars(postValue('yourName'))?>" /> 

這是(在某種程度上)最形式是如何工作的?

也許我缺少東西=)

編輯
這是我用的時候我沒有使用PHP框架,使用功能:

<?php 
function ifsetor($var, $alt = '') { 
    return isset($var) ? $var : $alt; 
} 
?> 

這將是這樣使用:

<?php 
$selectedOptions = ifsetor($_POST['options'], array()); 
?> 

編輯
無關:你可能想把你的表單元素放在一個包裝中(而不是用<br>分開):

<div class="form-element"><label>...</label><input .... /></div> 
0

改變你的HTML輸入(S)代碼:

<input type="text" name="docTitle" id="docTitle" value="<?php echo htmlspecialchars($_POST['docTitle']; ?>" /> 
+0

好趕上:'htmlspecialchars' =)**編輯**,但你不知道是否實際存在'$ _POST ['docTitle']'。當然是: – Rudie 2011-05-09 15:14:19

+0

:allways'htmlspecialchars'或等價物,'docTitle'是@Tom代碼的一個例子 – 2011-05-09 15:21:24