parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Demolution 20.02.2007 21:58 / 20.02.2007 22:01

Вызываю так:
^show_kladr[^if(def $form:cc){$form:cc}{00};^if(def $form:rrr){$form:rrr}{000};^if(def $form:ggg){$form:ggg}{000};^if(def $form:ppp){$form:ppp}{000};^if(def $form:aa){$form:aa}{-1}]
Метод:
@show_kladr[cc;rrr;ggg;ppp;aa]
$link[site.ru/edit2.html?action=show_kladr]
$where_string[^if($cc != 00){cc='$cc' AND }]
$link[^if($cc != 00){$link}{${link}&cc=^$kladr.cc&rrr=-1}]				  
$where_string[^if($rrr != -1){${where_string}rrr='$rrr' AND }{${where_string}rrr<>'000' AND }]
$where_string[^if($ggg != -1){${where_string}ggg='$ggg' AND }{$where_string}]
$where_string[^if($ppp != -1){${where_string}ppp='$ppp' AND }{${where_string}ppp<>'000' AND }]
$where_string[^if($aa != -1){${where_string}aa='$aa'}{${where_string}aa > -1}]
$kladr[^table::sql{SELECT id, name, socr, cc, rrr, ggg, ppp, aa FROM kladr WHERE $where_string ORDER BY name}]
<table border=1>
 <tr> 
  <td>id</td>
  <td>name</td> 
  <td>cc-rrr-ggg-ppp-aa</td>
 </tr>			   
^kladr.menu{ 
 <tr> 
  <td>$kladr.id</td>
  <td><a href="$link">$kladr.name $kladr.socr</a></td>
  <td>${kladr.cc}-${kladr.rrr}-${kladr.ggg}-${kladr.ppp}-${kladr.aa}</td> 
 </tr> 
}			   
</table>
0. Имена полей из документации КЛАДР:
Структура кодового обозначения в блоке "Код":
СС РРР ГГГ ППП АА, где
СС – код субъекта Российской Федерации (региона), коды регионов представлены в Приложении 2 к Описанию классификатора адресов Российской Федерации (КЛАДР);
РРР – код района;
ГГГ – код города;
ППП – код населенного пункта,
АА – признак актуальности наименования адресного объекта.

1. в момент, когда я определяю строковою переменную $link, в $kladr.cc не содержится ничего, т.к. таблица $kladr задается позже

2. Попробовал $link{^if($cc != 00){$link}{${link}&cc=${kladr.cc}&rrr=-1}} получил link
call canceled - endless recursion detected

3. Если делать по-вашему, то значение $link^if($cc == 0){&cc=$kladr.cc&rrr=-1} будет вычисляться многократно (в пределе 180000 раз)
По-моему это плохо. Я пытаюсь построить ссылку до перебора таблицы.

Идея в следующем:
Запрос1: edit2.html?action=show_kladr
Выдает: список регионов

Запрос2: edit2.html?action=show_kladr&cc=50&rrr=-1
Выдает: список районов Моск. обл ($kladr.cc=50 $kladr.rrr=любой, кроме 000 - сама строка Моск. обл.)

Запрос3: edit2.html?action=show_kladr&cc=50&rrr=019&ggg=-1
Выдает: список городов и нас. пунктов Мытищинского р-на Моск. обл. ($kladr.cc=50, $kladr.rrr=019, $kladr.ggg=любой)

Запрос4: edit2.html?action=show_kladr&cc=50&rrr=019&ggg=001&ppp=-1
Выдает: список нас. пунктов г. Мытищи, Мытищинского р-на Моск. обл. ($kladr.cc=50, $kladr.rrr=019, $kladr.ggg=001, $kladr.ppp=любой)

Хочу, чтоб к качестве $link была строка, ведущая на следующий запрос