アプリ版:「スタンプのみでお礼する」機能のリリースについて

global_register=offの設定で、
HTML検索フォームのチェックボックスから
<input type="radio" name="select" value="male">男
<input type="radio" name="select" value="female">女

を受け取り、それに応じて値を書き換える方法をご教示ください。

「$_POST['select']の値がmaleなら「男」femaleなら「女」という具合です。

if ($_POST['select'] = '$male') {
print $male;

みたいなことをやってみたんですが、ダメっぽいと思ったらダメでした(^^;

A 回答 (6件)

こんにちは。



>$gender['male'] = "男";
>$gender['female'] = "女";
>$sql .= " ORDER BY $gender[$_POST['select']]";

>とやると、MySQLに
>Parse error: parse error, unexpected '[', expecting ']' >in /usr/local/apache/***.php on line **
>と怒られてしまいます。
>あと一歩のような感じがするのですが、、、
>何か間違ってますでしょうか?

$sql .= " ORDER BY " . $gender[$_POST['select']];

としてみて下さい。
$sqlの内容を出力してみるとエラーが発見しやすいですよ。
    • good
    • 0
この回答へのお礼

LancerVIIさん、何度もすみませんです。
$sqlは出力してたのですが、気づきませんでした(^^;。

おかげさまで、無事ラジオボタンの値をとってくることが
できました。
一連の件、本当に勉強になりました。
みなさまに心より御礼申し上げます。

お礼日時:2005/08/30 14:17

普通にswitchすればよいんじゃないすか?



<?PHP
$select=$_POST["select"];
if ($select=="") $select="age10";
$checked[$select]="checked";

switch($select){
case "age10":
$text="10代の文書";
break;
case "age20":
$text="20代の文書";
break;
case "age30":
$text="30代の文書";
break;
case "age40":
$text="40代の文書";
break;
case "age50":
$text="50代の文書";
break;
case "age60":
$text="60代の文書";
break;
}

$body.=<<<eof
<form method="POST" action="$PHP_SELF">
<input type="radio" name="select" value="age10" $checked[age10]>10代
<input type="radio" name="select" value="age20" $checked[age20]>20代
<input type="radio" name="select" value="age30" $checked[age30]>30代
<input type="radio" name="select" value="age40" $checked[age40]>40代
<input type="radio" name="select" value="age50" $checked[age50]>50代
<input type="radio" name="select" value="age60" $checked[age60]>60代
<input type="submit" value="send">
</form>
<hr>
$text
eof;
print $body;
?>
    • good
    • 0
この回答へのお礼

yambejpさん、いつもいつも、
懇切丁寧なご指導をいただき、本当に感謝にたえません。

swich文というのは、過去にC#の勉強をした(けど挫折した)ときにも
出てきましたので、なんとなくわかります。

他の方のレスも一つ一つから試していったところ、#2さんの
連想配列の方法で何とか解決できそうです。

とはいえ、今後大変有用な方法だと思いますので、
参考にさせていただきます。

今後ともよろしくお願い致します。

お礼日時:2005/08/30 14:02

こんにちは。



申し訳ない、追加です。

html側のvalueが変えられないとなるとNo2さんの方法を使用してやればいいと思います。(連想配列)

受け取るデータの形をうまく設計してあげると、コーディング等が楽になる場合もあります。
    • good
    • 0

こんにちは。



後のデータの使い方にもよりますが・・・・
例えば10代、20代・・・・という選択で10とか20という情報を使いたいなら
<input type="radio" name="select" value="10">10代
<input type="radio" name="select" value="20">20代



というようにvalueの値を使いたい値にしてしまえば
$age = $_POST['select'];
これで選択された10やら20やらがそのまま$ageに入りますので使用できます。
例:print $age . "代"

前の質問のようになにか別の形で使いたいとなると前のような形でも
出来ますが選択項目数が増えたりするといちいちifを増やさないといけないので
次の方法等があります。

<input type="radio" name="select" value="0">10代
<input type="radio" name="select" value="1">20代
<input type="radio" name="select" value="2">30代
<input type="radio" name="select" value="3">40代



$ageArray = array ( "10代", "20代", "30代", "40代" );

$age = $_POST['select'];

print $ageArray[$age];

10代が選択されると$_POST['select']には0が入ってきます。
$ageArray[0]には10代という文字列が入っているのでそれが表示できます。
40代なら3が入ってきて$ageArray[3]に40代が入っているのでそれが表示できます。
この方法ですと、仮に選択項目が100個あったとしたらvalueの数字を順次増やしていき、受け取るほうで配列にて項目を用意するだけなので応用が利きます。
    • good
    • 0
この回答へのお礼

LancerVIIさん、たびたびありがとうございました。

valueを0,1,2...にしてもイケそうな感じだったので
いろいろ修正しながら適用してみたのですが、
valueの値が他のjavascriptでも使われているため、
撃沈してしまいました。。。

とはいえ、考え方は大変参考になりました。
本当にありがとうございました。

お礼日時:2005/08/30 13:59

$gender['male'] = "男";


$gender['female'] = "女";

print $gender[$_POST['select']];

はどうでしょ?

この回答への補足

jocoleさん、アドバイスありがとうございます。

最初#3さんの方を試したのですが
#4さん(=#3さん)もおっしゃるように
html側のvalueが変えられない問題があり、
jocoleさんの方法を採らせていただいたのですが、

$gender['male'] = "男";
$gender['female'] = "女";
$sql .= " ORDER BY $gender[$_POST['select']]";

とやると、MySQLに
Parse error: parse error, unexpected '[', expecting ']' in /usr/local/apache/***.php on line **
と怒られてしまいます。
あと一歩のような感じがするのですが、、、
何か間違ってますでしょうか?

補足日時:2005/08/30 13:56
    • good
    • 0

こんにちは。



> if ( $_POST['select'] = '$male' )

まずif内での比較は=でなく==になり、$maleには何が入っているかわかりません。


また、$_POST['select'] にはmaleかfemaleが入ってくるので

$sexStr = "";

if ( $_POST['select'] == "male" ) {
$sexStr = "男";
} else {
$sexStr = "女";
}

でいいのではないでしょうか?

この回答への補足

LancerVIIさん、早速のご教示ありがとうございます。
すみません、質問の単純化のため、男/女の二択な例で
質問してしまいましたが、実際は14のラジオボタンからの択一です。

例えば、以下の例のように増えるとどのような感じになりますでしょうか。

<input type="radio" name="select" value="age10">10代
<input type="radio" name="select" value="age20">20代
<input type="radio" name="select" value="age30">30代
<input type="radio" name="select" value="age40">40代
<input type="radio" name="select" value="age50">50代
<input type="radio" name="select" value="age60">60代

すみません、ご教示いただけますと誠に幸いです。

補足日時:2005/08/30 11:25
    • good
    • 0

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