スレッド表示 | フラット表示〕 全トピック 920 件中 607 番目 次≫ ≪前

HTMLのチェックボックスの値をPHPで取得したい

created: 2004-05-19 21:12 | modified: 2004-05-24 16:25 | reply: 3

[1599] HTMLのチェックボックスの値をPHPで取得したい

user: ひろ☆彡 | created: 2004-05-19 21:12
はじめまして。ひろ☆彡と申します。

過去検索して、何度も同じ様な質問がありましたが、
どうしてもうまくいかなくて、お送り致しました。

環境ですが、Linux(Redhat)に
apache2.0.49
php4.3.6
postgresql7.4.2
をインストールしております。

質問の内容は、HTMLで書いたForm内のチェックボックスの値を
PHP側で取得したい、というものです。

下記には、幾つかのサイト訪問した簡単なPGです。
[hoge.html]
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<title>Test Test Test</title>
</head>
<form action="hoge.php">
<input type="checkbox" name="fCheck[0]" value="1"> hoge <br>
<input type="checkbox" name="fCheck[1]" value="2"> foo <br>
<input type="checkbox" name="fCheck[2]" value="3"> bar <br>
<input type="hidden" name="fCheckSize" value="3">
<input type="submit" value="O K">
</form>
</html>

[hoge.php]
<?php
// 言語と文字コードの設定
mb_language('Japanese');
mb_internal_encoding('EUC-JP');
for( $i=0; $i < $fCheckSize; $i++ ) {
if( $fCheck[$i] ) {
printf("i = $i <br>\n");
printf("$fCheck[i] = $fCheck[$i] <br>\n");
printf(" Yes Check!! <br>\n");
}
else {
$fCheck[$i] = 0;
printf("i = $i <br>\n");
printf("$fCheck[i] = $fCheck[$i] <br>\n");
printf(" No Check!! <br>\n");
}
}
?>

このPGを実行し、チェックボックス"hoge"を選択しても画面には値が1つも表示されません。
また、エラーも表示されません。
唯一表示されるのは、アドレスバーの所に
「・・・hoge.php?fCheck%580%50=1&FCheckSize=3」
と表示されるのみでした。
選択されているものは値をそのまま使用し、選択されていないものは =0 と代入をしたいのです。
(この部分はまだ書いておりませんが...)
ここまでで、何か間違っている部分があるのでしょうか?

また、register_globals は、今現在両方とも Off です。
が、セキュリティの問題があって、出来れば on にしない方がよいと書かれておりました。
社内部の方のごく一部の方のみ使用するシステムを作成していきたいので、出来ればセキュリティは強化しておきたいのです。

何方かアドバイスをお願い致します。
reply: 1600 返信 編集 削除

[1600] $_POST・$_GET

user: hamaji | created: 2004-05-19 23:07
こんばんは。
この手の質問何回も目にしますね。。。。

register_globalsの値がoffの場合、フォームの変数を『$変数名』では取得できません。
http://www.php.net/manual/ja/language.variables.external.php

このサイトにも管理人さんがご丁寧にTOPに書いてくれてますね。

<input type="checkbox" name="fCheck[0]" value="1"> hoge <br>

GETメソッドなら$_GET[fCheck]
POSTメソッドなら$_POST[fCheck]
で取得します。
それと気になった点。。。
for( $i=0; $i < $fCheckSize; $i++ ) {
if( $fCheck[$i] ) {
printf("i = $i <br>\n");
printf("$fCheck[i] = $fCheck[$i] <br>\n");
printf(" Yes Check!! <br>\n");
}
else {
$fCheck[$i] = 0;
printf("i = $i <br>\n");
printf("$fCheck[i] = $fCheck[$i] <br>\n");
printf(" No Check!! <br>\n");
?余計なお世話かもしれませんが、for文は
for( $i=0; $i < $_GET[fCheckSize]; $i++ ) {
printf("i = $i <br>\n");
printf("$_GET[fCheck][i] = " . $_GET[fCheck][$i]
if( $_GET[fCheck][$i] ) {
printf(" Yes Check!! <br>\n");
}
else {
printf(" No Check!! <br>\n");
}
}
と書いたほうがコード量が減ってすっきりします。

?外部から来るべきGETやPOSTの変数に値を入れるようなことはしないほうがよいと思います。
もしやるなら、スクリプト内で別の変数を用意しましょう。
$fCheck[$i] = 0;

?これでは正しく表示されません。ダブルクォート内の変数は変数として認識されます。
printf("$fCheck[i] = $fCheck[$i]);
これは
printf("\$fCheck[i] = " . $fCheck[$i]); 
と書くか、
printf("\$fCheck[i] = {$fCheck[$i]}); 
などと書きましょう。

もう少し、PHPマニュアルをお読みになることをお勧めします。
Parent: 1599  reply: 1603 返信 編集 削除

[1603] Re:$_POST・$_GET

user: ひろ☆彡 | created: 2004-05-20 14:07
hamajiさん、ご返答ありがとうございます。

お教え下さった通り、少々書き換えてみます。


> もう少し、PHPマニュアルをお読みになることをお勧めします。
実際、PHPマニュアルを読んで『どうやったらHTMLと繋がるのか?』がイマイチ理解出来ていませんでした。
(簡単に繋がるから、と教わったのですが...)

他サイトを読んで、少しずつ書きながらテスト→少しずつ書きながらテストを行っていたのです。

マニュアルは全く読んでいない訳ではないのです。
言い訳になるかもしれませんが、解っていただきたいと思います。
Parent: 1600  reply: 1608 返信 編集 削除

[1608] 出来ました(^.^)

user: ひろ☆彡 | created: 2004-05-24 16:25
HTML側は、
<form action="./hoge.php" method="post">
とだけ変更しています。
他は同じなので省きます。

<?php
mb_language('Japanese');
mb_internal_encoding('EUC-JP');
for( $i=0; $i < $_POST['fCheckSize']; $i++ ) {
printf("i = $i <br>\n");
if( $_POST['fCheck_0'][$i] ) {
printf(" Yes Check!! <br>\n");
}
else {
printf(" No Check!! <br>\n");
}
}
?>

<form action="./hoge.php" method="post">
としたのは、今作成しているプログラムがmethod="post"なので入れました。
わかってみれば、何で悩んでたのかな?って思います。
やっぱり、不勉強ですね。

ありがとうございました。
Parent: 1603  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 607 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑