お世話になります。詳細は以下になります。
■前提
・楽天、Amazon、Yahooの各APIを利用中。
■やりたいこと
・検索ウィンドウを利用。その下にチェックボックスを配置。チェックボックスがcheckedになっていたら、任意の検索キーワードを追加。
例:検索ボックスに「vaio」と入力し、チェックボックス「赤」をチェックすると、「vaio 赤」で検索。
・検索ボタン押下(検索結果表示)後もcheckedは保持。
文字数制限の関係で、現在のソースコードはコメント欄に書かせていただきます。
何卒よろしくお願い致します。
■定義ファイル
define('RED', '0');
define('BLACK', '1');
……
$COLOR = array(
'赤',
'黒',
…… );
■検索パラメータ編集・取り出し処理
function SearchParam($button)
{
$param = array();
$param['keyword'] = ''; // 検索キーワード
~中略~
$param['color']RED] = 0;
$param['color'][BLACK] = 0;
……
if ( $button == '絞り込み' ) {
// 設定された内容を確定
if ( array_key_exists('color', $_POST) ) {
// チェックボックスがチェックされている
foreach ( $_POST['color'] as $key => $id ){
$param['color'][$id] = '1'; // 選択済み状態
}
}
} else {
// 前回の設定内容を反映
$param['color'][RED] = $_SESSION['PARAM']['color'][RED];
$param['color'][BLACK] = $_SESSION['PARAM']['color'][BLACK];
……
}
~後略~
■検索ボックス、チェックボックス作成
<form name="search" class="search" action="http://example.com" method="post">
<input type="text" name="keyword" id="form" value="">
<input type="button" id="hogehoge" value="検索" onclick="javascriptの処理名()">
<?php
function Checkbox($color)
{
$checked = array(
'', // 赤
'', // 黒
…… );
// 選択されている項目を'checked'に
if ( is_array($colors) ) {
$i = 0;
foreach ( $colors as $color ){
if ( $color ) { // チェックされている
$checked[$i] = ' checked';
}
$i++;
}
}
?>
<input type="checkbox" name="col[]" value="0" <?=$checked[0] ?>>赤
<input type="checkbox" name="col[]" value="1" <?=$checked[1] ?>>黒
……
<input type="button" onclick="javascriptの処理名2">
<?php
}
?>
■検索部分
~前略~
$request = array(); // パラメータクリア
// キーワード
$request['keyword'] = $param['keyword']; // キーワード
} else {
return;
}
if ( array_key_exists('col', $_POST) ) {
// チェックボックスがチェックされている
foreach ( $_POST['col'] as $key => $id ){
$param['col'][$id] = '1';
}
$request['keyword'] .= (($request['keyword']) ? ' ' : '') . "ここに、チェックボックスの値に応じ「赤」「黒」などを追加できる処理を入れたい";
}
いろいろ無駄なコードもあるかもしれません。
実現にjavascriptが必要でしたら、それでも構いません。
また、やりたいことが実現できれば、大幅にコードが変わってもまったく問題ありません。
何卒よろしくお願い致します。
下のコードを追加してみてください。
<?php if ( array_key_exists('col', $_POST) ) { // チェックボックスがチェックされている foreach ( $_POST['col'] as $key => $id ) { $param['col'][$id] = '1'; } //追加処理 $str_color = ''; foreach ($_POST['col'] as $val) { $str_color .= ' ' . $COLOR[$val]; } $request['keyword'] .= (($request['keyword']) ? ' ' : '') . $str_color; } ?>
(document.(フォームのname).(チェックボックスのname).checked)で、チェックされているかは判定できますよ。赤、黒それぞれで判定して追加すればできると思いますよ。
pogpiさん
ありがとうございます。
Javascriptでの方法ですね。
こちらでも実現できたのだろうと思いますが、早く実装できたsnow0214さんをBAにさせていただきました。
ご教示いただいた内容は、別のところで参考になりました。
ご回答頂きありがとうございました。
下のコードを追加してみてください。
<?php if ( array_key_exists('col', $_POST) ) { // チェックボックスがチェックされている foreach ( $_POST['col'] as $key => $id ) { $param['col'][$id] = '1'; } //追加処理 $str_color = ''; foreach ($_POST['col'] as $val) { $str_color .= ' ' . $COLOR[$val]; } $request['keyword'] .= (($request['keyword']) ? ' ' : '') . $str_color; } ?>
snow0214さん
ありがとうございました。
正直、ここで2週間近く詰まっていたのですが、あっという間に解消しました。
アホみたいな感想ですが、まるで魔法にかかったようです。
己の未熟さを恥じ入るばかりです。
本当にありがとうございました。
snow0214さん
2014/04/15 21:49:19ありがとうございました。
正直、ここで2週間近く詰まっていたのですが、あっという間に解消しました。
アホみたいな感想ですが、まるで魔法にかかったようです。
己の未熟さを恥じ入るばかりです。
本当にありがとうございました。