ďťż
Podstrony
|
telcocafeMam problem z automatycznym podmienieniem podkategori w zaleznosci od wybranej kategorii.Czyli mam w bazie samochody: Marka (Audi, BMW, Opel ...) Model ( w Audi a4, b5...) ( w BMW 316, 525 itp ) ( w Oplu astra, wectra, agila itp) Wydobywam z bazy dane umieszczam je w 2 oddzielnychh polach select. Bez problemu radze sobie z PHP i SQL. I problem mam z tym ze po zmianie np z Audi na BMW w polu model zamiast wartosci nowego samochodu (316, 525..) mam stare dane (a4, b5....) możesz dać kodzik? <select name=\"kategoria\"><option value=\"$id_kategoria\" selected> $kategoria </option> "; $wynik=mysql_query("SELECT * FROM kategoria WHERE nazwa not in ('$kategoria')"); for ($i=0; $i<@mysql_num_rows($wynik); $i++){ $wiersz=mysql_fetch_array($wynik); $nazwa=$wiersz['nazwa']; echo "<option value=\"".$wiersz["id_kategoria"]."\"> $nazwa </option> "; } echo"</select>"; /////////Wyswietla podaketegorie/////////////// $pyt1="SELECT podkat_id, id_podkat, nazwapod, id FROM ogloszenia o, podkat p WHERE o.podkat_id=p.id_podkat AND id='$id'"; $wyk1 = mysql_query($pyt1); $rzad1 = mysql_fetch_array($wyk1); $podkat = $rzad1['nazwapod']; $id_podkat = $rzad1['id_podkat']; echo " <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++) { $wiersz2=mysql_fetch_array($wynik2); $nazwapod=$wiersz2['nazwapod']; $id_podkat = $wiersz2['id_podkat']; echo "<option value=\"$id_podkat\"> $nazwapod </option> "; } echo"</select>"; /////////Koniec podkategorii//////////////// Link Mam nadzieję, że to... :) Użytkownik andrzej_aa edytował ten post 01 luty 2007, 15:26 to stare rozwiazanie i trudno bedzie w wartości : group[0][2]=new Option("Wired News","http://www.wired.com") group[1][0]=new Option("CNN","http://www.cnn.com") group[1][1]=new Option("ABC News","http://www.abcnews.com") Wstawić moje dane automatycznie pobierane z bazy SQL, chyba ze masz jakis pomysl Kodzik trzeba napisać dosyć długi, ale zobaczę co uda mi się zrobić ;) //edit strasznie namieszałeś w kodzie... przerobię Ci go troszkę ;) może nie będziesz zły :P //edit <form name="kategoriee"> <select name="kategoria" onchange="redirect(this.options.selectedIndex)"> <?php echo('<option value="'.$id_kategoria.'" selected>'.$kategoria.'</option>'); $wynik = mysql_query('SELECT * FROM kategoria'); for ($i = 0; $i < @mysql_num_rows($wynik); $i++) { $wiersz = mysql_fetch_array($wynik); echo('<option value="'.$wiersz['id_kategoria'].'"'); if ($wiersz['nazwa'] == $kategoria) echo(' selected'); echo('>'.$wiersz['nazwa'].'</option>'); } echo('</select>'); ?> <select name="podkat"> </select> </form> <script> <!-- /* Double Combo Script Credit By Website Abstraction (www.wsabstract.com) Over 200+ free Javascripts here! */ var groups = document.kategoriee.kategoria.options.length var group = new Array(groups) for (i = 0; i < groups; i++) group[i] = new Array() <?php /////////Wyswietla podaketegorie/////////////// $lista_kat = mysql_query('SELECT id_kategoria FROM kategoria'); $lista_kata = array(); while($d = mysql_fetch_array($lista_kat)) $lista_kata[] = $d; for ($i = 1; $i <= count($lista_kata); $i++) { $wynik2 = mysql_query('SELECT * FROM podkat WHERE kat_id="'.$i.'"'); for ($ii = 0; $ii < @mysql_num_rows($wynik2); $ii++) { $wiersz2 = mysql_fetch_array($wynik2); echo('group['.$i.']['.$ii.'] = new Option("'.$wiersz2['nazwapod'].'", "'.$wiersz2['id_podkat'].'");'."\n"); } } /////////Koniec podkategorii//////////////// ?> var temp = document.kategoriee.podkat 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 } //--> </script>Kod mam nadzieję, że jest dobry, ponieważ nie mam Twoich informacji w bazie danych i nie mogłem niczego przetestować... //edit Troszeczkę poprawiony kodzik ;) Miał kilka błędów... Użytkownik andrzej_aa edytował ten post 05 luty 2007, 10:59 Dzieki zobacze jak to smiga u mnie. Próbowałem to zmienic wykorzystujac Twój kod, ale nie wyszło. Stosowane inne zmienne zmyliły mnie. Widze ze nie da rady, jak przedstawic ci wszystko pokolei: STRUKTURA BAZY SQL: 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=4; INSERT INTO `kategoria` VALUES (1, 'Praca', 'Ofertypracy', 2); INSERT INTO `kategoria` VALUES (2, 'Auta', 'Kupno i sprzedaż samochodów', 0); INSERT INTO `kategoria` VALUES (3, 'Nieruchomości', 'Domy, mieszkania, ', 1); 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=50; INSERT INTO `ogloszenia` VALUES (1, 1, 2, 1, 'Tytul ogl', 0, 10, 'bleble', '2007-02-02'); INSERT INTO `ogloszenia` VALUES (2, 1, 1, 1, 'TYTUl', 0, 16, 'Strona dochodzi do Ładu ', '2007-02-02'); 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=5; INSERT INTO `podkat` VALUES (1, 1, 'Szukam pracy', 'Oferty pracy'); 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'); ////////////////////////////////////////// OBECNY PLIK edycja.php : <? $host="localhost"; $bazalogin="twoj_login"; $bazahaslo="wstaw_swoje_haslo"; $baza="nazwa_bazy"; $conn=mysql_connect($host,$bazalogin,$bazahaslo); mysql_select_db($baza); $id = $_GET['id']; echo("<form action=\"edytuj_ok.php?id=$id\" method=\"post\">"); $zap = "SELECT * FROM ogloszenia o, kategoria k WHERE o.kategoria_id=k.id_kategoria AND id='$id'"; $wyk = mysql_query($zap); $rzad = mysql_fetch_array($wyk); $tytul = $rzad['tytul']; $tresc = $rzad['tresc']; $kategoria = $rzad['nazwa']; $id_kategoria=$rzad['id_kategoria']; echo "<input type=hidden name=id value=\"$id\"> <table border=\"1\" width=\"600\" height=\"auto\"> <tr><td width=\"60\"> Tytul </td> <td width=\"530\"> <input type=text size=80 name=tytul value='$tytul'></td></tr <tr><td width=\"60\"> Kategoria</td> <td width=\"530\"> <select name=\"kategoria\"><option value=\"$id_kategoria\" selected> $kategoria </option> "; $wynik=mysql_query("SELECT * FROM kategoria WHERE nazwa not in ('$kategoria')"); for ($i=0; $i<@mysql_num_rows($wynik); $i++){ $wiersz=mysql_fetch_array($wynik); $nazwa=$wiersz['nazwa']; echo "<option value=\"".$wiersz["id_kategoria"]."\"> $nazwa </option> "; } echo"</select></td></tr>"; /////////Wyswietla podaketegorie/////////////// $pyt1="SELECT podkat_id, id_podkat, nazwapod, id FROM ogloszenia o, podkat p WHERE o.podkat_id=p.id_podkat AND id='$id'"; $wyk1 = mysql_query($pyt1); $rzad1 = mysql_fetch_array($wyk1); $podkat = $rzad1['nazwapod']; $id_podkat = $rzad1['id_podkat']; echo "<td width=\"60\"> Podkat</td> <td width=\"530\"> <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++) { $wiersz2=mysql_fetch_array($wynik2); $nazwapod=$wiersz2['nazwapod']; $id_podkat = $wiersz2['id_podkat']; echo "<option value=\"$id_podkat\"> $nazwapod </option> "; } echo"</select></td></tr>"; /////////Koniec podkategorii//////////////// echo "<tr><td width=\"60\"> Tresc</td> <td width=\"530\"> <textarea name=\"tresc\" cols=\"60\" rows=\"20\">$tresc</textarea> </td></tr> </table> <input type=\"submit\" value=\"Popraw\"></form>"; echo '<a href=main.php?pokaz=active>powrót</a>'; ?> </body></html> ///////////////////////////////// Dla scislosci dodam jeszcze kod pliku edytuj_ok.php ktory pobiera kod z edycja.php <? $host="localhost"; $bazalogin="twoj_login"; $bazahaslo="wstaw_swoje_haslo"; $baza="nazwa_bazy"; $conn=mysql_connect($host,$bazalogin,$bazahaslo); mysql_select_db($baza); $id = $_POST['id']; $tytul = htmlspecialchars($_POST['tytul']); $tresc = nl2br( $_POST['tresc']); $kategoria=$_POST['kategoria']; $podkat=$_POST['podkat']; $zap = "UPDATE ogloszenia SET tytul='$tytul', tresc='$tresc', kategoria_id='$kategoria', podkat_id='$podkat' WHERE id='$id'"; $wyk = mysql_query($zap); echo 'Zaktualizowano'; ?> ///////////////////////////// W tych plikach usunelem spr sesji - czy admin jest zalogowany, by nie mieszac. Jak wgrasz te baze i te pliki na serwer to zeby sie odwolac i módz edytowac ogloszenie podaj adres edytuj.php?id=2 gdzie id=2 odpowiada za nr ogloszenia w bazie. /////////////WAZNE////////// Prosze nie zmieniaj mi nazw powyzszych zmiennych bo sie nie połapię Użytkownik a8x4 edytował ten post 18 luty 2007, 16:46 Wczoraj trochę pogrzebałem w Javascript więc może Ci pomogę ;) I dzięki za pliki... Są wielce pomocne. Już sie zabieram do roboty :) //edit Trochę się napracowałem ;) Coś się należy :P Żartuję ;) <? $host="localhost"; $bazalogin="twoj_login"; $bazahaslo="wstaw_swoje_haslo"; $baza="nazwa_bazy"; $conn=mysql_connect($host,$bazalogin,$bazahaslo); mysql_select_db($baza); $id = $_GET['id']; echo("<form action=\"edytuj_ok.php?id=$id\" method=\"post\" name=\"formatka\">"); $zap = "SELECT * FROM ogloszenia o, kategoria k WHERE o.kategoria_id=k.id_kategoria"; $wyk = mysql_query($zap); $rzad = mysql_fetch_array($wyk); $tytul = $rzad['tytul']; $tresc = $rzad['tresc']; $kategoria = $rzad['nazwa']; $id_kategoria=$rzad['id_kategoria']; echo "<input type=hidden name=id value=\"$id\"> <table border=\"1\" width=\"600\" height=\"auto\"> <tr><td width=\"60\"> Tytul </td> <td width=\"530\"> <input type=text size=80 name=tytul value='$tytul'></td></tr> <tr><td width=\"60\"> Kategoria</td> <td width=\"530\"> <select name=\"kategoria\" onchange=\"redirect(this.options.selectedIndex)\">"; $wynik=mysql_query("SELECT * FROM kategoria"); for ($i=0; $i<@mysql_num_rows($wynik); $i++){ $wiersz=mysql_fetch_array($wynik); $nazwa=$wiersz['nazwa']; echo "<option value=\"".$wiersz["id_kategoria"]."\"> $nazwa </option> "; } echo"</select>"; ?> <script> document.formatka.kategoria.value = '<?= $id_kategoria ?>'; </script> <? echo"</td></tr>"; /////////Wyswietla podaketegorie/////////////// echo "<td width=\"60\"> Podkat</td> <td width=\"530\"> <select name=\"podkat\"> "; echo"</select>"; ?> <script> <!-- /* Double Combo Script Credit By Website Abstraction (www.wsabstract.com) Over 200+ free Javascripts here! */ var groups = document.formatka.kategoria.options.length var group = new Array(groups) for (i = 0; i < groups; i++) group[i] = new Array() <?php /////////Wyswietla podaketegorie/////////////// $lista_kat = mysql_query('SELECT id_kategoria FROM kategoria'); $lista_kata = array(); while($d = mysql_fetch_array($lista_kat)) $lista_kata[] = $d; for ($i = 1; $i <= count($lista_kata); $i++) { $wynik2 = mysql_query('SELECT * FROM podkat WHERE kat_id="'.$i.'"'); for ($ii = 0; $ii < @mysql_num_rows($wynik2); $ii++) { $wiersz2 = mysql_fetch_array($wynik2); echo('group['.$i.']['.$ii.'] = new Option("'.$wiersz2['nazwapod'].'", "'.$wiersz2['id_podkat'].'");'."\n"); } } /////////Koniec podkategorii//////////////// ?> var temp = document.formatka.podkat 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 } redirect(document.formatka.kategoria.options[0].value); //--> </script> <? echo "</td></tr>"; /////////Koniec podkategorii//////////////// echo "<tr><td width=\"60\"> Tresc</td> <td width=\"530\"> <textarea name=\"tresc\" cols=\"60\" rows=\"20\">$tresc</textarea> </td></tr> </table> <input type=\"submit\" value=\"Popraw\"></form>"; echo '<a href=main.php?pokaz=active>powrót</a>'; ?> </body></html> Przykładzik... ;) //edit Trochę poprawiłem. Wolny od mniejszych błędów... Jeśli coś jeszcze to pisz :) Z chęcią trochę pouczę się Javascriptu ;) Użytkownik andrzej_aa edytował ten post 05 luty 2007, 11:33 Sprawdziłem, ale nie wyświetla mi podkategorii. Jest puste pole. W kodzie źródłowym <select> podkategorii jest pusty, a poniżej poprawnie zainicjowane tablice z podkategoriami. Więc tkwi jeszcze drobny błąd z przekazaniem danych z JS do kodu z <celect>. PS Twój link z przykładem nie działa i nie mogę zobaczyć. Użytkownik a8x4 edytował ten post 04 marzec 2007, 21:13 Nadal nie mogę poradzić sobie z tym problemem :-( Nie wiem, u mnie wszystko działało... Może cosik źle wstawiasz? :/ Użytkownik andrzej_aa edytował ten post 05 marzec 2007, 10:25 Mozesz podać jeszcze raz ten link z twego serwera ? bo obecny nie działa. sprawdzałem u siebie ten kod i nie łączy ze sobą kategoriii z podkategorią. Użytkownik a8x4 edytował ten post 05 marzec 2007, 12:53 Moze ma cie pomysł jak to połączyć z SKRYPT AJAX Demo działania Użytkownik a8x4 edytował ten post 06 marzec 2007, 23:38 Z Ajaxem może będzie łatwiej, ale spróbuj sam to zrobić... Trzeba się czegoś czasem samemu nauczyć ;) Spoko poradziłem sobie z katagoriami. Wyswietlaja sie ok, ale z tymi podkategoriami w pliku getCiti.php nie moge sobie poradzic. :( Andrzej zobacz temat : na forum php.pl poruszyłem ten problem i mam rozwiązanie ale połowiczne. Jak Ci pomoże w rozwiązaniu to zobacz. Użytkownik a8x4 edytował ten post 08 marzec 2007, 14:44 |
|||
Sitedesign by AltusUmbrae. |