Hi,
thank you very much, shapeObj resultsGetShape is the solution.
resultsGetShape works fine.
But I don't understand why shapeObj getFeature is in the documentation?

Sven


----- Original Message ----- From: Worth Lutz
To: 'Sven Schroeter' ;
Sent: Friday, March 26, 2010 11:09 PM
Subject: RE: [mapserver-users] php mapscript


This problem is due to the new single pass query in 5.6.

I have marked your code with what I am using.

Try these mods marked with "*************************":


@$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();      // <<REMOVE OPEN AND CLOSE ***********

 //first row
 $result = $query_layer->getResult(0);


//$shpobj = $query_layer->getShape($result->tileindex,$result->shapeindex); // resultsGetShape is now the way to get the shape object *************************** // note: change of order in arguments ************************************************ $shpobj = $query_layer->resultsGetShape($result->shapeindex, $result->tileindex);


 //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); // see note above ********************************************************************** $shpobj = $query_layer->resultsGetShape($result->shapeindex, $result->tileindex);


  $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();      // <<REMOVE OPEN AND CLOSE ***********
 echo '</table>';

} // end success
...


-----Original Message-----
From: mapserver-users-boun...@lists.osgeo.org [mailto:mapserver-users-boun...@lists.osgeo.org] On Behalf Of Sven Schroeter
Sent: Thursday, March 25, 2010 10:52 AM
To: mapserver-users@lists.osgeo.org
Subject: Re: [mapserver-users] php mapscript

Alan,
thanks for the reply, I tried it with getFeature(), but there comes the same
error.
nextShape() works only after msWhichShapes and here I need a rectobj.
But I want to use the script for queryByShape and queryByAttributes too.
Why there comes no array in $attr = $shpobj->values; ?
Any idea?
Sven

----- Original Message ----- From: "Alan Boudreault" <aboudrea...@mapgears.com>
To: <mapserver-users@lists.osgeo.org>
Cc: "Sven Schroeter" <schroe...@netgis.de>
Sent: Thursday, March 25, 2010 2:32 PM
Subject: Re: [mapserver-users] php mapscript


Sven,

getShape() is deprecated. Use rather getFeature(). I suggest to also take
a
look at the nextShape() function:
http://mapserver.org/mapscript/php/index.html#layerobj-class

Alan

On March 25, 2010 09:18:50 am Sven Schroeter wrote:
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



_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


--
Alan Boudreault
Mapgears
http://www.mapgears.com





_______________________________________________
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