Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Customising the CMS /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Search Form, Results, Custom Fields

Go to End

17 Posts   5959 Views


Community Member, 30 Posts

27 July 2010 at 2:25am

Been banging my head on the desk for a few hours now trying to get the multiple search terms thing to work, it's really not playing ball.

Any ideas on what I am doing wrong? The code I'm using at the moment in Page.php is below:

   // Start Custom

   $arrSearchQuery = explode(' ',$form->getSearchQuery()); 
   $strSearchQuery = '%'.implode('%',$arrSearchQuery).'%';

	$dos = DataObject::get('Organisation',"(Name LIKE '".$strSearchQuery."'"."OR Address1 LIKE '".$strSearchQuery."'"."OR Address2 LIKE '".$strSearchQuery."'"."OR Address3 LIKE '".$strSearchQuery."'"."OR Phone LIKE '".$strSearchQuery."'"."OR SearchTerm LIKE '".$strSearchQuery."') AND Public=1" );	

   //make our our result set 
   $dosNewRestults = new DataObjectSet();

   if ($dos) 
	$arr = $dos->toArray(); 
	foreach ($arr as $do) 
		$p = new Page(); 
		$p->Title = $do->Name; 
		$p->URLSegment = '/organisations/retrieve_org/'.$do->ID.'/';; 
		$p->Content = $do->Description;;
		$p->HouseNameNumber = $do->HouseNameNumber;; 
		$p->Address1 = $do->Address1;;
		$p->Address2 = $do->Address2;;
		$p->Address3 = $do->Address3;;
		$p->PostCode = $do->PostCode;;
		$p->Latitude = $do->Latitude;;
		$p->Longitude = $do->Longitude;;
		$p->Phone = $do->Phone;;
		$p->Web = $do->Web;;
		$p->Email = $do->Email;;
		$p->MapCategory = $do->MapCategory;;
		$p->SearchTerm = $do->SearchTerm;;
		$p->LegalStatus = $do->LegalStatus;;
		$p->LegalStatusNumber = $do->LegalStatusNumber;;
		$p->ID = $do->ID;;
		$p->Relevance = 1; 
		$p->CanViewType = 'Anyone';

	foreach ($arrSearchQuery as $strSearchQuery) 
	   $strSearchQuery = '%'.$strSearchQuery.'%';

	   //repeat code to do DataOBject::get 
	   //add to $dosNewResults 
   //strip out the html from the results and append them to the results 
   //above - so that the ones with things to buy are first 
   if ($data['Results']->Count() > 0) 
      $arr = $data['Results']->toArray(); 
      foreach ($arr as $do) 
         $do->Content = strip_tags($do->Content); 

   $data['Results'] = $dosNewRestults; 
   // End Custom 

Go to Top