Ответ
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 была строка, ведущая на следующий запрос
- is 'junction', it has no elements, Demolution 20.02.2007 20:35
- нехороший код, Misha v.3 [M] 20.02.2007 20:54 / 20.02.2007 20:55
- Ответ, Demolution 20.02.2007 21:58 / 20.02.2007 22:01
- Ответ, Misha v.3 [M] 20.02.2007 22:16 / 20.02.2007 22:18
- Ответ, Demolution 20.02.2007 22:44
- Ответ, Misha v.3 [M] 21.02.2007 02:44