![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Od dwóch dni szukam na sieci rozwiazania do mojego problemu. Jestem już blisko, ale potrzebuję pomocy. Chodzi mi o coś takiego. Mam w bazie danych pewne kategorie i podkategorie. W formularzu mam select, w którym mogę sobie wybrać kategorię główną. Chciałbym aby po wybraniu pojawiło się na stronie tyle checkboxów ile jest podkategorii. I to w zasadzie tyle. Wybór tych kategorii z selecta, jest tylko częścią większego formularza, więc nie mogę tego zamkąć w form i przeładować strony. Próbuję używać javascript i innerHTML.. W select mam akcję: Kod onchange="showCat(this.options[selectedIndex].value);" i w tej funkcji showCat muszę mieć coś takiego: function show($id){ $query = mysql_query("SELECT * from $tbl_categories WHERE ref='".$id."'"); while($r = mysql_fetch_array($query)) { $innerHtml.="<input type=\"checkbox\"/>".$r['name']."<br/>"; } obj=document.getElementById("cat"); obj.style.visibility=\'visible\'; obj.innerHTML='.$innerHtml.' } Ta funkcja to oczywiście poplątanie php i javascript i właśnie mam problem z jakimś rozdzieleniem tego... Ktoś pomoże? Ten post edytował Mark Tempe 25.03.2007, 13:36:37 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 3 Dołączył: 18.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Musisz w szablonie PHP miec dostep do zmiennej $innerHTML (kod JS musi byc wygenerowany natomiast w calosci, podobnie jak HTML, by przegladarka go odczytala, wiec nie widzi zmiennych z PHP) W szablonie dajesz: obj.innerHTML='<?php echo $innerHtml; ?>'; I w ten sposob powstanie uzupelniony kod JS.
Ten post edytował ferr 24.03.2007, 17:25:51 -------------------- Praktyczne wprowadzenie do JavaScript dla poczatkujacych!
Simplicity of web programming - ferrante.pl blog Functionite - szkolenia JavaScript |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za reakcje, ale ciągle mam błąd.
Na podstawie Twojej wskazówki funkcję zmieniłem w ten sposób: Kod function show($id){ $query = mysql_query("SELECT * from $tbl_categories WHERE ref='".id."'"); while($r = mysql_fetch_array($query)) { $innerHtml.="<input type=\"checkbox\"/>".$r['name']."<br/>"; } echo '<script>'; echo 'obj=document.getElementById("cat");'; echo 'obj.style.visibility=\'visible\';'; echo 'obj.innerHTML='.$innerHtml.''; echo '</script>'; } W select mam taki kod : Kod <select name="category" onchange="show(this.options[selectedIndex].value);"> Pojawia się błąd: Oczekiwano obiektu.. Zastanawiam sie, czy ja mogę w zdarzeniu onchange wywoływać funkcję php.. Zawsze wywoływałem jakąś fukcję javascript.. Jeśli ma to być funkcja javascript, to jak w niej odwoływać się do bazy danych..? Tak, czy inaczej jeszcze nie rozwiązałem tego problemu, proszę o dokładniejszą wskazówkę - może źle coś zrozumiałem. Ten post edytował Mark Tempe 25.03.2007, 13:36:09 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 3 Dołączył: 18.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Stary, nie, nie...
Nie mozna traktowac funkcji PHP jako funkcji JS. Musisz podejsc do generowania kodu JS tak, jakbys generowal stronke HTML... Czyli zwracasz przez PHP jakies dane, ktore wstawiasz (pokazujesz echo'em) do dokumentu HTML w <script> ![]() -------------------- Praktyczne wprowadzenie do JavaScript dla poczatkujacych!
Simplicity of web programming - ferrante.pl blog Functionite - szkolenia JavaScript |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Okej, czyli to nie może być funkcją php, tylko javascript. TO powiedz mi jeszcze tylko jedno: do tej funkcji (javascript) przesyłam zmienną i będe musiał tą zmienną w kodzie php odczytać. Nie wiem jak.. Rozumiem, że będe musiał zrobić coś takiego
Kod <script> fuction showCat(id) { //instrukcje $w = mysql_query("select * from $tbl_categories where id='ID_POBRANE_Z_FUNKCJI_JS'"); //instrukcje } I własnie nie wiem, jak się odwołać do tej zmiennej przesyłanej przez funkcję showCat. Mając to, już może sobie poradzę z resztą. Ten post edytował Mark Tempe 25.03.2007, 13:37:14 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 3 Dołączył: 18.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kurcze, chyba nie zrozumiales
![]()
Teraz sie rozjasnilo? -------------------- Praktyczne wprowadzenie do JavaScript dla poczatkujacych!
Simplicity of web programming - ferrante.pl blog Functionite - szkolenia JavaScript |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Prosze uzywac odpowiedniego bbCode dla wstawianego kodu.
Inaczej topik zostanie zamkniety. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przykład rozumiem bardzo dobrze. Tylko problemy mam jeśli chodzi o przypadek, który ja opisywałem, gdzie muszę wywołać funkcję na zdarzenie onChange w selectcie, która musi wykonać kod php (pobranie z bazy danych rekordów) i wstawienie wyniku wygenerowanego przez to zapytanie w diva.
Więc muszę przesyłać sobie zmienną między javascript a php i tego nie potrafię. Teraz na podstawie przykładu i naszej dotychczasowej rozmowy mam coś takiego. Kod function show($id){ $query = mysql_query("SELECT * from $tbl_categories WHERE ref='".id."'"); while($r = mysql_fetch_array($query)) { $innerHtml.="<input type=\"checkbox\"/>".$r['name']."<br/>"; } return $innerHtml } ?> <script> function showCat(x) { obj=document.getElementById("cat"); obj.style.visibility='visible'; obj.innerHTML="<? echo show(x); ?>"; </script> Nie mam możliwosci sprawdzenia tego teraz, ale czuję, że jeśli nie mam innych błędów, to na pewno źle przesyłam zmienną do funkcji show(x), ponieważ w kodzie php używam zmiennej z js. Chodzi mi o tą linijkę w showCat(); Kod obj.innerHTML="<? echo show(x); ?>"; Jeśli mógłbyś mi podać przykład bardziej podobny do mojego przypadku (przesyłanie zmiennych, zapytanie z bazy danych za kazdym razem gdy zmieniam select), lub bezpośrednio pomóc mi z tym kodem będę wdzięczny. Tak, jak pisałem - wszystkie ogólne zasady rozumiem - problem mam, jeśli chodzi w przesyłanie tych zmiennych i komunikacja z bazą danych każdorazowo po zmianie select. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 3 Dołączył: 18.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Aha, w takim razie zainteresuj sie AJAXem.
--> http://advajax.anakin.us/ - tutaj masz pomocna biblioteke. --> http://jquery.com/ - kolejna fajna biblioteka -------------------- Praktyczne wprowadzenie do JavaScript dla poczatkujacych!
Simplicity of web programming - ferrante.pl blog Functionite - szkolenia JavaScript |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
![]() Wielkie dzięki wszystko działa jak chciałem. No i poznałem tą bardzo ciekawą klasę. Jeszcze raz dzięki za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:47 |