Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne 2 selecty
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
rachwal
witam,
mam problem, mianowicie:

na stronie mamy dwa pola Select,
w zaleznosci od wyboru pierwszego selecta,
w drugim wyswietlaja sie odpowiednie opcje,

wyobrazic mozna to sobie na podstawie modeli samochodow
i ich typow, po wybraniu konkretnego modelu w drugim polu
wyswietlaja mi sie tylko typy danego modelu.

chcialbym to zrobic bez przeladowywania strony (czyli pewnie JS),
a typy i modele, czyli dane do obu selectow pobierac z bazy :/

za wszelka pomoc i sugestie dziekuje,
AxZx
i nikt od sierpnia ubieglego roku nie odpowiedzial
ja borykam sie z tym samym problemem i nikt sie nie chce podzielic wiadomosciami na ten temat

a moze lepiej jednak odswiezac strone?
bo jak ktos ma wylaczony JS?
php programmer
robiłem to jakiś miesiąc temu, to są fragmenty najważniejszych kodów

plik CSV
Kod
Wszystkie
Nieruchomo¶ci         | Sprzedam  | Kupię | Poszukuję do wynajęcia | Mam do wynajęcia | Zamienię
Motoryzacja           | Sprzedam  | Kupię | Zamienię | Czę¶ci zamienne
Sprzęt Elektroniczny  | Sprzedam  | Kupię | Zamienię
Rowery                | Sprzedam  | Kupię | Zamienię | Wspólna jazda



plik php+js
Kod
<?
$plik = file('ogloszenia/kategorie.csv');
$ile = count($plik);

echo '<script language="javascript">'."\n";


// zmienne odpowiadające tablicy POST
echo "var kategoria  = '".$kategoria."';\n";
echo "var podkategoria = '".$podkategoria."';\n";

// utworzenie tablicy kategorii
echo 'var kategorie = new Array();'."\n";

// utworzrzenie tablic podkategori
for($i=0;$i<$ile;$i++)
  echo 'kategorie['.$i.'] = new Array();'."\n";

// wypełnienie tablic
for($i=0;$i<$ile;$i++){
  $podkategorie = explode('|',trim($plik[$i]));
  $ilosc1 = count($podkategorie);
  for($k=0;$k<$ilosc1;$k++)
      echo 'kategorie['.$i.']['.$k.']="'.trim($podkategorie[$k]).'";'."\n";
  }
echo '</script>';
?>

<script language="javascript">

function SetKategorie(){
var KS = document.getElementById('kategoria');
for (i=0;i<kategorie.length;i++)
   KS.options[KS.length] = new Option(kategorie[i][0],kategorie[i][0]);
KS.value = kategoria;
}

function SetPodKategorie(){
var PKS = document.getElementById('podkategoria');
var wybrana = document.getElementById('kategoria').selectedIndex;
for (i=PKS.length-1;i>=0;i--) PKS.remove(i);
PKS.options[0] = new Option('Wszystkie','Wszystkie');
for (i=1;i<kategorie[wybrana].length;i++)
   PKS.options[PKS.length] = new Option(kategorie[wybrana][i],kategorie[wybrana][i]);
}

</script>


  1. <SELECT name="kategoria" id="kategoria" style="width:150px" onChange="SetPodKategorie()"></SELECT>
  2. <SELECT name="podkategoria" id="podkategoria" style="width:150px;"></SELECT>
revyag
Zwykły javascript.
Kod
<script type="text/javascript">
function ins() {
    var models = document.getElementById("model");
    var opttypes = document.getElementById("types");
    var types =
        new Array(
            new Array("typ1m1","typ2m1","typ3m1"),
            new Array("typ1m2","typ2m2","typ3m2"),
            new Array("typ1m3","typ2m3","typ3m3"),
            new Array("typ1m4","typ2m4","typ3m4")
        );
    for(var i = 0; i < types[models.selectedIndex].length; i++) {
        opttypes.options[i] = new Option(types[models.selectedIndex][i],types[models.selectedIndex][i]);
    }
}
</script>

  1. <select name="model" id="model" onchange="ins()">
  2. <option value="model1">model1</option>
  3. <option value="model2">model2</option>
  4. <option value="model3">model3</option>
  5. <option value="model4">model4</option>
  6. </select><br /><br />
  7.  
  8. <select name="types" id="types">
  9. </select>

Tworzone opcje selecta mają takie samo value i text który jest widoczny jako opcja.
AxZx
Cytat(revyag @ 2005-11-04 09:26:37)
Tworzone opcje selecta mają takie samo value i text który jest widoczny jako opcja.

to nie dobrze
bo to jest wtedy 2 razy wiecej roboty, tzn wiecej zapytan do bazy
ja potrzebuje id tej podbranzy pobrane z bazy

czyli ma byc <option value="ID">podbranza</option>

a pozatym cos jest nie tak, bo jak w pierwszej branzy beda podbranze to powinny sie wyswietlic a sie nie wyswietlaja, dopiero po odswiezeniu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.