Много выпадающих списков и чекбоксов для MS+Postgre+PostGIS
Добавлено: 17 ноя 2008, 08:14
Доброго времени суток всем!
Коллеги, продолжаю развивать карту со зверюшками и вот с интересной проблемой столкнулся.
Есть у меня 8 выпадающих списков и 4 блока с чекбоксами (в каждом блоке от 3 до 5 чекбоксов). Далее буду приводить код в перемешку с описанием проблемы и вопросами, для краткости html сокращу (количество Выпадающих списков и чекбоксов).
Код-html:
Есть две таблицы, одна prostokarta_region и animals, в первой геометрия, во второй данные о животных.
Код МАР-файла:
Итак, при такой схеме у меня выводится, если выбраны строго Волк, Цвета и Пол - рисуется на карте соответствующего цвета квадрат (это только в том случае, если зарание известно, что в БД есть волк лесной черного цвета и мужского пола, НО если я не знаю какого он пола или цвета и выберу из выпадающего списка волк: Лесной, Рыжий и Женский, то ничего не закрасится), меняю SQL-запрос на вот такой:
результат, выводятся волки лесные, и !!! все животные белого цвета, а также мужского пола, которые есть в БД!!!
Вторая проблема, в выпдающих списках (волк, заяу и лиса), если заметили имется <select name ="nam" size=1> значение присвоено name ="nam", в этом случае вообще ничего не выводится и на карте, пришлось мне сделать следующее, один выпадающий список с разграничителями:
При такой постановке, животные находятся, но повторяется случай описанный выше, что все рисуется в куче
((
Мне необходимо следующее:
Из выпадающего списка с Волками выбираю Лесной, затем из чекбокса Цвета выбираю Белый и потом из Чекбокса Пол выбираю муж, НО при этом я не знаю (умышленно не знаю, т.е. как будто я пользователь карты, которому не известно, что записано в БД) и у меня на карте закрашиваются соответствующие клетки с животным. Потом аналогично для других животных. И хочу, чтобы можно было выбирать все по отдельности, т.е. выбираю из списка с волками, потом из Зайцев и Лис и мне на карте закрашиваются где такие зверюшки сидят на карте.
Коллеги, продолжаю развивать карту со зверюшками и вот с интересной проблемой столкнулся.
Есть у меня 8 выпадающих списков и 4 блока с чекбоксами (в каждом блоке от 3 до 5 чекбоксов). Далее буду приводить код в перемешку с описанием проблемы и вопросами, для краткости html сокращу (количество Выпадающих списков и чекбоксов).
Код-html:
Код: Выделить всё
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
<text><b>Волк</b></text><br>
<input type="hidden" name="map" value="[map]">
<select name ="nam" size=1>
<option selected></option>
<option value='Лесной'>Лесной</option>
<option value='Полярный'>Полярный</option>
<option value='Степной'>Степной</option>
</select><br>
<text><b>Заяц</b></text><br>
<input type="hidden" name="map" value="[map]">
<select name ="nam" size=1>
<option selected></option>
<option value='Русак'>Русак</option>
<option value='Пятнистый'>Пятнистый</option>
<option value='Степной'>Степной</option>
</select><br>
<text><b>Лиса</b></text><br>
<input type="hidden" name="map" value="[map]">
<select name ="nam" size=1>
<option selected></option>
<option value='Маленькая'>Маленькая</option>
<option value='Чернобурка'>Чернобурка</option>
<option value='Низкая'>Низкая</option>
</select><br>
<text><b>Цвета</b></text><br>
<input type="checkbox" name="col" value='Белый'>Белый<br>
<input type="checkbox" name="col" value='Черный'>Черный<br>
<input type="checkbox" name="col" value='Рыжий'>Рыжий<br>
<text><b>Пол</b></text><br>
<input type="checkbox" name="sex" value='Муж'>муж<br>
<input type="checkbox" name="sex" value='Жен'>Жен<br>
<input type="submit" value="Найти">
<input type="hidden" name="layer" value="prostokarta_region">
<input type="hidden" name="layer" value="base">
<input type="hidden" name="mode" value="browse">
</form>
Код МАР-файла:
Код: Выделить всё
MAP
IMAGETYPE GIF
EXTENT -0.384 -0.383 0.217 -0.245
SIZE 680 612
WEB
TEMPLATE "/ms4w/apps/mslocal/templates/index2.html"
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
END
LAYER
NAME "base"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM prostokarta_region USING SRID=4326"
TYPE POLYGON
CLASS
COLOR 125 234 100
OUTLINECOLOR 100 100 100
END
END
LAYER
NAME "prostokarta_region"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM
(
SELECT prostokarta_region.the_geom AS the_geom,
prostokarta_region.oid AS oid,
animals.name AS aname, animals.color AS acolor, animals.sex AS asex
from prostokarta_region, animals
where (animals.id = prostokarta_region.id) and (animals.name='%nam%') and (animals.color='%col%') and (animals.sex='%sex%')
)
AS new_table USING SRID=4326"
TYPE POLYGON
CLASSITEM "aname"
CLASS
NAME "Лесной"
EXPRESSION 'Лесной'
COLOR 100 100 100
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Полярный"
EXPRESSION 'Полярный'
COLOR 0 0 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Степной"
EXPRESSION 'Стеной'
COLOR 255 255 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Русак"
EXPRESSION 'Русак'
COLOR 100 100 100
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Пятнистый"
EXPRESSION 'Пятнистый'
COLOR 200 100 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Степной"
EXPRESSION 'Степной'
COLOR 200 100 50
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Маленькая"
EXPRESSION 'Маленькая'
COLOR 400 100 50
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Чернобурка"
EXPRESSION 'Чернобурка'
COLOR 500 100 50
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Низкая"
EXPRESSION 'Низкая'
COLOR 700 100 50
OUTLINECOLOR 100 100 100
END
END
END
Код: Выделить всё
SELECT prostokarta_region.the_geom AS the_geom,
prostokarta_region.oid AS oid,
animals.name AS aname, animals.color AS acolor, animals.sex AS asex
from prostokarta_region, animals
where (animals.id = prostokarta_region.id) and (animals.name='%nam%') or (animals.color='%col%') or (animals.sex='%sex%')
Вторая проблема, в выпдающих списках (волк, заяу и лиса), если заметили имется <select name ="nam" size=1> значение присвоено name ="nam", в этом случае вообще ничего не выводится и на карте, пришлось мне сделать следующее, один выпадающий список с разграничителями:
Код: Выделить всё
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
<text><b>Выберите животное</b></text><br>
<input type="hidden" name="map" value="[map]">
<select name ="nam" size=1>
<option selected></option>
<option>---</option>
<option>Волк</option>
<option>---</option>
<option value='Лесной'>Лесной</option>
<option value='Полярный'>Полярный</option>
<option value='Степной'>Степной</option>
<option>---</option>
<option>Заяц</option>
<option>---</option>
<option value='Русак'>Русак</option>
<option value='Пятнистый'>Пятнистый</option>
<option value='Степной'>Степной</option>
<option>---</option>
<option>Лиса</option>
<option>---</option>
<option value='Маленькая'>Маленькая</option>
<option value='Чернобурка'>Чернобурка</option>
<option value='Низкая'>Низкая</option>
</select><br>
<text><b>Цвета</b></text><br>
<input type="checkbox" name="col" value='Белый'>Белый<br>
<input type="checkbox" name="col" value='Черный'>Черный<br>
<input type="checkbox" name="col" value='Рыжий'>Рыжий<br>
<text><b>Пол</b></text><br>
<input type="checkbox" name="sex" value='Муж'>муж<br>
<input type="checkbox" name="sex" value='Жен'>Жен<br>
<input type="submit" value="Найти">
<input type="hidden" name="layer" value="prostokarta_region">
<input type="hidden" name="layer" value="base">
<input type="hidden" name="mode" value="browse">
</form>

Мне необходимо следующее:
Из выпадающего списка с Волками выбираю Лесной, затем из чекбокса Цвета выбираю Белый и потом из Чекбокса Пол выбираю муж, НО при этом я не знаю (умышленно не знаю, т.е. как будто я пользователь карты, которому не известно, что записано в БД) и у меня на карте закрашиваются соответствующие клетки с животным. Потом аналогично для других животных. И хочу, чтобы можно было выбирать все по отдельности, т.е. выбираю из списка с волками, потом из Зайцев и Лис и мне на карте закрашиваются где такие зверюшки сидят на карте.