質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

11524閲覧

会員登録 名前入力フォーム 日本人もいれば外人だっている

earnest_gay

総合スコア615

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/06/06 07:24

編集2016/06/06 07:42

ある会員登録フォームを作っています。

名前のチェック処理を考えていて、まず漢字かどうかをチェックする処理を作ろうと思っていたのですが

イメージ説明

登録する人が日本人だけならいいのですが、外人もいることを考慮すると
漢字の入力フォームに漢字かどうかをチェックする処理を適応させるのはどうかと思い悩んでます。
それに苗字が漢字でも名前に漢字がなく平仮名の人もいるはずです。

外人もいることを想定して入力フォームにローマ字入力フォームを用意しています。

【日本人視点での必須項目】

・名前 (required属性あり)
・フリガナ(required属性あり)
・ローマ字(required属性なし任意)

【外人視点での必須項目】

・名前 (任意 というかむしろいらない?)
・フリガナ(任意 というかむしろいらない?)
・ローマ字(required属性あり)

となると、外人用と日本人用でページを分けるか...?
いや、そんな手間はかけたくないし出来れば同じページで入力させたい。

・名前
(漢字が入力されているかにこだわらず、英語や記号が入力されていないかでチェックするか?
それだとこの項目は外人が入力する必要はなく、やはりページを分けるべき?)

・フリガナ
(全角カナにコンバイトして全角カナかどうかを調べる?
ここは日本人外人共通して使えそうだから単にカナ判定だけでいいかも?)

・ローマ字
(英語以外の文字は入っていないかチェック?
外人用は名前もフリガナも入力できるはずがないから、このローマ字はrequiredつける?
そうなると日本人が名前とフリガナを入力せずローマ字入力だけ入力しても確認ページに遷移してしまう?)

...はぁ頭が回らなくなってきました。
同じページでこの3項目(6入力)を受け付けるにはどういう構造にしたらいいでしょうか...?

構造がハッキリ決まってれば判定処理も作れるのですが
どなたかご教授願います。

【追記】
多言語対応ではありません。
あくまでも、国内に在住の外人が登録する際を問題点としています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

一度、名前だけrequiredで英字漢字OKでフリナガとローマ字は任意か項目自体無い場合、
何が困るかを考えてみたらよいかと思います。

入力する側からしたら、入力項目は少ないに越したことないですし、
入力チェックでエラーが出れば出るほど面倒くさいと感じるとでしょうし、
名前欄だけで英字も漢字も自由入力のほうが楽だと思います。

でも、こちらから電話で問い合わせる必要があるならフリガナが無いと、
なんて呼んだらよいかわからないので、必須にした方がよいかもしれないですし

そこらへんはこのシステムを管理する側の担当者の問題だと思うので、担当者と相談してみるのがよいかと思います。

投稿2016/06/06 09:13

cobm

総合スコア239

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/06/06 09:48

ありがとうございます!
guest

0

ベストアンサー

じゃあミドルネームがある方は姓・名で足らないじゃないか、とか、日本人だって異体字・外字があってかけないぞ、とか、根本的な課題はいろいろ考えつきます。

ということでそれは

  • そのシステムのポリシー(考え方)としてどこまでをフォローする
  • その外についてはどのように考える

といった要件定義の問題となります。
そのシステムを利用(管理)する方・部門と仕様決めを行うべき箇所かと思います。

投稿2016/06/06 08:12

kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/06/06 09:47

ありがとうございます! register.phpというファイルだったのですが 結局 ・register_ja.php ・register_en.php で分けた方が早そうです...
guest

0

多言語対応するということであれば、フォーム、ヴァリデーション(入力チェック)、アクション(DBへの登録など)を言語によって分けるしかありません。
素のPHPでそれを行うのは結構大変だと思います。

cakeなどのPHPフレームワークでは多言語対応用の仕組みがあるので、そういったものを利用すると多少楽になるかと思います。

投稿2016/06/06 07:40

CodeLab

総合スコア1939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/06/06 09:45

ありがとうございます!
guest

0

自分が作る場合なら、動的に変更してフォームの項目数を変えます。

言語「Japanese | English」は最低限用意は必要でしょうし、そもそもフォームに記載されている label も変更が必要になってきます。

日本語ページは質問文の画像のようにすればいいでしょうし、英語ページなら、「名前」「フリガナ」「都道府県」じゃ英語圏の人には意味不明で、何を入力すべきかわかりませんよね。


php

1<?php 2 3// escape 4function h($str) 5{ 6 return htmlspecialchars($str, ENT_QUOTES, 'utf-8'); 7} 8 9/** 10 * 言語の取得 11 * @return string 12 */ 13function getLang() 14{ 15 return ('' == filter_input(INPUT_GET, 'lang')) ? 'ja' : filter_input(INPUT_GET, 'lang'); 16} 17 18/** 19 * フォームラベルの取得 20 * @param string $key 21 * @return string 22 */ 23function getLabel($key) 24{ 25 $lang = getLang(); 26 $arr = [ 27 'name' => ($lang == 'ja') ? '氏名' : 'Name' 28 , 'email' => ($lang == 'ja') ? 'メールアドレス' : 'Email' 29 ]; 30 return $arr[$key]; 31} 32 33/** 34 * バリデーション 35 */ 36function validate() 37{ 38 $lang = getLang(); 39 if ($lang == 'ja') { 40 //日本語の時の処理 41 } else if ($lang == 'en') { 42 //英語の時の処理 43 } 44 45 // 共通の処理 46 // 結果 47 return; 48} 49 50if (!is_null(filter_input_array(INPUT_POST))) { 51 // POST 時の処理 52} 53?><!DOCTYPE HTML> 54<html lang="ja"> 55 <head> 56 <meta charset="UTF-8"> 57 <title>サンプル</title> 58 </head> 59 <body> 60 <div> 61 <p> 62 <a href="?lang=ja">日本語</a> 63 | 64 <a href="?lang=en">English</a> 65 </p> 66 <form action="" method="post"> 67 <p> 68 <label for="name"><?php echo h(getLabel('name')); ?></label> 69 <input type="text" name="name[]" id="name" /> 70 <input type="text" name="name[]" /> 71 </p> 72 <p> 73 <label for="email"><?php echo h(getLabel('email')); ?></label> 74 <input type="text" name="email" id="email" /> 75 </p> 76 <p> 77 <button>送信</button> 78 </p> 79 </form> 80 </div> 81 </body> 82</html>

投稿2016/06/06 07:32

編集2016/06/06 07:58
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/06/06 09:48 編集

回答ありがとうございます! 国内在住者のみの利用を想定していますので 都道府県は国内のみで大丈夫です。 今回の問題点は 国内にいる外人が登録する際を対象としています。
退会済みユーザー

退会済みユーザー

2016/06/06 08:15 編集

ページを分けるかどうかの質問ですよね。補足に書いた情報は何のために必要なんですか? ノートにでもまとめて、マトリックスにでも描き起こせばいいだけの話じゃないですか?
earnest_gay

2016/06/06 09:45

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問