dポイントプレゼントキャンペーン実施中!

こんにちは。
現在アンケートサイトを作成しているのですが、チェックボックスを利用した質問の複数選択した回答をデータベースに登録できません。
htmlやphp、PostgreSQLに詳しい方指摘お願いします。

※sample.html
<form method="post" action="sample.php">
<b>7.あなたはどのような資格を持っていますか?</b><br>
<input type="checkbox" name="sikaku[]" value="1" checked>ITパスポート
<input type="checkbox" name="sikaku[]" value="2">漢字検定3級以上
<input type="checkbox" name="sikaku[]" value="3">英語検定3級以上
<input type="checkbox" name="sikaku[]" value="4">自動車運転免許
<input type="checkbox" name="sikaku[]" value="5">簿記
<input type="checkbox" name="sikaku[]" value="6">宅建
<input type="checkbox" name="sikaku[]" value="7">TOEIC600点以上
<input type="checkbox" name="sikaku[]" value="8">その他<br><br>
<input type="submit" name="OK" value="OK">
</form>

※sample.php
<?php
//htmlから"sikaku"を取得
$sikaku = $_REQUEST["sikaku"];

//dbに接続・dbに書き込みSQL文
$dbconn = pg_connect ("dbname=****** user=********");
$result = pg_query ($dbconn, urldecode("insert into sample03 values('$sikaku');"));

//接続を閉じる
pg_close($dbconn);
?>

※PostgreSQL(table : sample03)
//テーブル作成
********=> create table sample03(
********(> 資格 int);
CREATE TABLE

//権限
********=> grant select on sample03 to ********;
GRANT

//テーブルの表示
********=> select * from sample03;
資格
------
(0 rows)

A 回答 (1件)

## php、PostgreSQLはさわっていないのであまり答える気はなかったけど。



チェックボックスを利用した質問の複数選択した回答ということなので、
漢字検定3級以上と英語検定3級以上にチェックを入れた場合、

//テーブル作成
********=> create table sample03(
********(> 資格 int);
の「資格」にはなにをいれるのでしょう?
ひょとして、23といれたい?

html上(というかブラウザ上というかそのDOM上ではというべきか?)では、sikaku[]は配列として扱われています。
だから、$sikaku = $_REQUEST["sikaku"];の結果は配列変数を受け取ると思うけど、
・・・文字列変数として受け取れるのかもしれません。
(ここは私はわかりません。)
配列変数となっているなら$sikaku[0],$sikaku[1],・・・を順につなげる必要あるはずです。

で、SQLですが、
insert into sample03 values('$sikaku')
のように''で囲むと文字型になり、数値型の項目に値を入れるときは大抵のデータベースではエラーに
なります。(PostgreSQLはよく知りませんけど、タブンエラーになるはず)
ここかもしれません。

どちらにしろ、$result にエラーが返ってきているのでは?
$result か他のエラーコードなどを参照できるようにして確認するほうがいいでしょう。
## 申し訳ないけど、これの方法は私はわかりませんので他の方の回答待ちしてください。
    • good
    • 0
この回答へのお礼

お返事ありがとうございました。

うまくチェックボックスのデータが書き込みできないので、phpやPosegreSQLの本を借りて勉強してみます。

ありがとうございました。

お礼日時:2011/08/31 21:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!