Przeanalizowałem kod. Jest ok ma tylko 1 wadę, że w jednej tabelce trzymsz kategorie i podkategorie.
Podaję Ci moją bazę :
--
-- Struktura tabeli dla `kategoria`
--
CREATE TABLE `kategoria` (
`id_kategoria` int(11) NOT NULL AUTO_INCREMENT,
`nazwa` varchar(55) NOT NULL DEFAULT '',
`opis` text NOT NULL,
`poziom` int(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`id_kategoria`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
--
-- Zrzut danych tabeli `kategoria`
--
INSERT INTO `kategoria` VALUES (1, 'Praca', 'Ofertypracy', 1);
INSERT INTO `kategoria` VALUES (2, 'Samochody', 'Kupno i sprzedaż samochodów', 1);
INSERT INTO `kategoria` VALUES (3, 'Nieruchomości', 'Domy, mieszkania, garaże, pomieszczenia gospodarcze', 1);
INSERT INTO `kategoria` VALUES (4, 'Towarzyskie', 'opis kategorii', 3);
INSERT INTO `kategoria` VALUES (5, 'Nauka', 'Szkoła, studia, korepetycje', 2);
-- --------------------------------------------------------
--
-- Struktura tabeli dla `ogloszenia`
--
CREATE TABLE `ogloszenia` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kategoria_id` int(11) NOT NULL DEFAULT '1',
`podkat_id` int(11) NOT NULL DEFAULT '1',
`user_id` int(11) NOT NULL DEFAULT '0',
`tytul` varchar(55) NOT NULL DEFAULT '',
`czy` int(1) NOT NULL DEFAULT '0',
`czytano` int(20) NOT NULL DEFAULT '0',
`tresc` text NOT NULL,
`data` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;
--
-- Zrzut danych tabeli `ogloszenia`
--
INSERT INTO `ogloszenia` VALUES (1, 1, 2, 2, 'Praca dla informatyka', 1, 5, 'Wymagania...\r\nOerta...\r\nTel. 755 67 67', '23-02-07 17:04');
INSERT INTO `ogloszenia` VALUES (2, 1, 7, 2, 'Staż w Urzedzie Miasta Olsztyn', 1, 4, 'Staż na okres 6 miesięcy. Wymagane wykształcenie wyższe prawnicze, zaświadczenie o niekaalności, prawo jazdy kategoria B\r\nWiecej informacji po nr telefonu 755 6734', '23-02-07 17:07');
INSERT INTO `ogloszenia` VALUES (3, 1, 1, 2, 'Mlody szuka pracy jako kierowca.', 0, 12, 'Dyspozycyjny 25 lat szuka pracy. Wyksztalcenie srednie,prawo jazdy kat. B, C.\r\nTel. 878 898 899', '23-02-07 17:11');
INSERT INTO `ogloszenia` VALUES (4, 2, 6, 1, 'Sprzedam traka cena 25 tys', 1, 1, 'Rocznik 1995. Telefon 89 766 56 56 lub 655 555 666', '23-02-07 17:13');
INSERT INTO `ogloszenia` VALUES (5, 1, 1, 2, 'dobre ogl', 1, 1, 'ok ok ok;p', '07-03-07 23:41');
INSERT INTO `ogloszenia` VALUES (6, 1, 32, 2, 'okokoko', 1, 4, 'okokoko', '07-03-07 23:52');
-- --------------------------------------------------------
--
-- Struktura tabeli dla `podkat`
--
CREATE TABLE `podkat` (
`id_podkat` int(11) NOT NULL AUTO_INCREMENT,
`kat_id` int(11) NOT NULL DEFAULT '1',
`nazwapod` varchar(55) NOT NULL DEFAULT '',
`opispod` text NOT NULL,
PRIMARY KEY (`id_podkat`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;
--
-- Zrzut danych tabeli `podkat`
--
INSERT INTO `podkat` VALUES (1, 1, 'Szukam prac', 'Oferty dla bezrobotnych');
INSERT INTO `podkat` VALUES (2, 1, 'Dam pracę', 'Oferty pracodawców');
INSERT INTO `podkat` VALUES (3, 2, 'Osobowe auta', 'Samochody osobowe');
INSERT INTO `podkat` VALUES (4, 2, 'Maszyny', 'gggg');
INSERT INTO `podkat` VALUES (5, 5, 'Korepetycje', 'Dodatkowe zajęcia ;-)');
INSERT INTO `podkat` VALUES (6, 2, 'Ciężarowe', 'Auta, autobusy, maszyny rolnicze budowlane itp');
INSERT INTO `podkat` VALUES (7, 1, 'Staż', 'dla absolwentow');
INSERT INTO `podkat` VALUES (8, 4, 'Y pozna X', 'y - x');
INSERT INTO `podkat` VALUES (9, 4, 'X pozna Y', 'x-y');
Przerobiłem Twoje skrypty i wyszło mi takie coś:
Plik htmlselects.php:
<?php
require("config.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ajaxin.pl - Zależne od siebie HTML'owe selecty - DEMO</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="htmlselects.js"></script>
</head>
<body>
<?php
$jaki = $_GET['jaki'];
$zap = "SELECT * FROM ogloszenia o, kategoria k WHERE o.kategoria_id=k.id_kategoria
AND id='$jaki'";
$tytul = $rzad['tytul'];
$tresc = $rzad['tresc'];
$kategoria = $rzad['nazwa'];
$id_kategoria=$rzad['id_kategoria'];
//
echo("<form name="doublecombo
" id="doublecombo
" action="ddl
.php
" method="post
">");
echo" <select size="1" name="a
" id="a
" onChange="getLevel
(this
)"> <option value="$id_kategoria" selected> $kategoria</option> ";
$query = mysql_query("SELECT * FROM kategoria WHERE nazwa not in ('$kategoria')");
echo '<option value="'.$myrow["id_kategoria"].'">'.$myrow["nazwa"].'</option>'."n"; }
/////////Wyswietla podaketegorie///////////////
$pyt1="SELECT podkat_id, id_podkat, nazwapod, id FROM ogloszenia o, podkat p WHERE
o.podkat_id=p.id_podkat AND id='$jaki'";
$podkat = $rzad1['nazwapod'];
$id_podkat = $rzad1['id_podkat'];
<select name="podkat"><option value="$id_podkat" selected> $podkat</option> ";
$wynik2=mysql_query("SELECT * FROM podkat WHERE kat_id='$id_kategoria' AND nazwapod not in ('$podkat')"); for ($i=0; $i<mysql_num_rows($wynik2); $i++) {
$nazwapod=$wiersz2['nazwapod'];
$id_podkat = $wiersz2['id_podkat'];
echo "<option value="$id_podkat"> $nazwapod </option> " ; } /////////Koniec podkategorii////////////////
<select name="b" id="b" onChange="getLevel(this)" disabled>
<option selected>-- puste --</option>
</select>
<input type=hidden name=id value="$jaki"> <br />
Tytul <input type=text size=60 name=tytul value='$tytul'> <br /> <br />
Tresc <textarea name="tresc" cols="45" rows="10">$tresc</textarea></form> ";
?>
</body>
</html>
Plik dll.php:
<?php
header('Content-Type: text/xml'); require("config.php");
/* Sprawdzanie czy id jest liczbą - w PHP od wersji 5.2
if(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) == FALSE) return false;
*/
//dla starszych wersji PHP
$id = (int)$_GET["id"];
$query = mysql_query("SELECT * FROM podkat WHERE kat_id = ".$id."");
echo '<?xml version="1.0" encoding="utf-8" ?>' .'<records>';
{
echo '<option id="'.$myrow["id_podkat"].'">'.$myrow["nazwapod"].'</option>'; }
}
else
{
echo '<option id="1">Brak podkategorii!</option>'; }
?>
Do tego config.php:
<?
// ***************************************
// DANE DOSTĘPOWE DO BAZY
$host="localhost";
$bazalogin="login";
$bazahaslo="haslo";
$baza="nazwa";
// ***************************************
?>
Jak zainstalujesz to zobaczysz ze działa, tylko że po zmianie podkategorii nie zmienia w kodzie źródłowym wartości value. Coś namieszałem