17th January 2011, 23:21
#6
1 out of 1 members found this post helpful.
daca grupezi toate rezultatele intr-unul singur, lucrurile se simplifica un pic:
interogarea ta s-ar schimba in "SELECT GROUP_CONCAT(metakey) AS cuvinteCheie FROM #__sobi2_item WHERE published = 1"
restul (pot fi grupate toate intr-un singur rand de cod, dar asa e mai pe citibil):
Cod:
$cuvinteCheie=explode(',',$column);
$cuvinteCheie=array_map('trim',$cuvinteCheie);
$cuvinteCheie=array_unique($cuvinteCheie);
daca nu doresti sa schimbi interogarea, poti face asa:
Cod:
$cuvinteCheie=implode(',',$column);
$cuvinteCheie=explode(',',$cuvinteCheie);
$cuvinteCheie=array_map('trim',$cuvinteCheie);
$cuvinteCheie=array_unique($cuvinteCheie);
am presupus ca $column este array si contine intotdeauna cel putin un element... ar fi bine sa verifici intai...
Ultima modificare făcută de ant7; 17th January 2011 la 23:26.
18th January 2011, 09:42
#7
1 out of 1 members found this post helpful.
@Cornelius: Exact acelasi rezultat ar fi trebuit sa scoata si interogarea care am scris-o.
Pune asa acolo:
Cod PHP:
$db = &JFactory::getDBO();
$db->setQuery($query);
$query = " SELECT metakey FROM #__sobi2_item WHERE published = 1 ";
$db->setQuery($query);
$column= $db->loadResultArray();
//$column = array( 0 => 'anunturi bmw, bmw 320d, bmw diesel', 1 => 'anunturi bmw, bmw 318i, bmw benzina');
foreach($column as $key => $kwds){
$kwds = explode(',',$kwds);
if(is_array($kwds)){
foreach($kwds as $k){
$keywords[] = trim($k);
}
}
else{
$keywords[] = $kwds;
}
}
//keyworduri unice
$unique_keywords = array_unique($keywords);
print_r($keywords);
//@return: Array ( [0] => aunturi bmw [1] => bmw 320d [2] => bmw diesel [3] => anunturi bmw [4] => bmw 318i [5] => bmw benzina )
//pentru tag cloud
//unde valoarea = numarul de cuvinte gasite
$tags = array_count_values($keywords);
print_r($tags);
//@return: Array ( [anunturi bmw] => 2 [bmw 320d] => 1 [bmw diesel] => 1 [bmw 318i] => 1 [bmw benzina] => 1 )