Generuje sobie taki formularz:

  1. <div id="szukaj">
  2.    <?php
  3.         echo '<form name="formularz" method="post" action="'.$adres.'/szukaj/sortuj/0/str/1" onsubmit="return SprawdzDane2(this)">';
  4.    ?>
  5.        <table>
  6.        <tr>
  7.        <td>kategori:</td>
  8.        <td>
  9.        <select name="kategoria" onchange='javascrip: redirect(this.options.selectedIndex);' id="kateg">
  10.            <option value="brak">wybierz</option>
  11. <?php
  12.    if (in_array('2', $kat)) echo '<option value="2">Mieszkania</option>';
  13.    if (in_array('3', $kat)) echo '<option value="3">Domy</option>';
  14.    if (in_array('4', $kat)) echo '<option value="4">Działki</option>';
  15.    if (in_array('5', $kat)) echo '<option value="5">Lokale</option>';
  16.    if (in_array('6', $kat)) echo '<option value="6">Wynajem - Mieszkania</option>';
  17.    if (in_array('7', $kat)) echo '<option value="7">Wynajem - Domy</option>';
  18.    if (in_array('8', $kat)) echo '<option value="8">Wynajem - Działki</option>';
  19.    if (in_array('9', $kat)) echo '<option value="9">Wynajem - Lokale</option>';
  20.  
  21.  
  22. ?>
  23.        </select>
  24.        </td>
  25.        </tr>
  26.        <tr>
  27.  
  28.        <td>miasto:</td>
  29.        <td>      
  30.        <select name="miejscowosc" id="miejscowosc" value="wybierz">
  31. <?php
  32. $sql='SELECT DISTINCT miejscowosc FROM oferta';
  33. $wynik = mysql_query($sql)
  34.            or die(mysql_error());
  35. $lPoz=mysql_NumRows($wynik);
  36. echo '<option value="brak" selected="selected">wybierz</option>';
  37. for ($i=1; $i<=$lPoz; $i++)
  38.    {
  39.        $wiersz=mysql_fetch_array($wynik);
  40.        echo '<option value="'.$wiersz[0].'">'.$wiersz[0].'</option>';
  41.    }
  42. ?>
  43.        </select>
  44.        </td>
  45.        </tr>
  46.        </table>
  47.        
  48.        
  49.        <p>powierzchni:</p>
  50.      
  51.            <p>o: <input type="text" name="pow_od" value="" maxlength="5" size="7" /> &nbsp;
  52.            do: <input type="text" name="pow_do" value="" maxlength="5" size="7" /></p>
  53.      
  54.        <p style="margin-to:10px;">cen:</p>
  55.        <p>    o: <input type="text" name="cena_od" value="" maxlength="15" size="7" /> &nbsp;
  56.            do: <input type="text" name="cena_do" value="" maxlength="15" size="7" /></p>
  57.  
  58.        <input id="znajdz" type="submit" value="znajdź" class='btn'/>      
  59.        </form>    
  60.    </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:
  1. var groups=document.formularz.kategoria.options.length
  2. var group=new Array(groups)
  3. for (i=0; i<groups; i++)
  4. group[i]=new Array()
  5.  
  6. <?php
  7. $pozycja=0;
  8. $sql='SELECT DISTINCT miejscowosc FROM oferta';
  9. $wynik = mysql_query($sql)
  10.            or die(mysql_error());
  11. $lPoz=mysql_NumRows($wynik);
  12.  
  13. echo 'group['.$pozycja.'][0]=new Option("brak") ';
  14. for ($i=1; $i<=$lPoz; $i++)
  15.    {
  16. ?>
  17.  
  18. <?php
  19.        $wiersz=mysql_fetch_array($wynik);
  20.        echo 'group['.$pozycja.']['.$i.']=new Option("'.$wiersz[0].'")';
  21.    }    
  22.  
  23. sort($kat);
  24. for ($j=0; $j<count($kat); $j++)
  25.    {    
  26.        $pozycja++;
  27.  
  28.            $sql='SELECT DISTINCT miejscowosc FROM oferta WHERE kategoria='.$kat[$j];
  29.            $wynik = mysql_query($sql)
  30.                    or die(mysql_error());
  31.            $lPoz=mysql_NumRows($wynik);
  32. ?>
  33.    
  34. <?php
  35.            echo 'group['.$pozycja.'][0]=new Option("wybierz") ';
  36.  
  37.            for ($i=1; $i<=$lPoz; $i++)
  38.                {
  39.    ?>
  40.    
  41. <?php
  42.                    $wiersz=mysql_fetch_array($wynik);
  43.                    echo 'group['.$pozycja.']['.$i.']=new Option("'.$wiersz[0].'")';
  44.                }        
  45.        }
  46. ?>


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:
  1. <select name="miejscowosc" id="miejscowosc" value="wybierz">
  2. <option value="brak" selected="selected">wybierz</option><option value="RUMIA">RUMIA</option><option value="MILWINO">MILWINO</option><option value="DONIMIERZ">DONIMIERZ</option><option value="LUZINO">LUZINO</option><option value="SMOŁDZIŃSKI LAS">SMOŁDZIŃSKI LAS</option><option value="ŁEBA">ŁEBA</option><option value="KOSAKOWO">KOSAKOWO</option><option value="REDA">REDA</option><option value="KŁOBUCZYNO">KŁOBUCZYNO</option><option value="MRZEZINO">MRZEZINO</option><option value="SMOLNO K/PUCKA">SMOLNO K/PUCKA</option><option value="SMOLNO K/ PUCKA">SMOLNO K/ PUCKA</option><option value="GDYNIA">GDYNIA</option><option value="BANINO">BANINO</option><option value="GDAŃSK">GDAŃSK</option><option value="PUCK">PUCK</option><option value="MOSTY">MOSTY</option><option value="DĘBKI">DĘBKI</option><option value="KOLECZKOWO">KOLECZKOWO</option><option value="GRABOWO KOŚCIERSKIE">GRABOWO KOŚCIERSKIE</option><option value="CZECZEWO">CZECZEWO</option><option value="WARZNO">WARZNO</option><option value="BIAŁOGÓRA">BIAŁOGÓRA</option>


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.