Кстати, вот еще что... Было бы не плохо выводить в списке домов не тоько дом с чистым номером, т.е. без блока, а и дома с блоком, и, при поиске, если оставляется пустым поле "Блок", то и искать в домах без блока, а если надо все дома и все блоки, то при поиске в поле "Блок" указывать "*", например.
Значит, чтобы в списке уникальных домов получить блок делаем следующее:
В файле web/listuser.pl ищем:
# варианты домов на выбранной улице и приводим к следующему виду:
# варианты домов на выбранной улице
if( $adr_street && $adr_block_id )
{ # выбрана улица ($adr_street) и поле `Дом` существует в dopfields
$houses='';
$url="$scrpt&f=d&tmpl=$template_adr&dopfield_full_$adr_street_id=1&dopfield_$adr_street_id=$adr_street&dopfield_full_
$adr_house_id=1&dopfield_$adr_house_id=";
$sql="SELECT r.rev,dv.parent_id FROM dopvalues dv INNER JOIN rev_users r ON r.rev=dv.revision AND r.id=dv.parent_id WHERE r.template_num=2 AND dv.field_value='$adr_street' AND dv.dopfield_id='$adr_street_id'";
$sql="SELECT t1.rev,dv.field_value house FROM dopvalues dv INNER JOIN ($sql) t1 ON t1.rev=dv.revision WHERE dv.dopfield_id='$adr_house_id' AND dv.field_value";
$sql="SELECT t2.house,dv.field_value block FROM dopvalues dv INNER JOIN ($sql) t2 ON t2.rev=dv.revision WHERE dv.dopfield_id='$adr_block_id' GROUP BY concat(t2.house,dv.field_value)";
$sth=&sql($dbh,$sql,"Все уникальные дома на улице № $adr_street");
while( $p=$sth->fetchrow_hashref )
{
$house=int $p->{house};
$block=&Filtr_out($p->{block});
$houses.=&ahref($url.$house."&dopfield_$adr_block_id=$block",$house.$block);
}
$OUT.=&MessX("$dopf_a_to_name{_adr_house} на улице ".&bold($streets{$adr_street}).' :'.&div('nav',$houses),0,1) if $houses;
}
Для решения второй "задачи":
в том же файле ищем:
foreach $id ( sort{ ($sort==$a) cmp ($sort==$b) } @fields )
{
$val=$F{"dopfield_$id"};
$nosearch=($val=~/^\s*$/);
заменяем на:
foreach $id ( sort{ ($sort==$a) cmp ($sort==$b) } @fields )
{
$val=$F{"dopfield_$id"};
$nosearch=($val=~/^\s*$/) && $id!=$dopf_a_to_id{_adr_block};
$val='%' if $id==$dopf_a_to_id{_adr_block} && $val eq '*';
Результаты в аттаче ;)