XOOPS Cube日本サイト (タグ: スペースで区切)
http://dev.xoopscube.jp/tag/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%A7%E5%8C%BA%E5%88%87
最新公開記事
-
xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
http://dev.xoopscube.jp/forum/6822
xoopsmembersモジュールをカスタマイズいたしました。ところで、下記のフリーワード検索の、フリーワードのテキストボックスを一つのみ表示させて、複数キーワード単語(ユーザー名、その他の情報、居住地、本名)をスペースで区切ったキーワード検索(AND検索)に変更したいのですが、この場合どのように書き換えることができますでしょうか?いろいろ調べても私の知識では難しいです。どなたかわかる人がいましたら、どうぞ宜しくお願いいたします。 ***** xoopsmembersモジュールのカスタマイズ *****検索フォームは、 <input type="text" name="user_freeword"....として表示。 index.phpの if ( $op == "form" ) { 以下に、 $freeword_text = new XoopsFormText("", "user_freeword", 30, 60); $freeword_match = new XoopsFormSelectMatchOption("", "user_freeword_match"); $freeword_tray = new XoopsFormElementTray('フリーワード', "&nbsp;"); $freeword_tray->addElement($freeword_match); $freeword_tray->addElement($freeword_text);と定義した$freeword_trayを加えました。 $form->addElement($freeword_tray);キーワード一つで、 uname(ユーザーiD) bio(その他情報) user_from(居住地) name(本名)を一括検索できるように変更しました。 index.phpの if ( $op == "submit" ) { $xoopsOption['template_main'] = 'xoopsmembers_searchresults.html'; include XOOPS_ROOT_PATH."/header.php"; $iamadmin = $xoopsUserIsAdmin; $myts =& MyTextSanitizer::getInstance(); $criteria = new CriteriaCompo(); 以下に、 if ( !empty($_POST['user_freeword']) ) { $match = (!empty($_POST['user_freeword_match'])) ? intval($_POST['user_freeword_match']) : XOOPS_MATCH_START; switch ( $match ) { case XOOPS_MATCH_START: $criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('bio', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); break; case XOOPS_MATCH_END: $criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR"); $criteria->add(new Criteria('bio', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR"); $criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR"); $criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR"); break; case XOOPS_MATCH_EQUAL: $criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_freeword']))),"OR"); $criteria->add(new Criteria('bio', $myts->addSlashes(trim($_POST['user_freeword']))),"OR"); $criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_freeword']))),"OR"); $criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_freeword']))),"OR"); break; case XOOPS_MATCH_CONTAIN: $criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('bio', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); $criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR"); break; } }
xoopsmembersモジュールをカスタマイズいたしました。
ところで、
下記のフリーワード検索の、
フリーワードのテキストボックスを一つのみ表示させて、
複数キーワード単語(ユーザー名、その他の情報、居住地、本名)
をスペースで区切ったキーワード検索(AND検索)に変更したいのですが、
この場合どのように書き換えることができますでしょうか?
いろいろ調べても私の知識では難しいです。
どなたかわかる人がいましたら、どうぞ宜しくお願いいたします。
***** xoopsmembersモジュールのカスタマイズ *****
検索フォームは、
<input type="text" name="user_freeword"....
として表示。
index.phpの
if ( $op == "form" ) {
以下に、
$freeword_text = new XoopsFormText("", "user_freeword", 30, 60);
$freeword_match = new XoopsFormSelectMatchOption("", "user_freeword_match");
$freeword_tray = new XoopsFormElementTray('フリーワード', " ");
$freeword_tray->addElement($freeword_match);
$freeword_tray->addElement($freeword_text);
と定義した$freeword_trayを加えました。
$form->addElement($freeword_tray);
キーワード一つで、
uname(ユーザーiD)
bio(その他情報)
user_from(居住地)
name(本名)
を一括検索できるように変更しました。
index.phpの
if ( $op == "submit" ) {
$xoopsOption['template_main'] = 'xoopsmembers_searchresults.html';
include XOOPS_ROOT_PATH."/header.php";
$iamadmin = $xoopsUserIsAdmin;
$myts =& MyTextSanitizer::getInstance();
$criteria = new CriteriaCompo();
以下に、
if ( !empty($_POST['user_freeword']) ) {
$match = (!empty($_POST['user_freeword_match'])) ? intval($_POST['user_freeword_match']) : XOOPS_MATCH_START;
switch ( $match ) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('bio', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR");
$criteria->add(new Criteria('bio', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR");
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_freeword'])), 'LIKE'),"OR");
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_freeword']))),"OR");
$criteria->add(new Criteria('bio', $myts->addSlashes(trim($_POST['user_freeword']))),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_freeword']))),"OR");
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_freeword']))),"OR");
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('bio', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_freeword'])).'%', 'LIKE'),"OR");
break;
}
}]]>
hiron2425
2011-02-27T19:34+09:00
モジュール開発