PHP表单 - 在提交时保留文本框值

时间:2011-05-09 14:56:25

标签: php forms textbox

我有以下提交表单的代码 - 目前它没有做太多,但我希望实现的是:

文本框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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

将您的html输入代码更改为:

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