Here's the code
Code: Select all
<?php
$resultsxml = xml_read('projecten.xml');
$resultsxml = $resultsxml['result'];
$getLocatie = $_POST['location'];
$getFase = $_POST['fase'];
$getBor = $_POST['buyorrent'];
$last_results = array();
if(isset($getLocation)){
$last_results = resultFilter($getLocation,$resultsxml);
}else{$last_results = $resultsxml;}
if(isset($getFase)){
$last_results = resultFilter($getFase,$last_results);
}else{
if(empty($getLocation)){
$last_results = $resultsxml;
}
}
if(isset($getBor)){
if($getBor != "both"){
if($getBor== "buy"){
$fase = "For Sell";
}else if($getBor == "rent"){
$fase = "For Rent";
}
$last_results = filterProjects($last_results, $fase);
}
}
function filterProjects($var, $query){
$results = array();
foreach($var as $i => $val){
$key = in_array($query, $var[$i]);
if($key == 1){
array_push($results, $val);
}
}
return($results);
}
function resultFilter($post,$xml){
$arr = array();
for($i=0;$i<count($post);$i++){
$query = $post[$i];
$results = filterProjects($xml, $query);
for($z=0;$z<count($results);$z++){
array_push($arr, $results[$z]);
}
}
return($arr);
}
function xml_read($xml) {
if (!$data = implode('', file($xml))) {
die('kan xml document niet vinden!');
}
$parser = xml_parser_create();
$params = array();
$level = array();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $index);
xml_parser_free($parser);
foreach ($values as $element) {
switch($element['type']) {
case 'open' :
if (array_key_exists('attributes', $element)) {
list($level[$element['level']], $extra) = array_values($element['attributes']);
}
else { $level[$element['level']] = $element['tag']; }
break;
case 'complete' :
$start = 1;
$exec = '$params';
while($start < $element['level']) {
$exec .= '[$level['.$start.']]';
$start++;
}
$exec .= '[$element[\'tag\']] = $element[\'value\'];';
eval($exec);
break;
}
}
return $params;
}
?>
And this is what the xml looks like!
Code: Select all
<result>
<project id="0">
<titel>Project1</titel>
<picture>path/thumb.jpg</pictre>
<buyorrent>For Rent</buyorrent>
<href>path</href>
<status>ontwerp</status>
<provincie>Noord-Holland</provincie>
</project>
<project id="1">
<titel>Project2</titel>
<picture>path/thumb.jpg</pictre>
<buyorrent>For Sell</buyorrent>
<href>path</href>
<status>ontwerp</status>
<provincie>Zuid-Holland</provincie>
</project>
<project id="2">
<titel>Project3</titel>
<picture>path/thumb.jpg</pictre>
<buyorrent>Both</buyorrent>
<href>path</href>
<status>ontwerp</status>
<provincie>Noord-Holland</provincie>
</project>
</results>
its used in a real estate website, it outputs the search queries. IM REALLY SUCK AT PHP!
There are 3 search possibilities: Rent, Sell, Both.
now the code displays when searched for:
Rent: listings marked as "For Rent".
Buy: listings marked as "For Sell".
Both: listings marked "For Sell", AND, "For Rent".
Oke thats all fine ! BUT.
It needs to output the following:
Rent: listings marked as "For Rent", AND, marked as "Both" (because a listing marked both, is also for rent!)
Buy: listings marked as "For Sell", AND, marked as "Both" (because a listing marked both, is also for sale!)
Both: listings marked " For Sell", AND, "For Rent". ( this function is already working )
If this can be fixed, u be my greatest hero !!
