2012-01-17 73 views
0

使用1.7,獲取從以逗號分隔的輸入字段陣列 - 的Joomla 1.7

現在我有這樣的:

<input type="text" name="searchword" class="keyword_search_input" size="32" maxlength="255" value="<? echo JRequest::getString('searchword'); ?>" placeholder="<? echo JText::_('Keyword(s)'); ?>"/><br /> 

但是我希望把用空格或逗號分隔的關鍵字到一個數組將傳遞到這一點:

$this->keywords = JRequest::getVar('searchword'); 

if ($keywords != "") $where_clause[] = ' s.keywords LIKE "%'.$keywords.'%"'; 

function getSearchword(){ 

     return $this->keywords; 

    } 

任何幫助,將不勝感激......

尼克

更新:

我已經想通了。感謝@travega指引我朝着正確的方向前進。這裏是我的輸入字段:

$this->keywords = JRequest::getVar('searchword'); 

這個詞在此字符串由逗號和空格分隔然後:

<input type="text" name="searchword" class="keyword_search_input" size="32" maxlength="255" value="<? echo JRequest::getString('searchword'); ?>" placeholder="<? echo JText::_('Keyword(s)'); ?>"/><br /> 

這在我Controller.php這樣傳遞一個字符串的構造函數通過放置到一個數組爆炸:

$this->keywords_array = explode(", ",$this->keywords); 

的用戶inputed話這個數組然後比較關鍵字的MySQL數據庫:

if ($keywords != "") $where_clause[] = ' s.keywords LIKE "%'.$this->keywords_array[0].'%" OR s.keywords LIKE "%'.$this->keywords_array[1].'%" '; 

我對這個解決方案的唯一問題是我的搜索僅限於keyword_array中的兩個值。我想找到一種方法來設置搜索值的數量等於數組中的值的數量...

回答

0

我不知道什麼格式您「searchword」字符串將在但如果我正確理解你想在你的「searchword」字符串中建立多個關鍵字,然後傳回給你的getSearchword()函數。

爲此,您可以使用javaScript將新的搜索詞添加到您的字符串中,因爲它們已添加。每次添加一個搜索詞時,都要添加一個逗號來分隔它們。當你把你的表格線將到達這樣的:

hello,world,foo,bar 

,所以你可以使用爆炸()函數在PHP把它變成「searchwords」

$keywords_array = explode(",",$this->keywords); 
+0

兩個問題的數組:1 。你能指點我一個JS功能來做到這一點嗎? 2.如何修改$ where_clause來搜索數組中的所有單詞? – 2012-01-18 17:36:03

+0

1.這取決於你的頁面是如何工作的。但是如果你的用戶輸入一個字符串,如「我的名字是bob」並提交表單,那麼處理搜索字符串會更容易,因爲你可以在空白處「爆炸」字符串,例如爆炸(「」,$關鍵字);.爲此,你不需要任何JS來建立你的字符串。否則,如果您的用戶在多次迭代中輸入關鍵字,那麼您可以使用jQuery來執行:$(「#foo」)。val();獲取「foo」是您輸入元素的ID的值。然後看看將值添加到一個隱藏的輸入字段中,並(在下一個評論中繼續...) – travega 2012-01-19 00:58:03

+0

1.(contd ...)使用類似於:$(「#hiddenFoo」)。val($(「#hiddenFoo」 ).val()+「,」+ $(「#foo」)。val());將值附加到隱藏的輸入字段。 – travega 2012-01-19 01:00:40