[mapguide-users] Re: How to do a php report
Marie-Eve Gauthier
marie-eve.gauthier at all-can.com
Mon Jul 5 17:51:03 EDT 2010
Hello Jackie,
I will try it!
Thanks!
Marie-Eve Gauthier
-----Original Message-----
From: mapguide-users-bounces at lists.osgeo.org
[mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Jackie Ng
Sent: Monday, July 05, 2010 7:02 AM
To: mapguide-users at lists.osgeo.org
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
mapguide-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users
More information about the mapguide-users
mailing list