![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Mam problem z aktywnym, bądź nieaktywnym polem SELECT.
W bazie danych mam wpisane państwa i chcę aby po wybraniu Polski był dostępny SELECT z województwami czyli możliwość wybrania województwa, a po wybraniu innej opcji (innego państwa) zablokowany wybór (z logicznych przyczyn). Próbowałem dodać przed SELECT-em z województwami: if($wojewodztwo['id'] == 135) ?> ale nie działało. W czym jest problem?? Całość: Baza danych MySql: Kod CREATE TABLE IF NOT EXISTS `panstwo` ( `id` int(10) unsigned NOT NULL, `nazwa` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Zrzut danych tabeli `panstwa` -- INSERT INTO `panstwo` (`id`, `nazwa`) VALUES (1, 'Afganistan'), (2, 'Albania'), (3, 'Algieria'), (4, 'Andora'), (5, 'Angola'), (6, 'Antigua i Barbuda'), (7, 'Arabia Saudyjska'), ..... (165, 'Zumbia'); Docelowy plik PHP: Kod <select name="panstwo" id="panstwo"> <option value="0">Wybierz państwo</option> <?php //pobranie listy państw $panstwa = pobierzPanstwa(); if(isset($_POST['panstwo'])) $panstwSel = $_POST['panstwo']; else $panstwSel = '0'; ?> <?php foreach($panstwa as $panstwo): ?> <option value="<?php echo $panstwo['id']; ?>" <?php if($panstwo['id'] == $panstwSel) echo 'selected'; ?>><?php echo $panstwo['nazwa']; ?></option> <?php endforeach; ?> </select> Kod <select name="wojewodztwo" id="wojewodztwo"> <option value="0">Wybierz województwo</option> <?php //pobranie listy wojewodztw $wojewodztwa = pobierzWojewodztwa(); if(isset($_POST['wojewodztwo'])) $wojewSel = $_POST['wojewodztwo']; else $wojewSel = '0'; ?> <?php foreach($wojewodztwa as $wojewodztwo): ?> <option value="<?php echo $wojewodztwo['id']; ?>" <?php if($wojewodztwo['id'] == $wojewSel) echo 'selected'; ?>><?php echo $wojewodztwo['nazwa']; ?></option> <?php endforeach; ?> </select> Znalazłem też takie rozwiązanie(przykład): Kod <html> <head> <script language="javascript"> function test() { var wartosc_pola_xyz; var tekst=document.getElementById('abc'); wartosc_pola_xyz = document.getElementById('xyz').value; if(wartosc_pola_xyz=='0') { tekst.value="opcja niedostępna"; document.getElementById('abc').disabled=true; } if(wartosc_pola_xyz=='1') { tekst.value="opcja niedostępna"; document.getElementById('abc').disabled=true; } if(wartosc_pola_xyz=='2') { tekst.value=""; document.getElementById('abc').disabled=false; } } </script> </head> <body> <FORM> <select name="xyz" id="xyz" onChange="test()"> <option value=0 selected></option> <option value=1>opcja 1</option> <option value=2>opcja 2</option> </select> <input type="text" name="abc" id="abc" disabled value="opcja niedostępna"> </form> </body> </html> ale zabardzo też mi to nie działało. Co tam można zmienić żeby to zadziałało? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 6 Dołączył: 24.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze kombinujesz ale skoro chcesz wylaczyc wojewodztwo to musisz sprawdzac pole panstwo czyli w select wojewodztwo dajesz:
dodatkowo wylacz live przez js:
Zakladajac, ze 135 to id polski z bazy takie cos powinno dzialac, dodaj oczywiscie id #panstwo i #wojewodztwo do selectow |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Zrobiłem dokładnie jak mówiłeś i nic. Jeśli nie wiesz o co może chodzić to mogę wrzucić przykład na serwer i wtedy konkretnie w kodzie i działaniu zobaczysz.
Kod <script type="text/javascript"> $("#panstwo").change(function() { //po zmianie var panstwo = $("#panstwo").val(); //pobierasz value if(panstwo != 135) //rozne od polski { $("select#wojewodztwo").attr("disabled","disabled"); //to wylacz } else { $("select#wojewodztwo").removeAttr("disabled"); //else wlacz } }); </script> Kod <select name="panstwo" id="panstwo" > <option value="0">Wybierz państwo</option> <?php //pobranie listy państw $panstwa = pobierzPanstwa(); if(isset($_POST['panstwo'])) $panstwSel = $_POST['panstwo']; else $panstwSel = '0'; ?> <?php foreach($panstwa as $panstwo): ?> <option value="<?php echo $panstwo['id']; ?>" <?php if($panstwo['id'] == $panstwSel) echo 'selected'; ?>><?php echo $panstwo['nazwa']; ?></option> <?php endforeach; ?> </select> Kod <select name="wojewodztwo" id="wojewodztwo" <?php if(isset($_POST['panstwo']) && $_POST['panstwo']==135) { echo 'disabled'; }//wylacz pole gdy istnieje post z id polski ?>>
<option value="0">Wybierz województwo</option> <?php //pobranie listy wojewodztw $wojewodztwa = pobierzWojewodztwa(); if(isset($_POST['wojewodztwo'])) $wojewSel = $_POST['wojewodztwo']; else $wojewSel = '0'; ?> <?php foreach($wojewodztwa as $wojewodztwo): ?> <option value="<?php echo $wojewodztwo['id']; ?>" <?php if($wojewodztwo['id'] == $wojewSel) echo 'selected'; ?>><?php echo $wojewodztwo['nazwa']; ?></option> <?php endforeach; ?> </select> |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
&& $_POST['panstwo']==135
No tu to ma byc raczej && $_POST['panstwo']!=135 przeciez disabled robisz dla roznych od Polski a nie dla Polski -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Link do tego z czym jest problem:
http://testowa123.pusku.com/test.php Dostęp do ftp-a: Nazwa hosta: testowa123.pusku.com Użytkownik: u401008114 Hasło: test100 Baza danych wygląda tak: Kod CREATE TABLE IF NOT EXISTS `panstwo` ( `id` int(10) unsigned NOT NULL, `nazwa` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Zrzut danych tabeli `panstwa` -- INSERT INTO `panstwo` (`id`, `nazwa`) VALUES (1, 'Afganistan'), (2, 'Albania'), (3, 'Algieria'), (4, 'Andora'), (5, 'Angola'), (6, 'Antigua i Barbuda'), (7, 'Arabia Saudyjska'), (8, 'Argentyna'), (9, 'Armenia'), (10, 'Australia'), (11, 'Austria'), (12, 'Azerbejdżan'), (13, 'Bahamy'), ...................... (134, 'Peru'), (135, 'Polska'), (136, 'Portugalia'), (137, 'Republika Południowej Afryki'), (138, 'Republika Środkowoafrykańska'), (139, 'Republika Zielonego Przylądka'), (140, 'Rosja'), (141, 'Rumunia'), (142, 'Rwanda'), (143, 'Saint Kitts i Nevis'), (144, 'Saint Lucia'), (145, 'Saint Vincent i Grenadyny'), (146, 'Salwador'), (147, 'Samoa'), (148, 'San Marino'), (149, 'Senegal'), (150, 'Serbia'), (151, 'Seszele'), (152, 'Sierra Leone'), (153, 'Singapur'), (154, 'Słowacja'), (155, 'Słowenia'), (156, 'Somalia'), (157, 'Sri Lanka'), (158, 'Stany Zjednoczone'), (159, 'Suazi'), (160, 'Sudan'), (161, 'Sudan Południowy'), (162, 'Surinam'), (163, 'Syria'), (164, 'Szwajcaria'), (165, 'Szwecja'), (166, 'Tadżykistan'), (167, 'Tajlandia'), (168, 'Tanzania'), (169, 'Timor Wschodni'), (170, 'Togo'), (171, 'Tonga'), (172, 'Trynidad i Tobago'), (173, 'Tunezja'), (174, 'Turcja'), (175, 'Turkmenistan'), (176, 'Tuvalu'), (177, 'Uganda'), (178, 'Ukraina'), (179, 'Urugwaj'), (180, 'Uzbekistan'), (181, 'Vanuatu'), (182, 'Watykan'), (183, 'Wenezuela'), (184, 'Węgry'), (185, 'Wielka Brytania'), (186, 'Wietnam'), (187, 'Włochy'), (188, 'Wybrzeże Kości Słoniowej'), (189, 'Wyspy Marshalla'), (190, 'Wyspy Salomona'), (191, 'Wyspy Świętego Tomasza i Książęca'), (192, 'Zambia'), (193, 'Zimbabwe'), (194, 'Zjednoczone Emiraty Arabskie'); CREATE TABLE `wojewodztwa` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `nazwa` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 AUTO_INCREMENT=19; -- -- Zrzut danych tabeli `wojewodztwa` -- INSERT INTO `wojewodztwa` VALUES (1, 'wielkopolskie'); INSERT INTO `wojewodztwa` VALUES (2, 'zachodnio-pomorskie'); INSERT INTO `wojewodztwa` VALUES (3, 'dolnośląskie'); INSERT INTO `wojewodztwa` VALUES (4, 'kujawsko-pomorskie'); INSERT INTO `wojewodztwa` VALUES (5, 'lubelskie'); INSERT INTO `wojewodztwa` VALUES (6, 'lubuskie'); INSERT INTO `wojewodztwa` VALUES (7, 'łódzkie'); INSERT INTO `wojewodztwa` VALUES (8, 'małopolskie'); INSERT INTO `wojewodztwa` VALUES (9, 'mazowieckie'); INSERT INTO `wojewodztwa` VALUES (10, 'opolskie'); INSERT INTO `wojewodztwa` VALUES (11, 'podkarpackie'); INSERT INTO `wojewodztwa` VALUES (12, 'podlaskie'); INSERT INTO `wojewodztwa` VALUES (13, 'pomorskie'); INSERT INTO `wojewodztwa` VALUES (14, 'śląskie'); INSERT INTO `wojewodztwa` VALUES (15, 'świętokrzyskie'); INSERT INTO `wojewodztwa` VALUES (16, 'warmińsko-mazurskie'); INSERT INTO `wojewodztwa` VALUES (17, 'wielkopolskie'); INSERT INTO `wojewodztwa` VALUES (18, 'zachodnio-pomorskie'); |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No dobra, ale o to:
$("#panstwo").change(function() masz wywolac dopiero po utworzeniu pola panstwo a nie przed... -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Nie kumam o co chodzi. Zmienisz mi to na serwerze już?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 6 Dołączył: 24.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
Nie zartuj sobie, w konsoli js jak byk masz blad. Nie widzisz , ze masz 2 razy <script type="text/javascript"> i 2 razy </script> ?
Wystarczy troche wysilku bo dostales praktycznie gotowca |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Widziałem, już dawno to zmieniłem. Przy przenoszeniu źle wkleiłem.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 6 Dołączył: 24.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
No ale zeby jquery dzialalo to musisz jeszcze dac linka do jquery ech np w head na poczatku
nie wiem teraz jaki byl link do najnowszej wersji zawsze ale ten powinien dzialac Ten post edytował valkirek 25.07.2013, 18:19:52 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Wszystko zmieniłem jak mowiłeś. Logicznie patrząc wszystko powinno już działać, ale nie działa.
Zastanawiam się nad tym fragmentem, czy jest dobry: Kod <select name="wojewodztwo" id="wojewodztwo" <?php if(isset($_POST['panstwo']) && $_POST['panstwo']!=135) { echo 'disabled'; }//wylacz pole gdy istnieje post z id polski ?>>
<option value="0">Wybierz województwo</option> <?php |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 6 Dołączył: 24.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
&& $_POST['panstwo']==135 No tu to ma byc raczej && $_POST['panstwo']!=135 przeciez disabled robisz dla roznych od Polski a nie dla Polski Tak wcześniej gość napisał, więc już nie wiem jak powinno byc poprawnie. Jeśli panstwo nie jest równe Polsce czyli id 135 to blokuje select. Więc jest dobrze. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat pomysl masz ten select z wojewodztwami wylaczyc gdy panstwo to polska czyli ma byc Co ty bredzisz..... ma wylaczyc gddy panstwo to nie Polska....wkoncu wojewodztwa ma dla Polski a nie dla nie Polski....
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Widzi ktoś w czym jest problem??
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Napisalem ci przeciez wyraznie....o to:
<script type="text/javascript"> $("#panstwo").change(function() { //po zmianie var panstwo = $("#panstwo").val(); //pobierasz value if(panstwo != 135) //rozne od polski { $("select#wojewodztwo").attr("disabled","disabled"); //to wylacz } else { $("select#wojewodztwo").removeAttr("disabled"); //else wlacz } }); </script> ma byc po utworzeniu pol a nie przed. Czyli masz to przeniesc na sam dol, juz po utworzeniu pol a bedzie dzialac. Tu naprawde nie ma nic trudnego, tylko ttrzeba chciec pomyslec a nie lenia miec. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Wybacz, jest ok. Dzieki za pomoc.
Zrobiłem jeszcze coś takiego do walidacji pól: Kod <script type="text/javascript"> function validateForm(){ if($("#wojewodztwo").next().attr('class') == 'error') $("#wojewodztwo").next().remove(); if(($("#wojewodztwo option:selected").val() == '0')) $("#wojewodzwto").after('<div class="error">Wybierz województwo</div>'); var iloscBledow = $('.error').length; if(iloscBledow > 0)return false; else return true; } </script> Jak mam to ugryźć, żeby przeszło walidację jak wybiorę inne państwo niż Polska? Zrobiłem tak, ale nie chwyta: Kod if(($("#wojewodztwo option:selected").val() == '0') || ($("#panstwo option:selected").val() == '135')) $("#wojewodztwo").after('<div class="error">Wybierz województwo</div>'); |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale jak ma chwytac? Podpiales to pod wyslanie formularza? Bo nie widze
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (10%) ![]() ![]() |
Tak, wszystko jest podpięte i działa, wkleiłem tylko fragment, który odpowiada za walidację województw. Ale chodzi o to że chce to tak przerobić, żeby wyświetlało błąd gdy jest wybrane państwo Polska, a nie wybrane województwo, a nie wyświetlało błędu jak inne Państwo i nie trzeba wybierać województwa.
Ten post edytował 18Pawel18 26.07.2013, 09:44:41 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to pokaz jak wyglada podpieta calosc, bo w linku co podales nie ma nic podpietego.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:38 |