2015-10-22 18 views
5

私は検証が必要な単純なフォームを持っています。
私はempty()機能でこれを行いました。検証が合格しなかった場合、ユーザーにアラートが送信されます。このアラートが作成されるとすぐに、入力された値はすべて削除されます。PHP検証エラーの後に入力した値を保持する

私はそれらを保管したいと思います。

これは私がやったことです:入力のデフォルト値として値を入力し

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post"> 
    <table> 
     <tr> 
      <td> 
       Name:<input type="text" id="name" name="name"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input class="submit-button" type="submit" value="Send" name="submit"> 
      </td> 
     </tr> 
    </table> 
</form> 
<?php 
    if($_POST["submit"]){ 
     if (!empty ($_POST["name"])){ 
      // do something 
     }else{ 
      ?> 
      <script type="text/javascript"> 
       alert('U heeft niet alle velden ingevuld. Graag een volledig ingevuld formulier versturen'); 
      </script> 
      <?php 
     } 
?> 

答えて

4

はパス:

<input type="text" id="name" name="name" value="<?php echo isset($_POST["name"]) ? $_POST["name"] : ''; ?>"> 
+0

これは未定義の変数を生成します。 – Daan

+0

申し訳ありませんが、自分のコードを編集しました。 –

+0

はい、これでした。私は理解する.. Thnx! – Interactive

1

最も簡単な方法は、すべての入力フィールドのためにこれに次のようになります。

<input type="text" id="name" name="name" value="<?= isset($_POST['name']) ? $_POST['name'] : ''; ?>"> 

ので、テキストボックスに値を入れた場合、あなたはすでに、一度フォームを提出した場合はチェックします。

1

奇妙な話、私は同じようなことに取り組んですることが起こると、そのフォームデータをensreするために、次を使用しているフォームの提出後に利用可能です。セッション変数を使用してPOSTの結果を格納し、フォームフィールドの値として使用します。

/* Store form values in session var */ 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
    foreach($_POST as $field => $value) $_SESSION[ 'formfields' ][ $field ]=$value; 
} 

/* Function used in html - provides previous value or empty string */ 
function fieldvalue($field=false){ 
     return ($field && !empty($field) && isset($_SESSION[ 'formfields' ]) && array_key_exists($field, $_SESSION[ 'formfields' ])) ? $_SESSION[ 'formfields' ][ $field ] : ''; 
} 

/* example */ 
echo "<input type='text' id='username' name='username' value='".fieldvalue('username')."' />"; 
関連する問題