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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

2115閲覧

分岐する前のページのname属性の個数が異なる場合、DBへの登録で異常はでないか

earnest_gay

総合スコア615

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2016/06/17 15:50

編集2016/06/17 15:51

下記のような会員登録ページの5つのファイルがあります。

register_human_ja.php
register_human_en.php
register_human.php
register_human_preview.php
register_human_thanks.php

register_human_ja.phpは、
日本人用のアドレスや名前や住所などの基本事項を入力するページです。※1

register_human_en.phpは、
国外人用のアドレスや名前や住所などの基本事項を入力するページです。※1

register_human.phpは、
スキルなどを入力するページです。※2

register_human_preview.phpは、
スキル入力ページからの遷移先になり、
前2ページ分の内容を表示して確認させるページです。

register_human_thanks.phpは、
確認ページからの遷移先になり、このページでDBへ登録処理をします。

※1.名前の正規表現の関係で日本人用と国外人用のページに分けました。
※2.日本人用や国外人用のページはありません。_jaも_enも次ページとしてこちらに遷移します。

イメージ説明

ここで質問です。

【質問Ⅰ】
register_human_ja.phpには名前入力フォームが6つがあります。

漢字2フォーム
name1とname2

カナ2フォーム
name3とname4

ローマ2フォーム
name5とname6

register_human_en.phpには名前入力フォームが3つあります。

ローマ2フォーム
name1とname2

ミドルネーム1フォーム
name3

register_human_ja.phpとregister_human_en.phpの違いはこれだけです。

最終的には、
register_human_ja.phpとregister_human_en.phpの内容をセッションに保存していきながら
register_human_thanks.phpまで進んでいき、
register_human_thanks.phpでDB登録処理の記述をするわけですが、
外人が登録してきているのか、日本人が登録してきているのか、で処理は変わりませんか?

例えば下記記述でDB登録処理の記述をしておいて、
日本人ならこれでいけますが

外人だった場合name4とname5とname6がないからエラーになったりしないかという
質問なのですがどうでしょうか?

※実際のカラム名もname属性と同じです。

$con = mysql_connect('hostname', 'username', 'password'); $name1 = $_SEESION['name1']; $name2 = $_SEESION['name2']; $name3 = $_SEESION['name3']; $name4 = $_SEESION['name4']; $name5 = $_SEESION['name5']; $name6 = $_SEESION['name6']; $result = mysql_query("INSERT INTO address(name1, name2, name3, name4, name5, name6) VALUES('$name1', '$name2', '$name3', '$name4', '$name5', '$name6')", $con); if (!$result) { exit('データを登録できませんでした。'); }

これで何かしらのエラーになる場合、最悪は

register_human_ja1.php
register_human_en1.php
register_human_ja2.php
register_human_en2.php
register_human_ja_preview.php
register_human_en_preview.php
register_human_ja_thanks.php
register_human_en_thanks.php

というようなファイル構成にしてやるしかないと思いますが、できれば

register_human_ja.php
register_human_en.php
register_human.php
register_human_preview.php
register_human_thanks.php

で動作するようにしたいです。

【質問Ⅱ】

でも
register_human_preview.phpで書き直すボタンを後々追加したいと思ったら
register_human_preview.phpは
register_human_ja.phpか
register_human_en.phpの
どちらにもどっていいかわからないし、
jaとenでnameの個数も変わってくるから
それも視野に入れると

register_human_ja1.php
register_human_en1.php
register_human_ja2.php
register_human_en2.php
register_human_ja_preview.php
register_human_en_preview.php
register_human_ja_thanks.php
register_human_en_thanks.php

という風にするしかないのでしょうか?

試せばいいのですが、今開発環境にいないので質問させていただいてます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

フォームに、どちらのものかわかるように印をつけてそれで判別して
処理を分けたりします。

html

1<input type="hidden" name="lang" value="ja">

ほかにもやり方はいろいろあるし、DBの登録で 未入力で空文字だったり nullであっても、かならずエラーになるわけでもありません。簡単な問題なので、どう回答したらいいか迷いますね。

こういう風にしてみましたどうですかという質問は皆よく回答してくれる傾向にあります。

投稿2016/06/17 23:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

earnest_gay

2016/06/18 20:54

DBの登録で 未入力で空文字だったり nullであっても、かならずエラーになるわけでもありません。 $result = mysql_query("INSERT INTO address(name1, name2, name3, name4, name5, name6) VALUES('$name1', '$name2', '$name3', '$name4', '$name5', '$name6')", $con); のところで外人登録だった場合$name4', '$name5', '$name6ではじかれると思っていましたので、それが聞けただけでもありがたいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問