Hallo Ihr, ich habe ein kleines Problemchen und kommen nicht weiter.
Ich würde gerne für die Länder innerhalb von wt_directory ein Dropdownfeld machen.
Soweit alle kein Thema aber nach dem laden einer anderen Seite sollte ja das selbe Land aktiv sein.
Aber ich komme ums verrecken nicht weiter hiermal ein Beispiel was ich bisher gemacht habe:
Habe es mit
$_POST + $_REQUEST + $_GET
probiert
<?php
$countries = Array("Deutschland","Schweiz","Österreich");
$selectedcountry = $_REQUEST["tx_wtdirectory_pi1"]["filter"]["country"];
?>
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<?
foreach ($countries as $country){
$selected = (($countries==$selectedcountry) ? " selected" : "");
?>
<option name="tx_wtdirectory_pi1[filter][<?=$country?>]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="<?=$country?>"<?=$selected?>><?=$country?></option>
<?
}
?>
</select>
Und die Array:
$_POST =
array (
'tx_wtdirectory_pi1' =>
array (
'filter' =>
array (
'zip' => '78532',
'city' => '',
'country' => 'Schweiz',
),
),
);
$_GET =
array (
'no_cache' => '1',
'tx_wtdirectory_pi1' =>
array (
'filter' =>
array (
'country' => 'Schweiz',
'zip' => '78532',
),
),
'cHash' => '71b05c4eae',
);
$_REQUEST =
array (
'tx_wtdirectory_pi1' =>
array (
'filter' =>
array (
'zip' => '78532',
'city' => '',
'country' => 'Schweiz',
),
),
);
Hoffe Ihr könnt mir weiterhelfen.
Was genau ist das Problem? Bekommst du die Werte nicht übermittelt?
PS: mit $this->piVars['filter']['country'] kommst du an gefilterte Werte (in deiner Variante öffnest du ein Scheunentor für XSS)
Es geht darum, dass das Dropdown eine Abfrage macht welches land gefiltert ist und dann innerhalb des Dropdownfeldes selected reinmacht.
Damit nach dem Laden der Suche nicht das Oberste Feld akiviert ist, sondern das gesuchte.
Z.B. Schweiz:
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option name="tx_wtdirectory_pi1[filter][Deutschland]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland">Deutschland</option>
<option name="tx_wtdirectory_pi1[filter][Schweiz]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz" selected="">Schweiz</option>
<option name="tx_wtdirectory_pi1[filter][Österreich]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Österreich">Österreich</option>
</select>
Ungefähr so schätze ich:
for ($i=0; $i<100; $i++) {
$content .= '<option'.($this->piVars['filter']['country'] == strtolower($country) ? ' selected="selected"' : '').'>'.$country.'</option>';
}
PS: id und name ist nicht erlaubt in einem Option Tag
Jetzt bringste mich ganz durcheinander....
Ich habe per WT_TS_ einen marker gemacht:
switch = PHP_SCRIPT_EXT
switch {
file = fileadmin/include/selected_switch.php
}
in der dann eben das Dropdown drinnen ist.
Therotisch muß ich ja nur wissen wie ich die Abfrage für die per Post gesenden Daten hinbekomme und dem dann sage wenn country Deutschland dann echo.
Theoretisch eine einfache if else halt.
Über einen Marker mache ich es weil dieser nicht überall gleich ist und ich Ihn dann pro Seite ansprechen kann.
Danke für deine Hilfe Chris
Verdammt ich habe es nur sollte ich jetzt noch ein Problem mit dem Ulauten hinbekommen, hast du vielleicht einen Lösungsanschalg?
<?php
if ($_POST["tx_wtdirectory_pi1"]["filter"]["country"] == '%D6sterreich') {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option name="tx_wtdirectory_pi1[filter][Deutschland]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland">Deutschland</option>
<option name="tx_wtdirectory_pi1[filter][Schweiz]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz">Schweiz</option>
<option name="tx_wtdirectory_pi1[filter][Österreich]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Oesterreich" selected="">Oesterreich</option>
</select>
';
}
else if ($_POST["tx_wtdirectory_pi1"]["filter"]["country"] == 'Schweiz') {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option name="tx_wtdirectory_pi1[filter][Deutschland]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland">Deutschland</option>
<option name="tx_wtdirectory_pi1[filter][Schweiz]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz" selected="">Schweiz</option>
<option name="tx_wtdirectory_pi1[filter][Oesterreich]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Österreich">Österreich</option>
</select>
';
}
else {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option name="tx_wtdirectory_pi1[filter][Deutschland]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland" selected="">Deutschland</option>
<option name="tx_wtdirectory_pi1[filter][Schweiz]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz">Schweiz</option>
<option name="tx_wtdirectory_pi1[filter][Österreich]" id="country" class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Österreich">Österreich</option>
</select>
';
}
?>
auch das Probelm habe ich gefunden....
Danke für deine Hilfe...
Hier der Code:
<?php
if ($_POST["tx_wtdirectory_pi1"]["filter"]["country"] == 'Oesterreich') {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland">Deutschland</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz">Schweiz</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Oesterreich" selected="selected">Österreich</option>
</select> ';
} else if ($_POST["tx_wtdirectory_pi1"]["filter"]["country"] == 'Schweiz') {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland">Deutschland</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz" selected="selected">Schweiz</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Oesterreich">Österreich</option>
</select>';
} else {
echo'
<select name="tx_wtdirectory_pi1[filter][country]" class="wtdirectory_filter_text wtdirectory_filter_text_country" id="country" style="width:165px;">
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Deutschland" selected="selected">Deutschland</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Schweiz">Schweiz</option>
<option class="wtdirectory_filter_text wtdirectory_filter_text_country" value="Oesterreich">Österreich</option>
</select> ';
}
?>
Ja ich bin es nochmals...
Kurze frage hätte ich da noch, mit der Suche über eine PLZ sagen wir bei Eingabe 23 werden leider alle PLZ ausgegeben die eine 23 (z.B. 12345, 42356, 97423) haben und nicht diese die mit 23 (23000) anfangen.
Wie könnte man das den am besten bewerkstelligen? Das die PLZ nur von vorne gesucht werden.
Außerdem versuche gerade krampfhaft einen Link „Zurück zum Suchergebniss“ zu erstellen, den dein Link funktioniert nur zurück auf die Hauptseite.
Danke für eure Hilfe, LG Chris.
Ausserdem ist mir noch aufgefallen, das bei einem Link zu der vCard noch das Atributt rel="nofollow" rein sollte.
Könnt Ihr mir sagen wo man das anlegt.
Danke Chris