Jump to content

Radius Search


timmah1

Recommended Posts

This radius search I found uses a csv file to get results.

I'm trying to convert it to search the database instead. I'm getting no errors, but I'm not getting any results either.

 

Can anybody see how this could be done?

 

 

<?php
  $miles = $_POST['miles'];
  $max_distance = $miles;
  $no_dealers_within_max_msg = "No locations were located within $miles miles of the zip code you entered.";
    
  require("lib_dealer_search/lib_dealer_search.php");

  $cust_zipcode = $_POST["zip"];
  
  $dealerdata = array();
  
  $row = -1;
  
  $query = "SELECT * FROM users WHERE zip = '$cust_zipcode'" ;
  //$handle = fopen("sampledata.csv", "r");
  $result = mysql_query($query) or die(mysql_error());
  $count = mysql_num_rows($result);
  //fgetcsv($handle, 1000, ","); //uncoment to skip row header
  while($row = mysql_fetch_assoc($result) !== FALSE) {
  //while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
//  {
    if($count > 1)
    {
    $d = ds_distance($cust_zipcode, $row[0]);

	if (($d >= 0) and ($d <= 300))
	{
	    $row++;
	    
		$dealerdata[$row][distance] = $d;
	    $dealerdata[$row][name] = $row[1];
	    $dealerdata[$row][dob] = $row[2];
	}
    }
  }

  //fclose($handle);


  if ($dealerdata > 0)
  {
  //sort by distance
  sort($dealerdata);
  
  $dealers_within_max_dist = false;
  
  for($row = 0;$row < count($dealerdata); $counter++)
  {
      echo "Distance: " . round($dealerdata[$row][distance], 1) . " miles<br>";
      echo $dealerdata[$row][name] . "<br>";
      echo $dealerdata[$row][dob] . "<br><br>";
  }
  }
  else
  {  
    echo $no_dealers_within_max_msg;
  }
?>

 

Thanks in advance

Link to comment
https://forums.phpfreaks.com/topic/129670-radius-search/
Share on other sites

ok, I'm finally getting something, but it's still not right

Here is my code

<?php
require("config.php");
  $miles = $_POST['miles'];
  $zipcode = $_POST["zipcode"];
  $max_distance = $miles;
  $no_dealers_within_max_msg = "No locations were located within $miles miles of the zip code $zipcode.";
    
  require("lib_dealer_search/lib_dealer_search.php");

  $cust_zipcode = $_POST["zipcode"];
  
  $dealerdata = array();
  
  $row = 1;  
  $query = "SELECT * FROM users" ;
  
  $result = mysql_query($query) or die(mysql_error());
  
  while($data = mysql_fetch_assoc($result)) {
  
    if(count($data) > 1)
    {
    $d = ds_distance($cust_zipcode, $data[0]);

	if (($d >= 0) and ($d <= $miles))
	{
	    $row++;
	    
		$dealerdata[$row][distance] = $d;
		$dealerdata[$row][first] = $data[1];
		$dealerdata[$row][dob] = $data[2];

	}
    }
  }


  if (count($dealerdata) > 0)
  {
  //sort by distance
  sort($dealerdata);
  
  $dealers_within_max_dist = false;
  
  for($counter = 0;$counter < count($dealerdata); $counter++)
  {
      echo "Distance: " . round($dealerdata[$row][distance], 1) . " miles<br>";
      echo $dealerdata[$row][first] . "<br>";
      echo $dealerdata[$row][dob] . "<br><br>";
  }
  }
  else
  {  
        echo $no_dealers_within_max_msg;
  }
?>

 

Here is the lib_dealer_search.php

function ds_distance($zip1, $zip2)
{
  global $config_default_units;
  
  $latlong1 = ds_lookuplatlong($zip1);
  $latlong2 = ds_lookuplatlong($zip2);  
  
  if (($latlong1 == false) or ($latlong2 == false))
  {
    $dist = -1;
  }
  else
  {
    $dist = ds_calcdistance($latlong1[lat], $latlong1[long], $latlong2[lat], $latlong2[long], $config_default_units);
  }
  
  return $dist;
}

 

No matter what you put into the search field, it always comes back No locations were located......

 

Can anybody help me out?

Link to comment
https://forums.phpfreaks.com/topic/129670-radius-search/#findComment-672403
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.