人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPプログラムにてアンケートを作成したのですが

データベース(php my admin)の登録が出来ず困っております。

作成したのは以下のアンケートのページとソースになるのですが

ページ http://oskuni7.sakura.ne.jp/A_DATA_UPLOAD/QUESTIONAIRE/questionaire1.php

ソース http://oskuni7.sakura.ne.jp/A_DATA_UPLOAD/QUESTIONAIRE/questionaire.txt

データベース登録の際に発生したエラーは以下の二つの形式です。その他は全く問題なく登録できます。

●1つ目はラジオボタン

チェックし登録したはずの文字がきちんと反映されない。データベース画面では登録されるはずのデータが空白になる。

●2つ目はチェックボックス形式

チェックしたはずの文字が反映されない。データベース画面では登録されるはずのデータが空白になる。(チェックボックス形式の場合いくつかチェックされたものをひとつの変数に入れ登録しようとしているのですがこれは無理なのでしょうか?)

上記の二つの改善点がある場合どのように変更すればいいか教えて頂いてよろしいでしょうか。

よろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:PHP ひとつ アンケート エラー ソース
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●80ポイント ベストアンサー

(1)チェックボックス

方法1:添え字を付けて明確に指定する

<INPUT NAME="名前[1]" TYPE="checkbox">ho
<INPUT NAME="名前[2]" TYPE="checkbox">ge

方法2:添え字を付け無いで上の行から順に数えるようにする

<INPUT NAME="名前[]" TYPE="checkbox">ho
<INPUT NAME="名前[]" TYPE="checkbox">ge

受け取る時には添え字付き(方法2の場合はゼロからの連番)とする。

$_POST[名前][1]

既にご理解いただけたかもしれませんが

チェックボックスは複数選択が可能なのですから

受ける側も複数(=配列)用意しないといけないって事なのです。

どうしても単数で受けたいということであれば

方法3:個別に名前を付ける

<INPUT NAME="名前1" TYPE="checkbox">ho
<INPUT NAME="名前2" TYPE="checkbox">ge

受け取る時は個別に受け取る

$_POST[名前1]
$_POST[名前2]

という方法もあるにはありますが

項目が増えたり減ったりする度にプログラムを変更する事になりますので

使う場面はあまりありません。


(2)ラジオボタン

<INPUT NAME="名前" TYPE="radio" VALUE="ho">ho
<INPUT NAME="名前" TYPE="radio" VALUE="ge">ge

選択されている項目のVALUE値が$_POST[名前]という形で取得できます。


(共通)

何1つとして選択されていない場合は$_POST[名前]は作られませんので

if (isset($_POST[名前])) {
 echo "何も選択されていません";
} else {
 echo $_POST[名前] . "が選択されています";

}

といったような措置を取る必要があります。

ラジオボタンであるならば

<INPUT NAME="名前" TYPE="radio" VALUE="ho" checked>ho
<INPUT NAME="名前" TYPE="radio" VALUE="ge">ge

というようにデフォルトとして

どれかにチェックを入れておくという措置を取るという手もあります。

(チェックボックスでも同様の手が使えますが、通常は使いません。

デフォルトでチェックしておくことに意味があるのかどうか考えてみてくださいね)

◎質問者からの返答

ご回答ありがとうございます。


2 ● pahoo
●80ポイント

1つ目はラジオボタン

チェックし登録したはずの文字がきちんと反映されない。データベース画面では登録されるはずのデータが空白になる。

ソースを見ると、ラジオボタンの name 属性を指定する変数値 M2 をDBにinsertしています。

各々のラジオボタンに value 属性を持たせ、その値を M2 としてDBにinsertすべきです。


2つ目はチェックボックス形式

チェックしたはずの文字が反映されない。データベース画面では登録されるはずのデータが空白になる。(チェックボックス形式の場合いくつかチェックされたものをひとつの変数に入れ登録しようとしているのですがこれは無理なのでしょうか?)

ソースを見ると、チェックボックスのすべての value 属性が同じ変数値 M4 となっています。これでは、どの複数のチェックボックスを選択したとしても M4 の値が insert されてしまいます。

各々のチェックボックスに別々の value 属性を持たせ、その値を M4 としてDBにinsertすべきです。

複数の値をDBに登録するにはいくつかの方法があります。

  1. チェックボックスの項目毎に別々のカラムを割り当てる。
  2. 複数の値を適当なデリミタ(区切り文字)で区切って、1つのカラムに代入する。

後者でしたら、チェックボックスの value 属性を配列変数にして、その配列の値を結合すればいいでしょう。

PHPでチェックボックスを配列のように扱う」を参考にしてください。

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ