Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][MySQL][PHP]Pobranie informacji "w tle"
Forum PHP.pl > Forum > Przedszkole
kpkrycho
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
jacobson
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.
Shili
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.
kpkrycho
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.
by_ikar
Pokaż co już zrobiłeś.
kpkrycho
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
Shili
  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.
kpkrycho
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.
Shili
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?
kpkrycho
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 :-(
Shili
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.
kpkrycho
Wszystkim dziękuję za pomoc. Shili, dziękuję za podanie gotowca.

Szcześliwego Nowego Roku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.