2011-05-09 71 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