[mapserver-users] php mapscript

Sven Schroeter schroeter at netgis.de
Thu Mar 25 06:18:50 PDT 2010


Hi,
I have an old php mapscript code that works fine with mapserver 5.02 or 5.2, 
but not with 5.6.1.
The code runs an attribute tabe from a postgis layer and different querys 
i.e. queryByRect:

...
@$datQuery = $query_layer->queryByRect($qRect);

 //number of objects
 $resnum = $query_layer->getNumResults();
 echo "number of objects: ".$resnum."<br>";

 //if query success
if ($datQuery == MS_SUCCESS) {
  $query_layer->open();

  //first row
  $result = $query_layer->getResult(0);
  $shpobj = $query_layer->getShape($result->tileindex,$result->shapeindex);
  //read attribute
  $attr = $shpobj->values;

  //write headline
  echo '<table cellspacing="0" cellpadding="2" border="1" ><tr>';
  foreach($attr as $name=>$wert) {
   echo '<td bgcolor="#CCCCCC">'.$name.'</td>';
  }
  echo '</tr>';

  //write datasets
  for ($j=0; $j<$query_layer->getNumResults(); $j++) {
   $result = $query_layer->getResult($j);
   $shpobj = $query_layer->getShape($result->tileindex,$result->shapeindex);
   $ri = $result->tileindex;
   $si = $result->shapeindex;
   $attr = $shpobj->values;
   echo '<tr id="row'.$si.'" >';
   foreach($attr as $name=>$wert) {
    echo '<td>'.$wert.'</td>';
   }
   echo '</tr>';
   $shpobj->free();
  }
  $query_layer->close();
  echo '</table>';

} // end success
...

In ms 5.6.1 the query is also successful (I get the correct number of 
objects) but there comes following warning:
Invalid argument supplied for foreach() in ... Fatal error: Call to a member 
function free() on a non-object in ...
No object? Why? What has changed?
Thanks
Sven 






More information about the MapServer-users mailing list