0

I am building a Leasing Company Property web site, and one option they'd like is to have "Similar Properties" recommended to the visitor.

The array contains "Bedroom Type" data (studio, 1 bedroom, 2 bedroom, 3 bedroom).

A sample array is: Array ( [0] => Studio [1] => 1BR )

I am trying to figure out a way to retrieve other buildings that "match" similar bedroom types (if a building has a Studio type, I'd like to list that building).

Any idea on how I can start writing this? Any and all advice is greatly appreciated, I've never had to do any work like this before so I have no starting point.

3
Contributors
7
Replies
8
Views
6 Years
Discussion Span
Last Post by diafol
0

This type of work (querying against parameters) is best left to a database. Arrays are a damn pain. DBs are nicer as they allow you to relate and join data. They are easier for updating, deleting, inserting and even selecting.

0

Thanks ardav, I was afraid that was going to be the answer. Using DB queries is always my first choice, but with the type of functionality I'm attempting to make, I want to display all the properties, and then compare them to the original bedroom type array.

If the arrays are "similar" (ie: they have a bedroom type in common), I want their checkbox to be selected, if they don't have anything similar (ie: they have absolutely no bedroom type in common), then the property will not be checked.

http://www.millenniumparkplaza.com/bjb/site/view.php?tabs-5&property=12 -- this is where I am attempting to write this functionality.

Thank you ardav! You're always incredibly helpful (love the experts).

1

Too kind stoop! :)

I see what you're saying from the link. However, I still assert that a DB would be the easiest, although the structure may look a little daunting. Creating (maybe) hundreds of arrays for different properties would fill me with a dark dread.
Changing table fields is simple, change once, that's it. Alter a few queries and maybe a couple of form fields and you're done.

Trying to do the same for EVERY property... I don't even want to think... :(

I think you have a number of possible solutions to this. Find one that is maintainable. The last thing you want to do is get it just the way you want and then have to change it a couple of weeks down the line. If it's convoluted php, you'll probably spend a day or more trying to remember how you got all the different bits to interact!

Votes + Comments
led me in the right direction
0

Having read over your first post again, I may have got the wrong end of the stick:

Is your buildings data stored in a DB?

0

@ardav - thanks for your help. I picked my brain and came up with a Query Building string using the array_in() function.

$sql = "SELECT bedrooms FROM buildings WHERE bid = '$property'";
 $result = mysql_query($sql);
  while($r_b = mysql_fetch_array($result)) {
   $beds = unserialize($r_b['bedrooms']);
  }
  $location = "Gold Coast"; 
  $sql = "SELECT name, bedrooms FROM buildings WHERE location = '$location'";
  $c = 0; 
 
	if (in_array("Studio", $beds)) { 
	   $sql .= " AND (bedrooms LIKE '%Studio%'"; 
	   $c++;
	   }
	   
	if (in_array("1BR", $beds)) {
		if($c > 0) {
		 $sql .= " OR bedrooms LIKE '%1BR%'";
		 } else {
		 $sql .= " AND (bedrooms LIKE '%1BR%'";
		 $c++;
		 }
	}
	
	if (in_array("2BR", $beds)) {
		if($c > 0) {
		 $sql .= " OR bedrooms LIKE '%2BR%'";
		 } else {
		 $sql .= " AND (bedrooms LIKE '%2BR%'";
		 $c++;
		 }
	}
	
	if (in_array("3BR", $beds)) {
		if($c > 0) {
		 $sql .= " OR bedrooms LIKE '%3BR%'";
		 } else {
		 $sql .= " AND (bedrooms LIKE '%3BR%'";
		 $c++;
		 }
	}	
	  
    $sql .= ")";
    $result = mysql_query($sql);

Works like a charm now. You're such a smarty ardav =)

0

What did I do?? Looks like you did all that yourself. Nice one. :)

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.