Hi,

Another possibility:
somevalue = "filter \"datum between '2002-8-8' and '2002-8-9'\""; 

Perhaps this works.

Arnd

-----Ursprüngliche Nachricht-----
Von: mapserver-users-boun...@lists.osgeo.org
[mailto:mapserver-users-boun...@lists.osgeo.org] Im Auftrag von Heiko
Schröter
Gesendet: Donnerstag, 23. April 2009 09:45
An: Steve Lime; mapserver-users@lists.osgeo.org
Betreff: Re: [mapserver-users] Passing single quoted strings

On Mittwoch, 22. April 2009 18:07:11 you wrote:

I've tested teh scenario with 3 different filter strings and attached the
mapserver error logs with DEBUG 5 (in case need be).
The resulting URL strings are taken from apache access log file.
Please let me know if you need the full URL.

Thanks and Regards
Heiko


The OL call:
sacurabiglayer = new OpenLayers.Layer.WMS( "SACURABIG", 
                                           "http://kahlo1/cgi-bin/mapserv";,
        
{map:'/home/schroete/sciadaten/MapServer/country98/heiko5.map',
                                            layers: sacura_big,
                                            "map.layer[SACURABIG]":
somevalue,
                                            transparent: true},
                                            {singleTile:true, isBaseLayer:
false,
                                            buffer:5, wrapDateLine: true,
                                            queryable: true});

Setting of the string in OL:
somevalue = "filter "+"'"+" datum between "+"'"+"2002-8-8"+"'"+" and "+"'"+"

2002-8-9 "+"''";
Results:
MAP.LAYER%5BSACURABIG%5D=filter%20'%20datum%20between%20'2002-8-8'%20and%20'
%202002-8-9%20''&
(ms_error_assembled_string.txt)

Setting of the string in OL:
somevalue = "filter 'datum between '2002-8-8' and '2002-8-9' '";
MAP.LAYER%5BSACURABIG%5D=filter%20'datum%20between%20'2002-8-8'%20and%20'200
2-8-9'%20'&
(ms_error_unescaped_string.txt)

Setting of the string in OL:
somevalue = "filter 'datum between \'2002-8-8\' and \'2002-8-9\' '";
MAP.LAYER%5BSACURABIG%5D=filter%20'datum%20between%20'2002-8-8'%20and%20'200
2-8-9'%20'&
(ms_error_escaped_single_quotes.txt)


The Mapfile Layer definition:
        LAYER
                CONNECTIONTYPE POSTGIS
                NAME "SACURABIG"
                PROCESSING "CLOSE_CONNECTION=DEFER"
                OPACITY 60
                STATUS ON
                METADATA
                        "wms_title" "sacurabig layer"
                        "wms_srs" "init=epsg:4326"
                END
                PROJECTION
                        "init=epsg:4326"
                END
                CONNECTION "user=fei password=foo dbname=fum host=kahlo1"
                DATA "geocenter from sacura_big"
   VALIDATION
     'filter' "^."    # Just for testing
   END
                FILTER "orbitnr=0"
                TYPE POINT
                SIZEUNITS meters
                CLASS
                   NAME "sacura_big_class"
                   STYLE
                        COLOR [farbe]
                        SYMBOL "circle"
                        SIZE 35000
                   END
                END
        END # Layer



> What does the URL OL generate look like? I'm curious how it escapes 
> the text for the URL. That should give us a hint.
>
> Steve
>
> >>> Heiko Schröter <schro...@iup.physik.uni-bremen.de> 04/21/09 1:53 
> >>> AM
>
> Hello,
>
> i have to pass single quoted strings from Open Layer through mapserver 
> to a postgis/postgres database.
>
> i.e. "filter 'value=1 and datum between '2005-1-1' and '2005-1-3' "; 
> The postgres db expects (afaik) the date in a single quoted string.
>
> The problem is that mapserver stops scanning the filter string when 
> coming across the second single quote and bails out.
>
> The Validation string in the mapfile:
>     VALIDATION
>      'filter' "^."
>    END
>
> Even when allowing single quotes explicitly by inserting escaped 
> single quotes in the validation string it doesn't work. Escaping the 
> single quotes in the assembled OL string won't help either.
>
> Does anyone has an idea of how to pass such strings through mapserver ?
>
> Now i do use an ugly hack of converting the date to abstime on the 
> client side (with all the UTC converting hassle) and pass the integer 
> to the db.
> i.e. "filter 'value = 1 and abstime between "+fromDate+" and 
> "+toDate+"'";
>
> MapServer version 5.4.0-rc1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG 
> OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=ICONV 
> SUPPORTS=WMS_SERVER INPUT=TIFF INPUT=EPPL7 INPUT=JPEG INPUT=POSTGIS 
> INPUT=SHAPEFILE
>
> Thanks and Regards
> Heiko
>
>
> _______________________________________________
> 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

Reply via email to