Hallo Forum
Ich habe ein Problem beim Filtern der Postleitzahlen über eine Image Map Deutschlands. Diese Grafik ist aufgeteilt in die einzelnen PLZ Regionen, beim klick in die jeweilige Region wird die Liste dementsprechend einfach über den Link gefiltert ( Link: /trefferliste/filter/1 usw... ). Das geht soweit auch alles ganz gut. Nur die verflixte Null will natürlich nicht. Bei einem Filtern nach Null werden dann doch alle Datensätze angezeigt.
Der zuständige Code sieht wie folgt aus:
// let's go
if (empty($this->piVars['filter'])) { // no filter set
$this->filter = '1 = 1'; // default value (WHERE 1=1)
} else { // filter set
if (is_array($this->piVars['filter'])) { // if is array
foreach ($this->piVars['filter'] as $key => $value) { // one loop for every filter
if (!empty($value)) {
if ($value == '@') { // 0-9
#$this->filter .= 'tt_address.'.$key.' < "@%" AND '; // add this filter to query
$this->filter .= 'tt_address.'.$key.' RLIKE "^[0-9]." AND '; // add this filter to query
$set = 1; // min 1 filter was set
} elseif ($value == str_replace('%', '', $value)) { // without % like a word or a name
$this->filter .= 'tt_address.'.$key.' LIKE "'.$value.'%" AND '; // add this filter to query
$set = 1; // min 1 filter was set
} else { // value like a% or e%
$this->filter .= 'tt_address.'.$key.' LIKE "'.$value.'" AND '; // add this filter to query
$set = 1; // min 1 filter was set
}
}
}
}
if ($set == 0) $this->filter = '1 = 1'; // default value (WHERE 1=1)
else $this->filter = substr(trim($this->filter), 0, -4); // delete last " AND " of whole query
}
Auszug aus der class.tx_wtdirectory_pi1_list.php
Nach einem Aussortieren der einzelnen Abfragen stellt sich heraus, dass elseif für 1-9 greift und die 0 den else Fall bildet.
Stehe auf dem Schlauch! Vielleicht weiss einer von Euch Rat?
Gruss
Johannes