Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Witam
Od kilku (doslownie) godzin borykam sie z nastepujacym problem. Mam formularz, w ktorym po wybraniu z listy rozwijalnej nazwy dostawcy inne pola (miejscowosc, ulica, kod, itp) wypelniaja sie automatycznie. Formularz tworzony jest w php, a do automatycznego wypalniania pol uzywam JavaScript. Poszczegolne elementy rozwijanej listy tworzone sa poprzez petle i sciagane z bazy danych:
Poradzilem sobie z wypelnieniem jednego pola o nazwie "zmienna". Poprzez JS przekazuje wybrana z listy firme do zmiennej "x", ktora nastepnie wypelnia zawartosc INPUTA o nazwie "zmienna". Kolejny INPUT chcialem wypelnic nazwa miejscowosci, w ktorej znajduje sie dana firma i... tu zaczynaja sie dla mnie schody, bo po prostu nie wiem jak polaczyc JS i php. A musze to zrobic, poniewaz miejscowosc rowniez jest pobierana z bazy na podstawie wybranej z listy firmy. Probowalem tak:
I niestety nic z tego (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Co robie zle? Czy kombinujac z polaczeniem JS i php czegos nie pochrzanilem? Nie wiem... Moze Wam uda sie to rozwiklac, badz tez naprowadzic mnie chociaz na jakis slad/kod, ktory pomoze mi dalej juz isc samemu. I jeszcze jedna uwaga - tych pol/inputow, ktorych trzeba wypelnic na podstawie wybranej firmy jest jeszcze kilka kod pocztowy, nr tel, itp. Pozdrawiam Darth |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Kod $pobierz = "select miasto from firmy where nazwa_dostawcy = ".x.""; $wynik_pobierz = mysql_query($pobierz) or die (mysql_error()); echo $wynik_pobierz; Gdzie fetchujesz wynik? |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Wynik przypisuje, a wlasciwie chcialbym przypisac do zmiennej Y:
a nastepnie przypisac ja do inputu o nazwie miejscowosc; |
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
No, ale $wynik_pobierz, to przecież zasób, a nie tablica, czy string...
Możesz spróbować: Kod var y = "
<?php $pobierz = "select miasto from firmy where nazwa_dostawcy = ".x.""; $wynik_pobierz = mysql_query($pobierz) or die (mysql_error()); $wynik_pobierz = mysql_fetch_assoc($wynik_pobierz); echo $wynik_pobierz['miasto']; ?>"; document.formularz.miejscowosc.value=y; |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
W tym przypadku w ogole nie wyswietla formularza :-(
Nie wiem czy uzycie tablicy asocjacyjnej jest odbrym rozwiazaniem. Z bazy pobieram przeciez tylko jedna dana - nazwe miasta. Moze problem jest przy wyborze miasta na podstawie wyniku z selecta?
gdzie "x" to:
|
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Wartość dla nazwa_dostawcy w zapytaniu nie jest w cudzysłowie.
A co wywala mysql_error" title="Zobacz w manualu php" target="_manual? |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Nawiasy zaraz podokladam, a mysql_error nic nie wywala...
Ok... Nawiasy dorzucone, ale tym razem formularz wyswietlany jest prawidlowo. Jednak wybieranie z listy firm nic nie daje - nie wyswietla sie juz nawet pierwszy input o nazwie "zmienna". A mam takie pytanie. Czy pobierajac dane z bazy, na podstawie wartosci x, wartosc ta na pewno jest dobrze interpretowana?
Jesli nie to piwinien chyba wywalic komunikat o bledzie. Drugie pytanko - jak sprawdzic jak wartosc faktycznie pod koniec wykonania skryptu ma wartosc $wynik_pobierz ? Ten post edytował darth_sidious 11.10.2006, 22:03:41 |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Ale wartość w kodzie JS też musisz dać w cudzysłowy!
Cytat Drugie pytanko - jak sprawdzic jak wartosc faktycznie pod koniec wykonania skryptu ma wartosc $wynik_pobierz ? Nie zrozumiałem :S W JS czy w php, czy jak? |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Ale wartość w kodzie JS też musisz dać w cudzysłowy!
Nie zrozumiałem :S W JS czy w php, czy jak? Wszystko jedno, chodzi tylko o to aby testowo moze wyswietlic, tak dla sprawdzenia w tej chwili, jaka wartosc ma zmienna $wynik_pobierz Faktycznie nawiasy uaktywnily puste do tej pory pole input, lecz zamiast wartosci wyswietla sie ciagle Resource id #5 cokolwiek bym nie wybral... Ale i tak jest juz postep... cos wyswietla ;-) Mam nadzieje, ze dzis uda nam sie z tym uporac. |
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat
Moja tępa głowa; nie zauważyłem tego wcześniej !@! $wynik_pobierz, to jest zasób z wynikiem zapytania; musisz go jeszcze potraktować mysql_fetch_array" title="Zobacz w manualu php" target="_manual/mysql_fetch_assoc" title="Zobacz w manualu php" target="_manual. |
|
|
|
Post
#11
|
|
|
Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%)
|
chwila chwila
x to przeciez zmienna js to jak ty chcesz to wykorzystac w php ? ;o chyba troche sie zagalopowales. takie zeczy o tylko w erze, znaczy ajaxie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Po zatym jak juz wspomnial erix nie zabardzo wiesz co zwraca mysql_query |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
W takim razie jak przekazac do SELECTA nazwe wybranego dostawce, a nastepnie po wyciagnieciu, np nr kodu pocztowego tego dostawcy, zwrocic kod do skryptu i przypisac do zmiennej, ktora pozniej wyswietli go w inpucie - w tym jest wlasnie problem.
Racja, nie wiem co tak na prawde zwraca mysql_query mimo mysql_error i nie wiem jak to sprawdzic :-( Ten post edytował darth_sidious 12.10.2006, 19:42:24 |
|
|
|
Post
#13
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Zerkałeś do manuala dla tych funkcji? Tam masz wszystko pięknie opisane, co należy zrobić. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#14
|
|
|
Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%)
|
Wszystko cos na wzor tego:
pob.php:
Mozliwe jakies bledy bo pisane z palca. Nie zapomnij obibliotece AdvancedAJAX. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Dzieki... zaraz poprobuje...
Niestety nadal nic - okienko miasto puste, a najgorsze, ze nie wywala zadnych bledow... NIC. Moze zaproponujecie jakies inne rozwiazanie? Chcialem robic bez przeladowywania strony, ale bez tego chyba sie nie obejdzie. Probuje teraz z onChange=submit() w SELECT |
|
|
|
Post
#16
|
|
|
Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%)
|
pob.php jak przedtem w takiej formie mi dziala - przetestowane. |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Dziala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) zmienilem tylko kilka rzeczy w pliku pob.php
- dolozylem linie laczace z baza danych / byly w glownym pliku ale widocznie tu tez musza byc, - zmienilem troche pobieranie nazwy miasta:
W jaki jednak sposob moge teraz za pomoca funkcji Pokaz_zmienna() odwoloywac sie do innych pol formularza (nip, ulica,...) Nie znam Ajaxa wiec nie wiem jak do tego sie zabrac (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ... i kolejne schody |
|
|
|
Post
#18
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Na przykład tak:
Kod <script LANGUAGE="JavaScript">
<!-- function Pokaz_zmienna(obiekt) { var v = document.formularz.elements[obiekt].selectedIndex; var x = document.formularz.elements[obiekt].value; advAJAX.post({ url: "pob.php", parameters : { "nazwa" : x }, onSuccess : function(obj) { document.formularz.zmienna.value = obj.responseText; }, onError : function(obj) { alert("Error: " + obj.status); }, }); } //--> </SCRIPT> |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 19.12.2005 Ostrzeżenie: (0%)
|
Wybaczcie ale z Ajaxa jestem noga. Wrzucilem ten kod i jak sie domyslacie lipa.
Mam jednak kilka pytan: 1. Ten kod odpowadal za pobranie i przypisanie do zmiennej x wyniku SELECTA, a w tej chwili co robi:
2. Co mam podstawic pod "obiekt"? 3. Czy moglbys rozpisac, jak by wygladalo pobranie wartosci dla dwoch elementow, dajmy na to nip i miasto? |
|
|
|
Post
#20
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Możesz robić w całym formularzu:
Kod <select name='firmy' onchange=Pokaz_zmienna('firmy')> Ale teraz się przyjrzałem temu i można to zrealizować dużo prościej: Kod var v = document.formularz.elements[obiekt].selectedIndex; To nie jest nigdzie używane :/ Kod <script type="text/javascript"> <!-- function Pokaz_zmienna(obiekt) { var x = obiekt.value; advAJAX.post({ url: "pob.php", parameters : { "nazwa" : x }, onSuccess : function(obj) { document.formularz.zmienna.value = obj.responseText; }, onError : function(obj) { alert("Error: " + obj.status); }, }); } //--> </script> I jako zdarzenie onchange dla każdego sprawdzanego elementu input/select podpinasz funkcję Pokaz_zmienna(this). Jeśli Ci się nie chce, to możesz przejść przez wszystkie elementy formularza pętlą i ustawić funkcję do zdarzenia. Ten post edytował erix 13.10.2006, 21:00:09 |
|
|
|
![]() ![]() |
|
Aktualny czas: 4.05.2026 - 10:35 |