プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.27:HTMLフォーム

N予備校 プログラミングコース 第27回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第27回

前回は、HTTPメソッドについてPOSTメソッドを実装しました。
今回はアンケートフォームを作ります。

  • 今回の内容まとめ(第3章 14)
    ・アンケートフォーム作成(HTMLのフォーム)
    ・アンケートフォームの表示
    ・投稿内容の表示

  • 今回の目標
    POSTメソッド利用してアンケートフォームを作成します。

  • 今回新しく扱っているコマンド等
    ・form
    ・pipe
    ・decodeURIComponent

アンケートフォーム作成(HTMLのフォーム)

前回学んだPOSTメソッドを使ってアンケートフォームを作成します。
フォームとは、利用者に情報を入力してもらい、その内容をサーバーに送信するためのものです。
今回はformタグを利用してアンケートフォームを作成します。

formタグ

formタグを使って、利用者が情報を入力する入力欄を作成します。
inputタグを利用した部品(テキストエリアやチャックボックスなど)により情報を送信する事が出来ます。

<inputタグ>
< input type =”radio”>:ラジオボタン

< input type = “checkbox”>:チェックボックス

< button>:ボタン

< input type = “text”>:テキストボックス

< textarea>:テキストエリア

< select>:プルダウンメニュー

< select size = “4”>:セレクトボックス

< progress>:プログレスバー

< form method =”POST” action=”○○”>
< input type=”radio” name=”yaki-shabu” value=”焼き肉”/>焼き肉
< input type=”radio” name=”yaki-shabu” value=”しゃぶしゃぶ”/>しゃぶしゃぶ
< button type=”submit”>投稿< /button>

1行目で、method属性(POSTの部分)にはHTTPメソッドを、action属性(○○の部分)にはURLのパスを設定します。
今回は、POSTメソッドを利用して○○というパスに対して情報を投稿するように設定しています。

2行目で、type属性で部品のタイプを指定し、name属性でPOSTされるデータのキーを、またvalue属性で値を指定します。
今回は、type属性にradioを指定してラジオボタンを配置し、name属性には”yaki-shabu”、value属性にはそれぞれ「焼き肉」「しゃぶしゃぶ」という文字列を設定しています。

3行目で、buttonタグを使用して情報を送信する際に利用するボタンを配置します。
type属性にsubmitを指定し、ボタンには「投稿」という文字が記入されます。

ここまでで作成したページが以下になります。 

アンケートフォームの表示

HTTPサーバーにGETメソッドでアクセスした際に、アンケートフォームが表示されるように設定します。
このとき使うのがpipeです。

pipe

pipe関数を使用することで、読み込み用のStreamと書き込む用のStreamをつなぐことが出来ます。

 const fs = require(‘fs’);
 const rs = fs.createReadStream(‘○○’);
 rs.pipe(res);
 break;
1行目で、fsモジュールを呼び出しそれを定数fsとします。

2行目で、○○ファイルをStreamとして読み込みそれを定数rsとします。

3行目で、resに先ほどの定数rsをつないで一つのデータとしています。
 

投稿内容の表示

フォームに投稿された情報をログとして出力し、投稿内容をページに表示するプログラムを実装します。
このとき使うのが、decodeURIComponent 関数です。
URLエンコードされた(日本語などの文字列を特殊なコードに変換した)値をもとに(日本語などに)もどす際に、decodeURICompoment関数を使います。

const decoded = decodeURIComponent(○○);
console.info(‘[‘ + now + ‘] 投稿: ‘ + decoded);
res.write(‘< !DOCTYPE html>< html lang=”ja”>< body>< h1>’ +
                    decoded + ‘が投稿されました

‘);
                res.end();

1行目で、URLエンコードされている○○の内容を基に戻し、それを定数decodedに設定しています。
formで送られるデータはURLエンコードされているので、decodedURIComponent関数でもとにもどす必要があります。

2行目で、焼き肉、しゃぶしゃぶのどちらに投稿されたのかをログに残します。
「yaki-syabu=焼き肉」か「yaki-shabu=しゃぶしゃぶ」のどちらかに投稿されたのかをログに残す処理となります。

3行目で、投稿内容をHTMLの見出しとして表示します。 

ここまでの内容でHTTPサーバーを起動しHTMLを実行すると、先ほどと同じ以下のページが表示されます。

ここで、焼き肉を選んで投稿ボタンをクリックすると、

と表示されます。

 


今回は、POSTメソッド利用してアンケートフォームを作成し、投稿内容をログとして出力することでHTMLに表示するプログラムを実装しました。
次回は異なるアンケートを表示できるようなプログラムについて学びます。

 

 

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。