こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHPを使ったPOSTについて教えてください。

<body>
<form action="" method="post">
<select id="list" name="list" >
<option value="">選択してください</option>
<option value="ichigo">いちご</option>
<option value="orange">オレンジ</option>
</select>
<input type="text" size="30" id="word" name="word" >
<input type="submit" value="検索">
</form>

<?php
$array = array();
$array['green'] = 'グリーン';
$array['red'] = 'レッド';
if (isset($_REQUEST['word'])) {
$array ['key']=$_REQUEST['word'];
}
if (isset($_REQUEST['list'])) {
$array ['List']=$_REQUEST['list'];
}
print_r($array);
?>
</body>

これを表示した場合、はじめのページでは
Array ( [green] => グリーン [red] => レッド )
と表示されますが、フォームを実行すると、このように表示されます。
Array ( [green] => グリーン [red] => レッド [key] => [List] => )

これを、もしkeyやListの値が何も入力されなかった場合、listで言えば「選択してください」が選択されで実行された場合、[key] =>や [List] =>を表示しないと言うことはできますか?
例えばlistをデフォルトの「選択してください」のまま選択せず、テキスト欄に「テキスト」と入力したら、
Array ( [green] => グリーン [red] => レッド [key] => テキスト)
とこのように[List] =>は省きたいです。

そのためにissetを使ったつもりでしたが、うまくいきませんでした。
どうしたら良いでしょうか?教えてください、よろしくお願いします。

投稿日時 - 2012-03-29 15:37:30

QNo.7390705

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

wordやlistが""であってもPOSTされれば$_REQUEST["word"]や$_REQUEST["list"]
は、セットされます。
emptyなどでもチェックできますが、0などが評価されることも
考慮すると、単純に文字列の比較をする方がよいかもしれません。
(もちろん事前にisset処理をいれないとインデックスエラーがでます)

<body>
<form method="post">
<select id="list" name="list" >
<option value="">選択してください</option>
<option value="ichigo">いちご</option>
<option value="orange">オレンジ</option>
</select>
<input type="text" size="30" id="word" name="word" >
<input type="submit" value="検索">
</form>

<?php
$array = array();
$array['green'] = 'グリーン';
$array['red'] = 'レッド';
if (isset($_REQUEST['word']) && $_REQUEST['word']!=="") {
$array ['key']=$_REQUEST['word'];
}
if (isset($_REQUEST['list']) && $_REQUEST['list']!=="") {
$array ['List']=$_REQUEST['list'];
}
print_r($array);
?>
</body>

投稿日時 - 2012-03-29 18:16:46

あなたにオススメの質問