HTMLのチェックボックスから、データベースにデータ入力する仕組みを検討しております。
HTMLページでチェックされたものは、keywordカラムに入力されるようにしたいと考えております。
1) HTMLページ
<?
require('../include/init.inc');
$email = $_POST{'email'};
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<FORM name="myFORM">
<INPUT type="checkbox" name="name[]" onclick="chg()" value="aaa">:aaa
<INPUT type="checkbox" name="name[]" onclick="chg()" value="bbb">:bbb
<INPUT type="checkbox" name="name[]" onclick="chg()" value="ccc">:ccc
<INPUT type="checkbox" name="name[]" onclick="chg()" value="ddd">:ddd
<INPUT type="checkbox" name="name[]" onclick="chg()" value="eee">:eee
<INPUT type="checkbox" name="name[]" onclick="chg()" value="fff">:fff
</body>
</FORM>
<form action="Test1.php" method="post">
<input type=submit value='選択'>
→ ここで配列のデータを変数に入れる処置が必要?
2) Test1.php
<?
require('../include/init.inc');
$email = $_POST{'email'};
$name = $_POST{'name'};
var_dump($HTTP_POST_VARS);
$sql = "BEGIN;
update mailing_list_sentaku set keyword = '$name' where mailing_list_name = '$email';
COMMIT;";
pg_query("$sql");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
</head>
<body>
・データベース
- postgresql 8.1.9
- PHP 5.2.1
postgres=# \d mailing_list_sentaku
・mailing_list_name : character varying(40)
・keyword : character varying(200)
現状は、Test1.phpにもデータが渡っておらず、原因がつかめていない状況です。ご協力よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
以下でざっくりは動くと思いますが、SQLインジェクションなどの対応がまったくできていません。
ローカルでお試しになられるのはいいかと思いますが、公開されるのはどうかと思います。
前の方が言っておられるようにHTMLの勉強はもちろん、Webアプリ(この場合PHPとPostgreSQL)の勉強をされたほうがいいと思います。
何か一冊本を買うことをお勧めします。
----
1) HTMLページ
<?
require('../include/init.inc');
$email = $_POST['email'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
</head>
<body>
<form action="Test1.php" method="post" name="myFORM">
<INPUT type="checkbox" name="name[]" onclick="chg()" value="aaa">:aaa
<INPUT type="checkbox" name="name[]" onclick="chg()" value="bbb">:bbb
<INPUT type="checkbox" name="name[]" onclick="chg()" value="ccc">:ccc
<INPUT type="checkbox" name="name[]" onclick="chg()" value="ddd">:ddd
<INPUT type="checkbox" name="name[]" onclick="chg()" value="eee">:eee
<INPUT type="checkbox" name="name[]" onclick="chg()" value="fff">:fff
<INPUT type="hidden" name="email" value="<?php echo htmlspecialchars($email); ?>">
<input type=submit value='選択'>
</form>
</body>
</html>
> → ここで配列のデータを変数に入れる処置が必要?
ここというか、次のPHPで必要になります。
2) Test1.php
<?
require('../include/init.inc');
$email = $_POST['email'];
$name = $_POST['name'];
// このままですと $name は配列です
// 登録先(keyword)のデータ型はキャラクタなので
// 文字列ないし、シリアライズする必要があるでしょ。
// これは、使用ほうほうによって決めるべきです。
// 文字列にする場合(項目をカンマ切りで)
// $name = implode(",", $_POST['name']);
// シリアライズする場合
// $name = serialize($_POST['name']);
// 今回はとりあえず文字列にする
// 文字の長さなどチェックが必要
$name = implode(",", $_POST['name']);
$sql = "BEGIN;
update mailing_list_sentaku set keyword = '" . $name . "' where mailing_list_name = '" . $email . "';
COMMIT;";
pg_query("$sql");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<body>
SQLを確認<br />
<?php echo htmlspecialchars($sql); ?>
</body>
</head>
ご回答ありがとうございます。
ご教授いただいた方法で試してみることにします。
SQLインジェクションに関しては、対応方法について勉強しておきます。
お手数お掛けいたしました。。。
No.2
- 回答日時:
<form action="Test1.php" method="post">
を<FORM name="myFORM">のところに入れないとそのデータは送信できないよ。
その上</body>はなんで、</form>の前にあるの?
html構文をじっくり勉強し直して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
postgreSQLのオートナンバーに...
-
SQL文作成のお願い
-
pl/pgsqlで変数の扱い
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
datapumpの実行方法について
-
CLOB型へのINSERT
-
異なるスキーマからデータを抽...
-
特定のスキーマのテーブルを一...
-
Data Pump で大量データインポ...
-
エクセルからアクセスにインポ...
-
Access レコードを追加できませ...
-
SQLでスキーマ名(所有者名)の...
-
select insert 句
-
DELETE文でFROM句を省略した場合
-
検索結果の列数を動的に変更したい
-
ACCESS 複数テーブル・複数フィ...
-
INDEXの無効化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
UNIQUEをつけたときのINDEXテー...
-
PostgressからMySQL(MariaDB)...
-
クエリアナライザのsp_helpコマ...
-
3つのテーブルの処理について
-
チェックボックスから、データ...
-
SQL文作成のお願い
-
SQLで検索結果の記事を表示したい
-
JSPとデータベースのつがぐ
-
特定カラムの値を変更したいの...
-
phpPgAdminからSQL文を発行し、...
-
SQL SELECT文 別テーブルのレコ...
-
2つの異なるテーブルを和結合し...
-
PostgresSQL8.4でツリー上に取...
-
賢いSQL文がわからない
-
前方一致が動的に変更される場...
-
全テーブルのデータの行数
-
マルチテーブル・インサート
-
postgreSQLの正規表現
おすすめ情報