Есть вот такой небольшой запрос, который получает список всех значений и рядом приписывает кол-во ответов.
$xflist = dle_cache( $xfname, $config['skin'] );
if(!$xflist) {
$sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
while ( $rows = $db->get_row( $sql_result ) ) {
$xfields[] = $rows;
}
$stack = array();
foreach($xfields as $value){
if($value[xfields]){
$row = xfieldsdataload($value[xfields]);
if($row[$xfname]){
$rowdata = explode( "~", $row[$xfname]);
foreach($rowdata as $value){
if($value){
$value = trim($value);
array_unshift($stack, $value);
}
}
}
}
}
sort ($stack);
$stack = array_count_values( $stack );
foreach( $stack as $value => $count ){
$xflist .= "<option value=" . $value . ">" . $value ." (" .$count . ")</option>";
}
create_cache( $xfname, $xflist, $config['skin'] );
}
echo $xflist;
Из сроки "_post" в базе он ищет ячейку xfields и все значения стэкует списком option.
НО! иногда один пост(новость) может иметь несколько значений одновременно, и тогда он выдает все через запятую вместо того чтобы писать отдельно списком:
Т.е одна запись, может иметь несколько значений и их нужно выводить отдельно а он выводит через запятую