[mapserver-users] Bug? map_layer_filter

Lowther, David W dlowther at ou.edu
Tue Oct 29 06:58:11 PST 2002


Bjarni,

I have tried a couple more things.

1) 
<input name="map_sqlParcel_data" value="the_geom from (select oid,* from
a047parcel where pnum in
('0000-29-24N-05W-3-100-00','0000-30-24N-05W-4-100-00')) as foo">

works fine.

2) 
<input type=hidden name="map_sqlParcel_data" value="the_geom from (select
oid,* from a047parcel) as foo">
<input type=hidden name="map_sqlParcel_filter" value="pnum in
('0000-29-24N-05W-3-100-00','0000-30-24N-05W-4-100-00')">

fails with error:
msPOSTGISLayerWhichShapes(): Query error. prep_DB:Error executing POSTGIS
DECLARE statement (0.6 failed - retried 0.5 and it failed too). DECLARE
mycursor BINARY CURSOR FOR SELECT
asbinary(force_collection(force_2d(the_geom)),'NDR'),OID::text from (select
oid,* from a047parcel) as foo WHERE (pnum in ) and (the_geom && setSRID(
'BOX3D(-98.1769012540527 36.1434604724575,-97.4028596973514
36.6100900285963)'::BOX3D,find_srid('','a047parcel','the_geom') )) 

Aren't 1 and 2 essentially doing the same thing? Do you think this is a bug?

Dave


-----Original Message-----
From: Bjarni Pjetursson [mailto:Bjarni.Pjetursson at tietoenator.com]
Sent: Tuesday, October 29, 2002 8:56 AM
To: 'Lowther, David W'
Cc: mapserver-users at lists.gis.umn.edu
Subject: SV: [mapserver-users] map_layer_filter


Hi Dave,
In this case, you'll have to use javascript to quote your string correctly:

function onPageLoad() {
      if (document.mapserv.map_layername_filter.value.substring(0,1) !=
"\"") {
          document.mapserv.map_layername_filter.value = '"' +
document.mapserv.map_layername_filter.value + '"';
      }

Place this function in the head of your template and call it with an onLoad
trigger in the body-tag.

This will place your string in double-plings IF it not already is. (Not
pretty - but it works.)

Regards
Bjarni Thor Pjetursson

> -----Oprindelig meddelelse-----
> Fra:	Lowther, David W [SMTP:dlowther at ou.edu]
> Sendt:	29. oktober 2002 15:30
> Til:	Bjarni Pjetursson; Lowther, David W
> Cc:	mapserver-users at lists.gis.umn.edu
> Emne:	RE: [mapserver-users] map_layer_filter
> 
> Bjarni,
> 
> I'm not sure how to do this with a more complex filter like:
> 
> "pnum in ('3400-00-001-001-0-001-00','3400-00-001-001-0-002-00')"
> 
> What would you set the value of map_layername_filter to for the above
> filter?
> 
> It seems from some further investigation that there are several characters
> that will cause the filter to be truncated ',(,_ 
> Are there others? 
> Is there any way around this?
> 
> Thanks for your help,
> 
> Dave
> 
> -----Original Message-----
> From: Bjarni Pjetursson [mailto:Bjarni.Pjetursson at tietoenator.com]
> Sent: Tuesday, October 29, 2002 3:34 AM
> To: 'Lowther, David W'
> Cc: mapserver-users at lists.gis.umn.edu
> Subject: SV: [mapserver-users] map_layer_filter
> 
> 
> Try quoting your field with both single-plings and double-plings like this
> <input type="text" name="map_layername_filtername" value='"conditions"'>
> Regards
> Bjarni Thor Pjetursson
> 
> > -----Oprindelig meddelelse-----
> > Fra:	Lowther, David W [SMTP:dlowther at ou.edu]
> > Sendt:	28. oktober 2002 21:56
> > Til:	Mapserver-Users (E-mail)
> > Emne:	[mapserver-users] map_layer_filter
> > 
> > Howdy List,
> > 
> > I'm trying to pass in a setting for map_layer_filter from a form. It
> looks
> > something like this:
> > 
> > <form method="post" action="http://domain/cgi-bin/mapserv.exe"
> target=map
> > name="Master">
> > 	<input type=hidden name="map" value="something.map">
> > 	<input type=hidden name="map_sqlParcel_filter" value="pnum in
> > ('3400-00-001-001-0-001-00','3400-00-001-001-0-002-00')">
> > 	<input type=hidden name=layers value="cnty_poly sqlParcel">
> > </form>
> > 
> > The layer comes from PostGIS and everything works fine when set the
> filter
> > in the mapfile. I get an error that looks like this:
> > 
> > msPOSTGISLayerWhichShapes(): Query error. prep_DB:Error executing
> POSTGIS
> > DECLARE statement (0.6 failed - retried 0.5 and it failed too). DECLARE
> > mycursor BINARY CURSOR FOR SELECT
> > asbinary(force_collection(force_2d(the_geom)),'NDR'),OID::text from
> > (select
> > oid,* from a047parcel) as foo WHERE (pnum in ) and (the_geom && setSRID(
> > 'BOX3D(-98.1769012540527 36.1434604724575,-97.4028596973514
> > 36.6100900285963)'::BOX3D,find_srid('','a047parcel','the_geom') )) 
> > 
> > My best guess is that this has something to do with the quotation marks
> > coming from the form. Does anybody have any ideas on this one?
> > 
> > Thanks for your help.
> > 
> > David Lowther



More information about the MapServer-users mailing list