Форма PHP - сохранить значения текстового поля при отправке - PullRequest
1 голос
/ 09 мая 2011

У меня есть следующий код для отправки формы - в данный момент он мало что делает, но я стремлюсь добиться этого:

Текстовое поле docTitle является обязательным для заполнения.

Если текстовое поле yourName содержит текст, а текстовое поле docTitle оставлено пустым, при отправке появляется сообщение о необходимом поле, а текстовое поле yourName сохраняет его значение.

I'mборется с частью, где форма сохраняет предыдущие значения после отправки.

Вот код:

<?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 голосов
/ 09 мая 2011

измените ваш HTML-код (ы) ввода на:

 <input type="text" name="docTitle" id="docTitle" value="<?php echo htmlspecialchars($_POST['docTitle'];   ?>" />
0 голосов
/ 09 мая 2011

Разве это не то, что вы хотите:

<?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'))?>" />

Это (вроде) как работает большинство форм ...

Может быть, я что-то упустил =)

edit
Это функция, которую я использовал, когда не использовал PHP-фреймворк:

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

, которая будет использоваться следующим образом:

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

edit
Не связано: вам может понадобиться поместить элементы формы в оболочку (вместо разделения их на <br>), например:

<div class="form-element"><label>...</label><input .... /></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...