学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

PHPプログラミング入門その6 入力フィールド

<<前  [TOP]  次>>


Webブラウザの入力フィールドに記入された値を、PHPで利用することを考えます。


1行入力のinput要素にはtype属性の値「text」と「password」があります。

<input type="値" その他の属性>

「type属性」は以下のいずれか

  • text (通常のテキスト)
  • password (入力文字が直接的には表示されません)


    「その他の属性」は以下のとおり
  • name="フィールド名"
  • size="フィールドの幅" (文字数)
  • maxlength="入力可能最大文字数"
  • value="初期表示される文字列"


    以下のHTMLファイルとPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


    formsample3.html 直

    <p>PHPを呼び出します。</p>
    
    <form action="phpsample3.php" method="post">
    	<p>
    		passwordフィールド:
    		<input type="password" name="field1"><br>
    
    		textフィールド(最大10文字まで入力可能):
    		<input type="text" name="field2" size="70" maxlength="10" value="最大10文字"><br>
    	</p>
    
    	<input type="submit">
    	<input type="reset">
    </form>
    



    phpsample3.php 直

    <p>呼び出されたPHPプログラム</p>
    
    <?php
    	$value=$_POST['field1'];
    	print("filed1の内容は".$value."です\n<br>");
    	print('もちろん$_POSTはprintに埋め込んでも、「'.$_POST['field1']."
    	のように表示されます\n<br>");
    
    	$value="filed2は「".$_POST['field2']."」が内容です\n";
    	print($value);
    ?>
    



    仕組み的にはsubmitボタンがなくてもフィールドで入力後「Enter」キーが押されれば、actionで指定したURLを呼び出します。


    PHPでは入力されたフィールド値を「$_POST['nameで設定したフィールド名']」 として取得できます。


    $_POSTは配列で、配列の添え字(の中)を文字列で設定して使用します。


    method属性が「post」ではなく「get」のものを取得したければ「$_GET」を使用します。


    このようにPHPでは、Webサーバ情報・環 境変数・ユーザからの入力、などの値を取得する変数があらかじめ用意されており、これらをスーパーグローバル変数と呼んでいます。


    Apacheを起動し、Webブラウザで「
    http://localhost/phpsample/formsample3.html[]」にアクセスして下さい。


    [f:id:MrRadiology:20161003122320j:image]


    [f:id:MrRadiology:20161003122321j:image]


    複数行の入力フィールドをあらわすHTMLタグは「textarea」です。

    <textarea 属性>
    

    「属性」は以下のとおり

  • name="フィールド名"
  • cols="幅" (半角文字数)
  • rows="行数"


    以下のHTMLファイルとPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


    formsample4.html 直

    <p>PHPを呼び出します。</p>
    
    <form action="phpsample4.php" method="post">
    	<p>
    		textarea1:
    		<textarea name="textarea1">
    			初期設定1行目
    		</textarea><br>
    
    		textarea2:
    		<textarea name="textarea2" cols="20" rows="5">
    			初期設定1行目
    		</textarea>
    	</p>
    
    	<input type="submit">
    	<input type="reset">
    </form>
    



    phpsample4.php 直

    <p>呼び出されたPHPプログラム</p>
    
    <?php
    	print("textarea1の内容は".$_POST['textarea1']."です\n<br>");
    
    	$value="textarea2は「".$_POST['textarea2']."」が内容です\n";
    	print($value);
    ?>
    



    Webブラウザで「http://localhost/phpsample/formsample4.html」にアクセスして実行結果を確認して下さい。








    今まで見てきた例ではPHPを含むHTMLに画面遷移していましたが、自分自身のページを呼んでもかまいません。
    このとき、PHPを含むページを呼び出しますので、拡張子は「php」となります。


    以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。


    phpsample5.php 直

    <p>自分自身を呼び出すPHPプログラム</p>
    
    <p>
    	<form action="phpsample5.php" method="post">
    		<p>
    			textフィールド:
    			<input type="text" name="field" size="20"><br>
    		</p>
    
    		<input type="submit">
    		<input type="reset">
    	</form>
    </p>
    
    
    <p>
    	<?php
    		$value=$_POST['field'];
    		print("<h1>filedの内容は".$value."です\n</h1>");
    	?>
    </p>
    



    Webブラウザで「http://localhost/phpsample/phpsample5.php」にアクセスして実行結果を確認して下さい。





    このままでもプログラムは動作するのですが、「($_POST['field']に何も入っていません」という注意書きが出てしまいます。
    この後扱うif文を使って、($_POST['field']に何も入っていないときは表示しないという記述を追加すればこの注意書きは出なくなります。


    phpsample5-2.php 直

    <p>自分自身を呼び出すPHPプログラム</p>
    
    <p>
    	<form action="phpsample5.php" method="post">
    		<p>
    			textフィールド:
    			<input type="text" name="field" size="20"><br>
    		</p>
    
    		<input type="submit">
    		<input type="reset">
    	</form>
    </p>
    
    
    <p>
    	<?php
    		if(isset($_POST['field'])){
    			$value=$_POST['field'];
    			print("<h1>filedの内容は".$value."です\n</h1>");
    		}
    	?>
    </p>
    



    以下の部分が変更した部分です。

    <?php
    	if(isset($_POST['field'])){
    		$value=$_POST['field'];
    		print("<h1>filedの内容は".$value."です\n</h1>");
    	}
    ?>
    



    「isset()」は、指定した変数に値がセットされていればtrue、いなければfalseを返します。
    もし「$_POST['field']」に値があればプログラムを実行し、値がなければ何もしないという意味になります。





    <<前  [TOP]  次>>