Zum Inhalt springen

wt_directory PLZ Suche

Erstellt am 2. Februar 2009 · 8 Antworten · letzte Antwort am 2. September 2009

Tags: tt_address, Suche, Frage

patricks ·

Hallo,

ich verwende wt_directory zusammen mit tt_address zur Addressverwaltung und Addresssuche. Unter anderem kann man auch nach Postleitzahlen suchen. Wenn ich z.b. 80 suche, findet er alle Adressen in denen 80 an irgendeiner Stelle der PLZ vorkommt. Allerdings würde ich gerne nur die Adressen haben bei denen die PLZ mit 80 anfängt. Kann ich das vielleicht irgendwo in einer der php-Dateien ändern, dass er die dementsprechend sucht?

Danke schonmal für die Hilfe.

einpraegsam.​net ·

Du musst überhaupt nichts im PHP ändern:

<select name="tx_wtdirectory_pi1[filter][zip]">
<option value="1%">PLZ Gebiet 1</option>
<option value="2%">PLZ Gebiet 2</option>
</select>

Einfach noch an den Suchbegriff ein % anhängen

patricks ·

Danke, das klappt schon. Allerdings sollte es standardmäßig so suchen und man sollte das % nicht bei jeder Suche angeben müssen.

patricks ·

Das war eben meine Frage :-)
Hab mir die class.wtdirectory_filter_search.php schon angeschaut, allerdings weiß ich nicht genau an welcher Stelle ich ansetzen muss.

RT-Schwabe ·

Hallo,

wo genau muss man das einbauen? Ich habe das gleiche Problem, bin aber zugegebenermaßen etwas damit überfordert. kann mir vielleicht einer von euch etwas hilfestellung geben?

vielen dank

Gruß
thorsten

patricks ·

Da jetzt schon diverse Anfragen per PM an mich kamen hier nochmal wies funktioniert:
Schaut euch die Datei 'class.tx_wtdirectory_pi1_list.php' an. Vergleicht mal Zeile 142 bis 164 mit dem:

// 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
$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
}

Was ich genau geändert hab weiß ich nicht mehr, aber damit funktionierts.