Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][php]Pola select.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
piotrooo89
Witam!

Mam pewien problem związany z js. Mianowicie:
Mam 2 pola select do których pobieram dane z bazy. Chciałbym aby pola te było od siebie zależne tzn. aby po wybraniu w jednym polu nazwiska klienta w kolejnym pokazały sie wszytskie jego auta. Szukałem na google i tu na foum ale niestety nie bardzo mi to pomogło. W js jestem noga...

Pozdrawiam.
kamikaze1945
Szukam tej samej odpowiedzi, ale na mojego posta tez nikt nie odpowiedział. Udało się Tobie rozwiązać ten problem ?
piotrooo89
no niestety sam próbuje coś wyskrobać ale niestety mam lekko pod górke... znalazłem skrypt który robi coś podobnego, ale niestety nie obsługuje on bazy danych a bez tego ani rusz działa na wpisanych danych...
tommy4
W czym problem?

Kod
<script type="text/javascript">
function pokaz_samochody(val)
{
    var cars = document.getElementById('cars');
    var opts = cars.getElementsByTagName('option');
    for(var i = 1; i < opts.length; i++)
    {
        optvalue = opts[i].getAttribute("value");
        x = optvalue.indexOf(':');
        client_id = optvalue.slice(0,x);
        if(client_id != val)
        {
        opts[i].style.display = 'none';
        }
        else
        {
        opts[i].style.display = 'block';
        }
    }
    cars.selectedIndex = 0;
}
</script>

<select name="client" onchange="pokaz_samochody(this.options[this.selectedIndex].value);">
<option value="0">Wybierz klienta</option>
<option value="1">Klient #1</option>
<option value="12">Klient #12</option>
</select>

<select name="cars" id="cars">
<option value="0:0" style="display: block;">Wybierz samochód</option>
<option value="1:1" style="display: none;">Samochód klienta nr #1 o id #1</option>
<option value="12:20" style="display: none;">Samochód klienta nr #12 o id #20</option>
<option value="12:10" style="display: none;">Drugi samochód klienta nr #12 o id #10</option>
</select>


Ładnie? biggrin.gif To teraz kliknąć na pomógł. ;p
Na firefoxie i operze powinno śmigać.

Na IE trzebaby pokombinować z wyrzucaniem tych opcji (getElementById('cars').innerHTML = ''); i wstawieniu nowych przez new Option.

Proponuję poczytać tutaj: http://www.javascriptkit.com/jsref/select.shtml pod nagłówiem Option Object.
kamikaze1945
Ja wczoraj znalazłem cos takiego. Ale na moim serwerze cos nie działa. Nie pobiera mi danych z tabeli
http://ajaxin.pl/2007/02/22/zalezne-od-sie...lowe-selecty/2/
piotrooo89
wszytsko fajnie... tylko jest taki problem. ja potrzebuje dodać do bazy id_klienta i id_samochodu.

mam taki formularz:
  1. <form name="dodaj_zlecenie" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2. Podaj dane klienta:
  3. <?php
  4. include('mysql.inc');
  5.  
  6. $sql = @mysql_query('SELECT id, imienazwisko FROM klienci');
  7.  
  8. echo '<select name="client" size="1" onchange="pokaz_samochody(this.options[this.selectedIndex].value);">';
  9.  
  10. while ($row=mysql_fetch_array($sql))
  11. {
  12. echo "<option value=$row[id]>$row[imienazwisko]</option>";
  13. }
  14. echo "</select>";
  15. ?>
  16. Wybierz samochód:
  17. <?php
  18. include('mysql.inc');
  19.  
  20. $sql = @mysql_query('SELECT * FROM samochody WHERE id_klienta='.$_GET['klienci'].'');
  21.  
  22. echo '<select name="cars" id="cars">';
  23.  
  24. while ($row=mysql_fetch_array($sql))
  25. {
  26. echo "<option value=$row[id]>$row[nazwa]</option>";
  27. }
  28. echo "</select>";
  29. ?>

i tak po kliknięciu na pierwszy select powinno być przesyłane id do drugiego formularza żebym do klauzuli WHERE mógł sobie dodać. a ponad to muszę mieć jeszcze te id z 1 i 2 selecta dodać do bazy.
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.