xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: hiron2425 | 投稿日時: 2011/2/27 19:34 | 閲覧: 10425回
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;
}
}
コメント(9)
新しいものから |
古いものから |
ネスト表示 |

Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: rabbit_bit | 投稿日時: 2011/2/27 21:12
基本的に引用しているとおりで動作するのではないでしょうか?
index.phpに追記+テンプレートを編集。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
引用:
ご返事ありがとう御座います。
お世話になります。
実際は、以下のように記述しておりますが、内容はあっていると思います。
しかし、例えば「東京」あるいは「田中」と個々に記入すれば、検索結果が表記されるのですが、
「東京 田中」と複数キーワードで記入しても検索結果には「条件に合うユーザが見つかりませんでした」と表記されます。
宜しくお願いします。
できれば、URLをお知らせしたいのですが会員検索用に使用しているためオープンにできません。
個人的にお知らせできる方法はありますでしょうか?
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_name']) ) {
$match = (!empty($_POST['user_name_match'])) ? intval($_POST['user_name_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_engname', $myts->addSlashes(trim($_POST['user_name']))),"OR");
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
break;
}
}
基本的に引用しているとおりで動作するのではないでしょうか?
index.phpに追記+テンプレートを編集。
ご返事ありがとう御座います。
お世話になります。
実際は、以下のように記述しておりますが、内容はあっていると思います。
しかし、例えば「東京」あるいは「田中」と個々に記入すれば、検索結果が表記されるのですが、
「東京 田中」と複数キーワードで記入しても検索結果には「条件に合うユーザが見つかりませんでした」と表記されます。
宜しくお願いします。
できれば、URLをお知らせしたいのですが会員検索用に使用しているためオープンにできません。
個人的にお知らせできる方法はありますでしょうか?
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_name']) ) {
$match = (!empty($_POST['user_name_match'])) ? intval($_POST['user_name_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'),"OR");
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_from', $myts->addSlashes(trim($_POST['user_name']))),"OR");
$criteria->add(new Criteria('user_engname', $myts->addSlashes(trim($_POST['user_name']))),"OR");
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
$criteria->add(new Criteria('user_engname', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'),"OR");
break;
}
}
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: rabbit_bit | 投稿日時: 2011/2/28 10:11 | 親コメント: #20763
おっしゃっている意味がわかりました。
1.スペース区切りで検索キーワードを受け取る加工
2.受け取ったキーワードを使って、各フィールドを検索させるという作業で問題ないはずです。
こちらでミニテストを行なっていますが,動作しています。
以下は,index.phpを変更する具体的な手順です。(3ステップです)
hiron2425さんの例にしたがって,$_POST['user_name']を受け取った場合の挙動にしております。
(※別のinput(name)を使うようでしたら,そのnameに読み替えてください)
■作業1
作業準備。(この作業は作業3と関係があります。)
if (!empty($_POST['********']) ) {
の部分を
if (!empty($********) ) {
に置き換える。(複数あるので全部)
■作業2
$criteria->addの行を,全部もとに戻す。
例えば、$user_name_match=以下は,
$user_name_match=xoops_getrequest('user_name_match');;
$match = (!empty($user_name_match)) ? intval($user_name_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim(xoops_getrequest('user_name')))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
}
※読みやすくするため,全角スペースで字下げをしています。(コピペでは動作しません)
$user_email_match=
$user_aim_match=
(ほか省略)
も削除(or編集)しているなら全部もとに戻す。
■作業3
各検索用criteria文にスペース区切りの検索語を全て検索させるように工夫する。
/** ▼ 追加1開始 ▼ **/
$KeyWord = xoops_getrequest('user_name');
$ArrKeyword = split(" | ",$KeyWord);
foreach($ArrKeyword as $value){
$name=$value;
/** ▲ 追加1終了 ▲ **/
if (!empty($name) ) {
省略
}
/** ▼ 追加2開始 ▼ **/
}
/** ▲ 追加2終了 ▲ **/
/** ▼ 追加3開始 ▼ **/
foreach($ArrKeyword as $value){
$user_uname=$value;
/** ▲ 追加3終了 ▲ **/
if (!empty($user_uname) ) {
省略
}
/** ▼ 追加4開始 ▼ **/
}
/** ▲ 追加4終了 ▲ **/
以下省略
同様のパターンで,
user_icq
user_aim
user_yim
user_msnm
user_from
user_engname
にも同様の検索ができるようにセット。
以上です。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
rabbit_bit 様、
大変お世話になっております。
ご丁寧なご返事を頂きありがとうございます。
以下のようにして、index.phpを変更いたしました。
$KeyWord = xoops_getrequest('user_name');
$ArrKeyword = split(" | ",$KeyWord);
foreach($ArrKeyword as $value){
$user_name=$value;
if (!empty($user_name) ) {
$user_name_match=xoops_getrequest('user_name_match');
$match = (!empty($user_name_match)) ? intval($user_name_match):XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim(xoops_getrequest('user_name')))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
}
}
}
$KeyWord = xoops_getrequest('user_name');
$ArrKeyword = split(" | ",$KeyWord);
foreach($ArrKeyword as $value){
$user_icq=$value;
if ( !empty($user_icq) ) {
$user_icq_match=xoops_getrequest('user_icq_match');
$match = (!empty($user_icq_match)) ? intval($user_icq_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim(xoops_getrequest('user_name')))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
}
}
}
$KeyWord = xoops_getrequest('user_name');
$ArrKeyword = split(" | ",$KeyWord);
foreach($ArrKeyword as $value){
$user_aim=$value;
if ( !empty($user_aim) ) {
$user_aim_match=xoops_getrequest('user_aim_match');
$match = (!empty($user_aim_match)) ? intval($user_aim_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim(xoops_getrequest('user_name')))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim(xoops_getrequest('user_name'))).'%', 'LIKE'));
break;
}
}
}
しかし、検索フォームに「東京都 田中 大学」或いは「東京都」と文字を入力検索しても、検索結果には「条件に合うユーザが見つかりませんでした」と表記されます。
宜しくお願いいたします。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: rabbit_bit | 投稿日時: 2011/3/1 13:27 | 親コメント: #20765
上記、「作業2」が説明不十分でした。
戻すとき、全部コピーになっていますね。
これではまともに検索できません。
$criteria->add(new Criteria('○○○○○○○○', $myts->addSlashes(trim($********)).'%', 'LIKE'));
$********は、作業1で定義した変数名。
○○○○○○○○は、検索用フィールド名
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
rabbit_bit様、
大変お世話になっております。
お忙しい中、いつも申し訳ございません。
記述を以下のように変更いたしましたところ、画面が真っ白になってしまいました。
***************************
if ( $op == "submit" ) {
$xoopsOption['template_main'] = 'xoopsmembers_searchresults.html';
include XOOPS_ROOT_PATH."/header.php";
$iamadmin = $xoopsUserIsAdmin;
$myts =& MyTextSanitizer::getInstance();
$criteria = new CriteriaCompo();
$KeyWord = xoops_getrequest('user_name');
$ArrKeyword = split(" | ",$KeyWord);
foreach($ArrKeyword as $value){
$user_name=$value;
if (!empty($user_name) ) {
$user_name_match=xoops_getrequest('user_name_match');
$match = (!empty(user_name_match)) ? intval($user_name_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($user_name))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
}
}
}
foreach($ArrKeyword as $value){
$user_icq=$value;
if ( !empty($user_icq) ) {
$user_icq_match=xoops_getrequest('user_icq_match');
$match = (!empty($user_icq_match)) ? intval($user_icq_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($user_name)), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($user_name))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
}
}
}
foreach($ArrKeyword as $value){
$user_aim=$value;
if ( !empty($user_aim) ) {
$user_aim_match=xoops_getrequest('user_aim_match');
$match = (!empty($user_aim_match)) ? intval($user_aim_match) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($user_name)), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($user_name))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($user_name)).'%', 'LIKE'));
break;
}
}
}
***************************
どうぞ宜しくお願いいたします。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: rabbit_bit | 投稿日時: 2011/3/2 15:14 | 親コメント: #20767
$match = (!empty(user_name_match)) ? intval($user_name_match) : XOOPS_MATCH_START;
PHPの構文がおかしいですよ。
この部分は変更不要です。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
お世話になっております。
引用:
$match = (!empty(user_name_match)) ? intval($user_name_match) : XOOPS_MATCH_START;
PHPの構文がおかしいですよ。
この部分は変更不要です。
すいません。
$match = (!empty($user_name_match)) ? intval($user_name_match) : XOOPS_MATCH_START
に修正したところ、画面が無事表示されました。
しかし、まだ検索フォームに「東京 田中 大学」と入力しても検索結果には「条件に合うユーザが見つかりませんでした」と表記されます。
仕様環境による違いあるのでしょうか?
ちなみに、レンタルサーバーで運用(PHP5、MySQL 4.1)しております。
何卒、宜しくお願いいたします。
Re: xoopsmembersモジュールで複数キーワード検索(AND検索)をしたい。
投稿者: rabbit_bit | 投稿日時: 2011/3/4 2:02 | 親コメント: #20769
PHP構文がおかしいです。
$match = (!empty($_POST['********_match'])) ? intval($_POST['********_match']) : XOOPS_MATCH_START;
とすべきです。
コピペよりもコードの意味を把握されたほうが近道かも(^o^)/