I do something like the second example in one of my applications. I send the comma-delimited string for use as part of the IN statement.
This basically allows you to symbolize features from your spatial data set based on data passed in through the URL. I pass these URL vars: &group1=129,119,041,005,159,051,011,147,097,015,067,171,081,063,025,093,009,149,079,049,065,003,143,027,039,007,099,121,151,135,107,047,033,031,023,089,001,013,161,109,139,061,055,101,045,127,113,117,167,085,133,073,071,157,105,083,165,077,111,059,115,019,153,125,169,087,043,145,017,131,021,173,035,095,091,155,057,103,075,029,069&group2=137,163,037,141,123&group3=&group4=053 Here is the layer definition: LAYER NAME "airdata" STATUS DEFAULT DATA 'county_thin' TYPE POLYGON TEMPLATE "templates/emiss_imap_template.html" VALIDATION group1 "^[0-9\,]+$" group2 "^[0-9\,]+$" group3 "^[0-9\,]+$" group4 "^[0-9\,]+$" END CLASS NAME "group1" EXPRESSION ('[county_fip]' IN '%group1%') STYLE COLOR 241 238 246 END END CLASS NAME "group2" EXPRESSION ('[county_fip]' IN '%group2%') STYLE COLOR 189 201 225 END END CLASS NAME "group3" EXPRESSION ('[county_fip]' IN '%group3%') STYLE COLOR 116 169 207 END END CLASS NAME "group4" EXPRESSION ('[county_fip]' IN '%group4%') STYLE COLOR 5 112 176 END END END David. -----Original Message----- From: mapserver-users-boun...@lists.osgeo.org [mailto:mapserver-users-boun...@lists.osgeo.org] On Behalf Of Stephen Woodbridge Sent: Tuesday, August 21, 2012 1:16 PM To: mapserver-users@lists.osgeo.org Subject: Re: [mapserver-users] validation block Typically the SQL syntax is column in (a,b,c,d) So based on this [id_bassin] in '%ID_BASSIN%' would be problematic I think because your syntax is: column in 'string' Which is not valid. Also what is your validation for %ID_BASSIN%? Is something like this? ^\([0-9]+(,[0-9]+)*\)$ where ID_BASSIN=(123,234,345) or do you want something like: [id_bassin] in (%ID_BASSIN%) with a valdiation like: ^[0-9]+(,[0-9]+)*$ where ID_BASSIN=123,234,345 -Steve W On 8/21/2012 1:33 PM, Marc-André Trottier wrote: > here is an example of two class in 'adn_station_max_v.map' : > > CLASS > NAME "Information non disponible (grande échelle)" > EXPRESSION ( '[etat]' = 'GRIS' AND [id_bassin] in '%ID_BASSIN%') > GROUP "BASSIN" > MINSCALEDENOM 0 > MAXSCALEDENOM 150000 > STYLE > SYMBOL 'circle' > COLOR 128 128 128 > OUTLINECOLOR 0 0 0 > SIZE 9 > END > > LABEL > COLOR 0 0 0 > OUTLINECOLOR 255 255 255 > ANTIALIAS FALSE > TYPE TRUETYPE > FONT "ubuntu" > SIZE 14 > POSITION auto > FORCE TRUE > END > END > > CLASS > NAME "Seuil d\'inondation majeure" > EXPRESSION ( '[etat]' = 'ROUGE' AND [region_admin_id] in '%ID_REG%') > GROUP "REG_ADMIN" > MINSCALEDENOM 110000 > > STYLE > SYMBOL 'circle' > COLOR 255 0 0 > OUTLINECOLOR 0 0 0 > SIZE 14 > END > > LABEL > WRAP "!" > ALIGN CENTER > COLOR 0 0 0 > OUTLINECOLOR 255 255 255 > ANTIALIAS FALSE > TYPE TRUETYPE > FONT "ubuntu" > SIZE 14 > FORCE TRUE > OFFSET 0 12 > END > END > > if i understant this meant that for a layer, i must validate all > variables of all class even if i don't use them all. > My include of 'adn_station_max_v.map' contains X substitutions in X > class so i must have X validations even if i don't use all X class. > > In my example, i include many class with 'adn_station_max_v.map' but > i'm using only one variable at a time. All class in CLASSGROUP 'REG_ADMIN' > only use 'ID_REG'. > > > 2012/8/21 Stephen Woodbridge <wood...@swoodbridge.com > <mailto:wood...@swoodbridge.com>> > > You probably need to quote: > > 'ID_BASSIN' '[[a-zA-Z0-9]{0,10},??]*' > > "#ID_REG' '[[a-zA-Z0-9]{0,10},??]*' > > And I would be very suspicious that '#ID_REG' is a value identifier > because of the '#' character. > > -Steve W > > > On 8/21/2012 11:38 AM, Marc-André Trottier wrote: > > there is my layer's definition : > > LAYER > VALIDATION > ID_BASSIN '[[a-zA-Z0-9]{0,10},??]*' > #ID_REG '[[a-zA-Z0-9]{0,10},??]*' > END > INCLUDE "../layers/bd/adn_station_max___v.map" > CLASSGROUP "BASSIN" > NAME "adn_station_bassin" > END > > LAYER > VALIDATION > #ID_BASSIN '[[a-zA-Z0-9]{0,10},??]*' > ID_REG '[[a-zA-Z0-9]{0,10},??]*' > END > INCLUDE "../layers/bd/adn_station_max___v.map" > CLASSGROUP "REG_ADMIN" > NAME "adn_station_reg_admin" > END > > with these commented lines a got this error : > msValidateParameter(): Regular expression error. Parameter pattern > validation failed. > > without comment, i got no error. > > CLASSGROUP 'BASSIN' contains many class but each class use only > 'ID_BASSIN' and > CLASSGROUP 'REG_ADMIN' contains many class but each class use > only 'ID_REG' > > is it the right thing to do ? or like i thought, the validation > block > can contains only the variable used by the layer ? > > > > _________________________________________________ > mapserver-users mailing list > mapserver-users@lists.osgeo.__org > <mailto:mapserver-users@lists.osgeo.org> > http://lists.osgeo.org/__mailman/listinfo/mapserver-__users > <http://lists.osgeo.org/mailman/listinfo/mapserver-users> > > > _________________________________________________ > mapserver-users mailing list > mapserver-users@lists.osgeo.__org > <mailto:mapserver-users@lists.osgeo.org> > http://lists.osgeo.org/__mailman/listinfo/mapserver-__users > <http://lists.osgeo.org/mailman/listinfo/mapserver-users> > > > > > _______________________________________________ > mapserver-users mailing list > mapserver-users@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/mapserver-users > _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users