Hello Jackie, I will try it! Thanks!
Marie-Eve Gauthier -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Jackie Ng Sent: Monday, July 05, 2010 7:02 AM To: [email protected] Subject: [mapguide-users] Re: How to do a php report Your InvokeUrl command is effectively just passing the string value "GDM_UPI" to the PHP script. What you want to do is have $CurrentSelection as your parameter value. This is a special value which represents the XML of your selection set. In your PHP script, you need to process this XML selection set to collect all the GDM_UPI values to feed to your SQL query. Here's a rough code sample that shows how to process the XML selection. This should go at the beginning of your php code block (after the <?php ). Ignore the < raw > tags if you're not using Nabble to read this message: //Initialize the web tier $webconfig = "webconfig.ini"; //Path to mapguide's webconfig.ini MgInitializeWebTier($webconfig); //Init our connection from our session ID. I believe Invoke URL commands are always passing the map name (MAPNAME) and session ID (SESSION), so you don't actually have to specify these parameters. $conn = new MgSiteConnection(); $userInfo = new MgUserInformation($_REQUEST["SESSION"]); $conn->Open($userInfo); //Init our runtime map and our selection set. $map = new MgMap($conn); $map->Open($_REQUEST["MAPNAME"]); $selection = new MgSelection($map, $_REQUEST["SELECTION"]); //assuming Key=SELECTION, Value=$CurrentSelection in your invokeurl command //Query the selection set for all GDM_UPI property values from our selected objects $pipesLayer = $selection->GetLayers()->GetItem("SuperPipes_AB"); $query = new MgFeatureQueryOptions(); $query->AddFeatureProperty("GDM_UPI"); $queryFilter = $selection->GenerateFilter($pipesLayer, $pipesLayer->GetFeatureClassName()); $query->SetFilter($queryFilter); //Execute the query and store all GDM_UPI values in an array $selReader = $pipesLayer->SelectFeatures($query); $pipeValues = array(); while($selReader->ReadNext()) { //I don't know about your data, but some feature may not even have this property value //so we only add if (!$selReader->IsNull("GDM_UPI")) { $gdm_upi = stripslashes($selReader->GetString("GDM_UPI")); //Assuming GDM_UPI is a string property array_push($pipeValues, $gdm_upi); } } $selReader->Close(); //string together all the collected GDM_UPI values $pipeList = join("','", $pipeValues); Then the your actual sql query can change from this: $sql="SELECT * FROM SuperPipes_AB where GDM_UPI in(" . stripslashes($_REQUEST["OBJ_KEYS"]) .") order by STATUS "; To this: $sql="SELECT * FROM SuperPipes_AB where GDM_UPI in(" . $pipeList .") order by STATUS "; Please note I wrote this code sample "by hand". There may be some syntatical errors. Hope this helps. - Jackie -- View this message in context: http://osgeo-org.1803224.n2.nabble.com/How-to-do-a-php-report-tp5244035p5255 973.html Sent from the MapGuide Users mailing list archive at Nabble.com. _______________________________________________ mapguide-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapguide-users _______________________________________________ mapguide-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapguide-users
