Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][MySQL][PHP]Pobranie informacji "w tle", Pobranie informacji z formularza, z SELECT
kpkrycho
post 28.12.2011, 13:34:50
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


Witam serdecznie,

Mam dwa pliki PHP (index.php, co.php). W jednym znajduje się formularz z polem SELECT, zaś OPTION generowane jest z bazy MySQL. Jak przekazać do pliku co.php VALUE z pola OPTION po jego wybraniu "na żywo" zanim użytkownik skończy wypełniać formularz.
Chodzi o to aby w pliku co.php powstało np. $wartosc = $_REQUEST['value_z_option_index.php'];

Nie wiem czy zadanie jest trudne czy trywialne, ale bardzo proszę o pomoc
Powód edycji: [piotrooo89]: przenosze + tagi
Go to the top of the page
+Quote Post
jacobson
post 28.12.2011, 13:37:41
Post #2





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


Wydaje mi sie ze rozwiazanie jquery. Zdarzenie onclick po nacisnieciu pola select z funkcja $.ajax http://api.jquery.com/jQuery.ajax/ ktora przesle dane z formularza do skryptu co.php w ktorym poprostu zostana one odebrane.
Go to the top of the page
+Quote Post
Shili
post 28.12.2011, 13:37:45
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Zapewne chodzi Ci o AJAX. Można go odpalić np. dla zdarzenia onchange na polu select.
Przykładów w sieci jest mnóstwo.

To, co jeszcze mogę dodać: ja osobiście polecałabym obsługę ajaksa za pomocą biblioteki js - jQuery.
Go to the top of the page
+Quote Post
kpkrycho
post 28.12.2011, 15:11:52
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


Tak właśnie się spodziewałem że chodzi tu o js (jquery). Problem leży w tym że jestem zielony. Ale bardzo dziękuję za odpowiedzi i nakierowanie mnie na rozwiązanie.

Niestety, kompletnie nie rozumiem tego zagadnienia i nie wiem gdzie popełniam błąd - nie mogę znaleźć rozwiązania. Jeżeli komuś będzie się nudziło bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
by_ikar
post 28.12.2011, 17:09:51
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Pokaż co już zrobiłeś.
Go to the top of the page
+Quote Post
kpkrycho
post 28.12.2011, 19:23:57
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


index.php:
  1. <script type="text/javascript" src="js/jquery-1.3.2.js"></script>

  1. <script type="text/javascript">
  2. $.ajax(
  3. {
  4. url: "rpc3.php",
  5. type: "GET",
  6. data: {id : komornik},
  7. dataType: "text"
  8. }
  9. );
  10. /* function kom(komornik){
  11. $.('#select').get('rpc3.php?komornik=' + komornik);}
  12. //$.get('#select').get('rpc3.php?komornik=' + komornik);$.get("rpc3.php", "komornik");*/
  13.  
//część zarymowana jest chyba też do d
  1. <select name="komornik" id="komornik" onChange="kom(this.value)">

  1. <option value="IMIE NAZWISKO">IMIE NAZWISKO</option>


co.php
  1. $komornik = $_GET['komornik'];echo "nazwa: $komornik";


$komornik nie zwraca nic, a spodziewam się że w co.php zobaczę: nazwa: IMIE NAZWISKO

Dziękuję za pomoc


oczywiście: w orygimale jest rpc3.php a nie co.php smile.gif
Go to the top of the page
+Quote Post
Shili
post 28.12.2011, 19:50:41
Post #7





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


  1. $("#komornik").change(function(){
  2. // tutaj jest zawarte onchange, możesz usunąć atrybut html
  3. // selektory takie jak w css, czyli #komornik
  4. $.get('twojplik.html', { komornik: $(this).val() }, function(data) {
  5. // w {} przekazujesz atrybuty ($_GET); wygląda to tak: twojplik.html?komornik=jakaswartosc
  6. // najlepiej wyalertować result, ktory w funkcji jest argumentem data
  7. });
  8. });


Pisane na szybko i z palca, podejrzewam, że będziesz musiał nieco poprzerabiać, żeby działało.

W razie czego - odsyłam do podanego powyżej linku i polecam prześledzenie przykładów.
Zapoznaj się też z tzw. document.ready

Jak coś niejasne mimo tego - pytaj.

Ten post edytował Shili 28.12.2011, 19:51:44
Go to the top of the page
+Quote Post
kpkrycho
post 28.12.2011, 22:28:07
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


Rozumiem że ma wyglądać to następująco:
index.php:
  1. <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
  2. <script type="text/javascript">
  3. $("#komornik").change(function(){
  4. $.get('rpc3.php', { komornik: $(this).val() }, function(data) {
  5. ('rpc3.php?komornik=komornik');
  6. });
  7. <form action='plik.php' method='post'>
  8. <select name="komornik" id="komornik" onChange="kom(this.value)" onblur="fill();">
  9. <option value="IMIE NAZWISKO">IMIE NAZWISKO</option>
  10. </form>
  11. </body>

zaś w pliku rpc3.php
  1. <?php
  2. $komornik = $_GET['komornik'];echo "nazwa: $komornik";
  3. ?>


Nie działa mi. Bardzo proszę o pomoc. Dziękuję wszystkim za dotychczasowe wskazówki.
Go to the top of the page
+Quote Post
Shili
post 28.12.2011, 23:04:35
Post #9





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Poczytaj o $(document).ready()
Albo umieść skrypt pod selectem.

Aktualnie sytuacja wygląda tak, że skrypt się wykonuje ZANIM zainicjowany jest select, nie ma się więc do czego odnieść i nie zadziała.

onChange="kom(this.value)" - to można wyrzucić. .change() załatwia sprawę.

Zamiast tego:
('rpc3.php?komornik=komornik');
daj:
alert(data);

Coś widać w alercie?

Ten post edytował Shili 28.12.2011, 23:04:56
Go to the top of the page
+Quote Post
kpkrycho
post 28.12.2011, 23:24:50
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


Teraz mam tak (zgodnie z radą: Shili) w index.php:
  1. <select name="komornik" id="komornik">
  2. <option value="IMIE NAZWISKO">IMIE NAZWISKO</option>
  3. <script type="text/javascript">
  4. $("#komornik").change(function(){
  5. $.get('rpc3.php', { komornik: $(this).val() }, function(data) {
  6. alert(data);
  7. });
  8. });
  9. </script>

W rpc3.php bez zmian:
komornik = $_GET['komornik'];echo "nazwa: $komornik";

W alercie mam: nazwa: i nic więcej

Shili, jestem zieloniutki jak wiosenna trawa z JS a potrzebuje taką funkcję uzyskać. Bardzo dziękuję za pomoc i zainteresowanie - wszystkim


W rpc3.php poprawiłem $_GET na $_REQUEST i w alercie mam nazwa: IMIE NAZWISKO
ale jak odświerzam rpc3.php to tam jest pusto :-(
Go to the top of the page
+Quote Post
Shili
post 28.12.2011, 23:37:57
Post #11





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Ok, już rozumiem w czym problem.
Http jest bezstanowy - jeśli dwa razy odświeżysz ten sam plik nie zostaną zapisane domyślnie żadne dane.

Skorzystaj w swoim pliku rpc3 z sesji, żeby zapamiętać wyniki. To jeden z możliwych sposobów.
alert informuje Cię, że dane do pliku idą poprawnie "w tle", przynajmniej do tego doszliśmy.
Go to the top of the page
+Quote Post
kpkrycho
post 30.12.2011, 07:04:42
Post #12





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2011

Ostrzeżenie: (0%)
-----


Wszystkim dziękuję za pomoc. Shili, dziękuję za podanie gotowca.

Szcześliwego Nowego Roku
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 14:01