Próbuje zrobić dwa pola select, w którym zawartość drugiego zmienia się w zależności od pierwszego. Skorzystałem z pomocy tego forum i przerobiłem skrypcik na moje potrzeby który działa. Chciałbym dokonać w nim jednak pewnej (pewnie niewielkiej zmiany) ale nie wiem jak. Otóż
Zawartość dla każdego pola select pobierana jest z dwóch różnych tabel (zrzut dwóch tabel poniżej). W jednej tabeli jest kategoria główna, w drugiej podkategoria dla danych kategori. Czasami jednak kategoria główna nie ma żadnej podkategorii i tu potrzebuję pomocy bo chciałbym zrobić tak żeby w takim przypadku drugi select poprostu zniknął, a jeśłi będzie jakaś podkategoria to żeby się pojawił (tylko że pojawienie spowinno byc razem z tabelką w html) bo docelowo będę chciał zrobić żeby wstawiał mi się wiersz. w tabeli. Jeśli pomoglibyście mi różnież przy optymalizacji kodu to też byłbym wdzięczny bo raczej chyba nie jest on za bardzo wydajny.
Dziękuję za jakiekolwiek próby pomocy.
Pozdrawiam
zrzut tabel
CREATE TABLE `kategoria_programow` ( `id` int(4) NOT NULL AUTO_INCREMENT, `Nazwa` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=18 ; -- -- Zrzut danych tabeli `kategoria_programow` -- INSERT INTO `kategoria_programow` VALUES (9, 'Internet'); INSERT INTO `kategoria_programow` VALUES (8, 'Dodatki'); INSERT INTO `kategoria_programow` VALUES (7, 'Bezpieczeństwo'); INSERT INTO `kategoria_programow` VALUES (6, 'Antywirusy'); INSERT INTO `kategoria_programow` VALUES (10, 'Kompresory plików'); INSERT INTO `kategoria_programow` VALUES (11, 'Menedżery plików'); INSERT INTO `kategoria_programow` VALUES (12, 'Multimedia'); INSERT INTO `kategoria_programow` VALUES (13, 'Programy biurowe'); INSERT INTO `kategoria_programow` VALUES (14, 'Programy CD&DVD'); INSERT INTO `kategoria_programow` VALUES (15, 'Sterowniki'); INSERT INTO `kategoria_programow` VALUES (16, 'System'); INSERT INTO `kategoria_programow` VALUES (17, 'Webmaster'); -- -------------------------------------------------------- -- -- Struktura tabeli dla `kategoria_programowii` -- CREATE TABLE `kategoria_programowii` ( `id` int(4) NOT NULL AUTO_INCREMENT, `Nazwa_glowna` varchar(70) NOT NULL DEFAULT '', `Podkategoria` varchar(70) NOT NULL DEFAULT 'BRAK', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=102 ; -- -- Zrzut danych tabeli `kategoria_programowii` -- INSERT INTO `kategoria_programowii` VALUES (1, 'Bezpieczeństwo', 'Anty-spam'); INSERT INTO `kategoria_programowii` VALUES (2, 'Bezpieczeństwo', 'Any-spyware'); INSERT INTO `kategoria_programowii` VALUES (3, 'Bezpieczeństwo', 'Firewalle'); INSERT INTO `kategoria_programowii` VALUES (4, 'Bezpieczeństwo', 'Generatory haseł'); INSERT INTO `kategoria_programowii` VALUES (5, 'Bezpieczeństwo', 'Inne programy związane z bezpieczeństwem'); INSERT INTO `kategoria_programowii` VALUES (6, 'Bezpieczeństwo', 'Odzyskiwanie haseł'); INSERT INTO `kategoria_programowii` VALUES (7, 'Bezpieczeństwo', 'Szyfrowanie danych'); INSERT INTO `kategoria_programowii` VALUES (8, 'Bezpieczeństwo', 'Zarządzanie hasłami'); INSERT INTO `kategoria_programowii` VALUES (9, 'Dodatki', 'SimLock'); INSERT INTO `kategoria_programowii` VALUES (10, 'Dodatki', 'Spolszczenia'); INSERT INTO `kategoria_programowii` VALUES (21, 'Internet', 'Komunikatory głosowe'); INSERT INTO `kategoria_programowii` VALUES (22, 'Internet', 'Komunikatory internetowe'); INSERT INTO `kategoria_programowii` VALUES (26, 'Internet', 'Obsługa kamer internetowych'); INSERT INTO `kategoria_programowii` VALUES (27, 'Internet', 'Odtwarzacze stacji radiowych i TV'); INSERT INTO `kategoria_programowii` VALUES (33, 'Internet', 'Serwery FTP'); INSERT INTO `kategoria_programowii` VALUES (34, 'Internet', 'Serwery poczty elektronicznej'); INSERT INTO `kategoria_programowii` VALUES (35, 'Internet', 'Serwery WWW'); INSERT INTO `kategoria_programowii` VALUES (36, 'Internet', 'Telefonia internetowa'); INSERT INTO `kategoria_programowii` VALUES (37, 'Internet', 'Zdalny dostęp'); INSERT INTO `kategoria_programowii` VALUES (42, 'Multimedia', 'Konwertery'); INSERT INTO `kategoria_programowii` VALUES (43, 'Multimedia', 'Narzędzia DVD'); INSERT INTO `kategoria_programowii` VALUES (44, 'Multimedia', 'Narzędzie do nagrywania dĽwięku'); INSERT INTO `kategoria_programowii` VALUES (45, 'Multimedia', 'Obróbka audio'); INSERT INTO `kategoria_programowii` VALUES (46, 'Multimedia', 'Obróbka grafiki'); INSERT INTO `kategoria_programowii` VALUES (47, 'Multimedia', 'Obróbka video'); INSERT INTO `kategoria_programowii` VALUES (48, 'Multimedia', 'Odtwarzacze plików audio i video'); INSERT INTO `kategoria_programowii` VALUES (49, 'Multimedia', 'Odtwarzacze plików muzycznych'); INSERT INTO `kategoria_programowii` VALUES (50, 'Multimedia', 'Odtwarzacze płyt DVD'); INSERT INTO `kategoria_programowii` VALUES (51, 'Multimedia', 'Pokazy slajdów'); INSERT INTO `kategoria_programowii` VALUES (52, 'Multimedia', 'Przeglądarki graficzne'); INSERT INTO `kategoria_programowii` VALUES (53, 'Multimedia', 'Rippery'); INSERT INTO `kategoria_programowii` VALUES (54, 'Multimedia', 'Rozszerzenia multimedialne'); INSERT INTO `kategoria_programowii` VALUES (55, 'Multimedia', 'Zrzutery ekranów'); INSERT INTO `kategoria_programowii` VALUES (56, 'Programy biurowe', 'Arkusze kalkulacyjne'); INSERT INTO `kategoria_programowii` VALUES (57, 'Programy biurowe', 'Edytory tekstów'); INSERT INTO `kategoria_programowii` VALUES (58, 'Programy biurowe', 'Finsanse'); INSERT INTO `kategoria_programowii` VALUES (59, 'Programy biurowe', 'Inne programy biurowe'); INSERT INTO `kategoria_programowii` VALUES (60, 'Programy biurowe', 'Pakiety biurowe'); INSERT INTO `kategoria_programowii` VALUES (61, 'Programy biurowe', 'PDF'); INSERT INTO `kategoria_programowii` VALUES (62, 'Programy CD&DVD', 'Inne programy CD&DVD'); INSERT INTO `kategoria_programowii` VALUES (63, 'Programy CD&DVD', 'Narzęzia do wypalania płyt CD oraz DVD'); INSERT INTO `kategoria_programowii` VALUES (64, 'Programy CD&DVD', 'Wirtualne napędy'); INSERT INTO `kategoria_programowii` VALUES (65, 'Programy CD&DVD', 'Zarządanie obrazami płyt'); INSERT INTO `kategoria_programowii` VALUES (66, 'Sterowniki', 'Karty graficzne'); INSERT INTO `kategoria_programowii` VALUES (67, 'Sterowniki', 'Karty muzyczne'); INSERT INTO `kategoria_programowii` VALUES (68, 'Sterowniki', 'Karty sieciowe'); INSERT INTO `kategoria_programowii` VALUES (69, 'Sterowniki', 'Płyty główne'); INSERT INTO `kategoria_programowii` VALUES (70, 'System', 'Archiwizacja (backup) danych'); INSERT INTO `kategoria_programowii` VALUES (71, 'System', 'Czyszczenie rejestru'); INSERT INTO `kategoria_programowii` VALUES (72, 'System', 'Diagnostyka'); INSERT INTO `kategoria_programowii` VALUES (73, 'System', 'Edytory tekstu'); INSERT INTO `kategoria_programowii` VALUES (74, 'System', 'Inne programy systemowe'); INSERT INTO `kategoria_programowii` VALUES (75, 'System', 'Kalendarze');
mój skrypt
[php]
$url = 'localhost';
$login = '';
$pass = '';
$baza ='';
$polaczenie=mysql_connect($url,$login,$pass);
$wybor=mysql_select_db($baza);
$table_name2='kategoria_programowii';
$table_name='kategoria_programow';
?>
<form name="doublecombo">
<p><select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<?php
$sql_I = "SELECT * FROM $table_name";
$result = @mysql_query($sql_I);
echo "<option selected value=''>wybierz</option>";
while ($row3 = mysql_fetch_array($result)) {
$wartosc_1=$row3['Nazwa'];
echo "<option value='$wartosc_1'>$wartosc_1</option>";
}
?>
</select><br><br>
<select name="stage2" size="1">
</select><br>
<script>
<!--
var groups=document.doublecombo.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
group[0][0]=new Option("","BRAK")
<?php
$sql_I = "SELECT * FROM $table_name";
$result = mysql_query($sql_I);
$licznik1=1;
while ($row3 = mysql_fetch_array($result)) {
$wartosc_1=$row3['Nazwa'];
$licznik2=0;
$sql_III = "SELECT * FROM $table_name2 where Nazwa_glowna like '$wartosc_1'";
$result4 = mysql_query($sql_III);
$sql_IIV = "SELECT count(*)ilosc FROM $table_name2 where Nazwa_glowna like '$wartosc_1'";
$resultIIV = mysql_query($sql_IIV);
$row41=mysql_fetch_array($resultIIV);
if ($row41['ilosc'])
{
while ($row41 = mysql_fetch_array($result4))
{
if ($licznik2==0)
{
?>
group[<?php echo $licznik1;?>][<?php echo $licznik2;?>]=new Option("Wybierz")
<?php
$licznik2++;
}
else
{
$wartosci3=$row41['Podkategoria'];
?>
group[<?php echo $licznik1;?>][<?php echo $licznik2;?>]=new Option(" <?php echo $wartosci3;?>")
<?php
$licznik2++;
}
}
}
else
{
$wartosci3="Brak Podkategorii";
?>
group[<?php echo $licznik1;?>][<?php echo $licznik2;?>]=new Option(" <?php echo $wartosci3;?>")
<?php
$licznik2++;
}
$licznik1++;
}
?>
var temp=document.doublecombo.stage2
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
function go(){
location=temp.options[temp.selectedIndex].value
}
//-->
</script>