Generuje sobie taki formularz:
<div id="szukaj">
<?php
echo '<form name="formularz" method="post" action="'.$adres.'/szukaj/sortuj/0/str/1" onsubmit="return SprawdzDane2(this)">'; ?>
<table>
<tr>
<td>kategori:</td>
<td>
<select name="kategoria" onchange='javascrip: redirect(this.options.selectedIndex);' id="kateg">
<option value="brak">wybierz</option>
<?php
if (in_array('2', $kat)) echo '<option value="2">Mieszkania</option>'; if (in_array('3', $kat)) echo '<option value="3">Domy</option>'; if (in_array('4', $kat)) echo '<option value="4">Działki</option>'; if (in_array('5', $kat)) echo '<option value="5">Lokale</option>'; if (in_array('6', $kat)) echo '<option value="6">Wynajem - Mieszkania</option>'; if (in_array('7', $kat)) echo '<option value="7">Wynajem - Domy</option>'; if (in_array('8', $kat)) echo '<option value="8">Wynajem - Działki</option>'; if (in_array('9', $kat)) echo '<option value="9">Wynajem - Lokale</option>';
?>
</select>
</td>
</tr>
<tr>
<td>miasto:</td>
<td>
<select name="miejscowosc" id="miejscowosc" value="wybierz">
<?php
$sql='SELECT DISTINCT miejscowosc FROM oferta';
echo '<option value="brak" selected="selected">wybierz</option>'; for ($i=1; $i<=$lPoz; $i++)
{
echo '<option value="'.$wiersz[0].'">'.$wiersz[0].'</option>'; }
?>
</select>
</td>
</tr>
</table>
<p>powierzchni:</p>
<p>o: <input type="text" name="pow_od" value="" maxlength="5" size="7" />
do: <input type="text" name="pow_do" value="" maxlength="5" size="7" /></p>
<p style="margin-to:10px;">cen:</p>
<p> o: <input type="text" name="cena_od" value="" maxlength="15" size="7" />
do: <input type="text" name="cena_do" value="" maxlength="15" size="7" /></p>
<input id="znajdz" type="submit" value="znajdź" class='btn'/>
</form>
</div>
Do SELECTA kategoria podłączona jest funkcja w JavaScripcie, której zadaniem jest zmiana wartości w selecie miejscowości, w zależności od wybranej kategorii.
Oto kod JavaScript do obsługi tego:
var groups=document.formularz.kategoria.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
<?php
$pozycja=0;
$sql='SELECT DISTINCT miejscowosc FROM oferta';
echo 'group['.$pozycja.'][0]=new Option("brak") '; for ($i=1; $i<=$lPoz; $i++)
{
?>
<?php
echo 'group['.$pozycja.']['.$i.']=new Option("'.$wiersz[0].'")'; }
for ($j=0; $j<count($kat); $j++)
{
$pozycja++;
$sql='SELECT DISTINCT miejscowosc FROM oferta WHERE kategoria='.$kat[$j];
?>
<?php
echo 'group['.$pozycja.'][0]=new Option("wybierz") ';
for ($i=1; $i<=$lPoz; $i++)
{
?>
<?php
echo 'group['.$pozycja.']['.$i.']=new Option("'.$wiersz[0].'")'; }
}
?>
W firefoxie sprawdza się to doskonale, w ie niestety $_POST['miejscowosc'] jest zawsze puste jeżeli zmieni się kategorie, po wybraniu tylko miasta jest ok.
Wygenerowany kod wygląda całkiem dobrze, czyli np:
<select name="miejscowosc" id="miejscowosc" value="wybierz">
Czy da się coś z tym zrobić żeby zaczęło działać w ie?
Czy może powinienem sobie darować JavaScript, odświeżyć strone i dopiero wtedy załadować do selecta odpowiednie wartości?
Z góry dzięki za wszelką pomoc.
Ten post edytował n0wy 18.09.2008, 20:24:41