Nevermind that was a bad way to do it. Here is what you have to do.
Create a second php file that looks like this that iterates the xml
nodes, but this time it will just be for your name search.




<?php
//require("phpsqlsearch_dbinfo.php");

// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];
$name = $_GET["name"];

// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);

// Opens a connection to a mySQL server
// put your db connection info here.
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db(usr5118_google, $connection);
if (!$db_selected) {
  die ("Can\'t use db : " . mysql_error());
}

// Search the rows in the markers table
$query = sprintf("SELECT address, name, email, phonenumber, company,
lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) )
* cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin
( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s'
ORDER BY distance LIMIT 0 , 20",
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($center_lng),
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($radius));
$result = mysql_query($query);

if (!$result) {
  die("Invalid query: " . mysql_error());
}

header("Content-type: text/xml");

// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
  $node = $dom->createElement("markers");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("name", $row['name']);
  $newnode->setAttribute("address", $row['address']);
  $newnode->setAttribute("email", $row['email']);
  $newnode->setAttribute("phonenumber", $row['phonenumber']);
  $newnode->setAttribute("company", $row['company']);
  $newnode->setAttribute("lat", $row['lat']);
  $newnode->setAttribute("lng", $row['lng']);
  $newnode->setAttribute("distance", $row['distance']);
}



$query2 =sprintf("SELECT address, name, email, phonenumber, company,
lat, lng FROM markers WHERE name LIKE '%s'", $name . "%");
$result2 = mysql_query($query2);
while ($row2 = @mysql_fetch_assoc($result2)){
  $node = $dom->createElement("markers");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("name", $row2['name']);
  $newnode->setAttribute("address", $row2['address']);
  $newnode->setAttribute("email", $row2['email']);
  $newnode->setAttribute("phonenumber", $row2['phonenumber']);
  $newnode->setAttribute("company", $row2['company']);
  $newnode->setAttribute("lat", $row2['lat']);
  $newnode->setAttribute("lng", $row2['lng']);
  $newnode->setAttribute("distance", $row2['distance']);
}

echo $dom->saveXML();

?>

Then add this java script

function searchLocations2() {
     var name = document.getElementById('nameInput').value;
     searchLocationsNear2(name);
   }
   function searchLocationsNear2(name) {
     var radius = 3000;
     var searchUrl = 'phpsqlsearch_genxml4.php?name=' + name;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName
('markers');
       map.clearOverlays();

       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(40, -100), 4);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var address = markers[i].getAttribute('address');
                 var email = markers[i].getAttribute('email');
                 var phonenumber = markers[i].getAttribute('phonenumber');
                 var company = markers[i].getAttribute('company');
         var distance = parseFloat(markers[i].getAttribute
('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute
('lat')),
                                 parseFloat(markers[i].getAttribute
('lng')));

         var marker = createMarker(point, name, address, email,
phonenumber, company);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry2(marker, name,
address,distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel
(bounds));
     });
   }
Then put a form on your page that looks like this.

 <input type="text" id="nameInput"/>
    <input type="button" onclick="searchLocations2()" value="Office
Search"/>

Hope that helps! That was a cool project to implement.

On Mar 18, 8:35 pm, "[email protected]" <[email protected]> wrote:
> I was trying to go about this another way. It might be the wrong way
> but it seemed easier. Maybe not but I seem to be hung up in one spot.
> Instead of changing the URL I was going toadda second text box for
> thenamein my case it is an agentsname. This second form points back
> to the same page to find a php script in the header.  Then the php
> script query find thatnameand the address that matches to it. Then I
> wanted to call the java script function from within the web page with
> the php writing to the searchLocations()  function upon page load.
>
> I made a second but almost identical function called searchLocations2
> (). This does the exact same thing as the first, but receives the
> variable dynamically after the form is submitted.
>
> I put a document.write(address) after the variable is initialized to
> ensure that it grabbed the address. For whatever reason though this is
> where the program stops working.
>
> the line - geocoder.getLatLng(address, function(latlng) {
>
> appears to do nothing and I don't know why. Technically shouldn't it
> create the map once I have fed it with the address variable? Any
> ideas? I can paste code or give you the web site to look at.
>
> Thanks,
>
> Matt
>
> On Mar 2, 10:39 am, Barry Hunter <[email protected]> wrote:
>
> > Basic overview,
>
> > 1)adda new textbox for 'namesearch'
>
> > 2) create function that takes taht value and sends it to the server
> > (much like the searchLocationsNear calls
> >  var searchUrl = 'phpsqlsearch_genxml_restaurant.php?lat=' +
> > center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
> > you have
> >  var searchUrl = 'phpsqlsearch_genxml_restaurant.php?q=' + escape(query);
>
> > 3) modify the php script to check if anameis included, if it 
> > issearchthenamefield, otherwise get the lat/long andsearchas per
> > the tutorial.
>
> > at the most basic you just do
> > $sql = "... wherenamelike '%".mysql_real_escape_string($_GET['q'])."%' ";
> > which will work for single keywords. Otherwise investigate the full
> > textsearchoption in mysql .
>
> > On 02/03/2009, Nathan <[email protected]> wrote:
>
> > >  So, I ran through the API tutorial to create a store locator, and it
> > >  worked like a charm. I have a MySQL database with 1000 or so
> > >  locations, and using the API example, I have everything set up to
> > >  searchby address, grab the locations from the database and show them
> > >  on a map. That works perfectly.....
>
> > >  But now I want toadda field tosearchbyname.
>
> > >  The client is a vodka producer. They want people to be able tosearch
> > >  by location (give me the nearest liquor store that has the product)
> > >  but also by storename(hey, I live by Joe's Liquor store, do they
> > >  have it?).
>
> > >  So, thenameof the store is in the db, but how do I do asearchby
> > >  it? I don't even know where to begin.
>
> > >  Here's the page that works to find a location by address:
> > >  http://www.doublecrossvodka.com/locator/find_restaurants.php
>
> > >  That page hits 
> > > thehttp://www.doublecrossvodka.com/locator/phpsqlsearch_genxml_restauran...
> > >  page
>
> > >  Any ideas?
>
> > >  Thank you so much.
>
> > --
> > Barry
>
> > -www.nearby.org.uk-www.geograph.org.uk-
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Maps API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Maps-API?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to