[Geomoose-users] GeoMoose Search on Multi Fields with Implode Clause

Jim Dahl jim.dahl at mail.co.douglas.mn.us
Wed May 23 14:47:05 EDT 2012


Thanks again Dan, this took care of the problem.  I will now have to redo all of my searches with this and what Eli mentioned to make more elegant and accurate searches.  Thanks!
The problem with no searches turned out to be FireFox holding onto cache after exiting, and seeing old code.

Jim

From: Dan Little [mailto:danlittle at yahoo.com]
Sent: Wednesday, May 23, 2012 1:13 PM
To: Jim Dahl; geomoose-users at lists.osgeo.org
Subject: Re: [Geomoose-users] GeoMoose Search on Multi Fields with Implode Clause

isset - checks to see if the value has been set from the CGI call.  It's a damned goofy PHP thing.  The != "" means "not an empty string."

But you still need the wildcards for partial matching with like.  If you're looking for exact matches than use "=" in the SQL.

And JimK, your suspicion is correct, MapServer filters doesn't allow for bind values without my patches for it (which may or may not be in the 6.0 code, I need to check again, same with table checking code).

EliA, I believe JimD is using a substantially older version of GeoMOOSE with a custom PHP service.

________________________________
From: Jim Dahl <jim.dahl at mail.co.douglas.mn.us<mailto:jim.dahl at mail.co.douglas.mn.us>>
To: Dan Little <danlittle at yahoo.com<mailto:danlittle at yahoo.com>>; "geomoose-users at lists.osgeo.org<mailto:geomoose-users at lists.osgeo.org>" <geomoose-users at lists.osgeo.org<mailto:geomoose-users at lists.osgeo.org>>
Sent: Wednesday, May 23, 2012 12:53 PM
Subject: RE: [Geomoose-users] GeoMoose Search on Multi Fields with Implode Clause

Dan, I am not sure what the isset does and the != “” must be saying to ignore the field if there are no entries?  Anyway, I get no results on any searches

if($field3 == "HNUM" and isset($searchval3) and $searchval3 != "") {
array_push($clauses, "HNUM like '".$searchval3."'");
}

From: Dan Little [mailto:danlittle at yahoo.com]<mailto:[mailto:danlittle at yahoo.com]>
Sent: Wednesday, May 23, 2012 12:15 PM
To: Jim Dahl; geomoose-users at lists.osgeo.org<mailto:geomoose-users at lists.osgeo.org>
Subject: Re: [Geomoose-users] GeoMoose Search on Multi Fields with Implode Clause

Wouldn't it be easier to simply check if a value is set?

IE:

if($field3 == "HOUSE" and isset($searval3) and $searchval3 != "") {
 ... add the clause
}

That way you don't have an extra SQL bits. The extraneous "OR"s would just serve to confuse the database.

________________________________
From: Jim Dahl <jim.dahl at mail.co.douglas.mn.us<mailto:jim.dahl at mail.co.douglas.mn.us>>
To: "geomoose-users at lists.osgeo.org<mailto:geomoose-users at lists.osgeo.org>" <geomoose-users at lists.osgeo.org<mailto:geomoose-users at lists.osgeo.org>>
Sent: Wednesday, May 23, 2012 8:40 AM
Subject: [Geomoose-users] GeoMoose Search on Multi Fields with Implode Clause

I have need to search on multiple fields and the following code works if I have a wildcard in all of the fields.  If I take out a wildcard and do not enter anything in that field, the result is nothing found.  Probably because the empty field doesn’t match the database for any entries.  So what I would like to do is Make and OR with the field without a wild card and the other fields that have the AND.  Hope this makes sense to someone.  I credit Dan with the code for the implode clauses and it works great with the criteria of wild cards or have a pull down in the field that contains all the possible entries.  HNUM is the field I would like to not have the wildcard.  I have as many as ten fields, but show fewer for this example.  THANKS.


$clauses = array();

if($field3 == "HNUM") {
array_push($clauses, "HNUM like '".$searchval3."'");
}

if($field4 == "STREET") {
array_push($clauses, "STREET like '%".$searchval4."%'");
}

if($field5 == "CITY") {
array_push($clauses, "CITY like '%".$searchval5."%'");
}

$all_clauses = implode(" AND ", $clauses);

$rs = $conn->Execute("SELECT * FROM housenum WHERE ".$all_clauses." ORDER BY ".$sort." ASC");

Jim Dahl, GISP
GIS Coordinator
Douglas County Public Works
526 Willow Dr
PO Box 398
Alexandria MN 56308

V 320-762-2933
   320-762-2999
F 320-762-2998


_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.osgeo.org<mailto:Geomoose-users at lists.osgeo.org>
http://lists.osgeo.org/mailman/listinfo/geomoose-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/geomoose-users/attachments/20120523/a50b8c24/attachment-0001.html


More information about the Geomoose-users mailing list