Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]Wyświetlenie wybranej wartości z select
Forum PHP.pl > Forum > Przedszkole
wojciechu
Witam,

Chciałem wykorzystać następujący kod ze strony:

  1. <script src="jquery.js" type="text/javascript" charset="utf-8"></script>
  2. <script src="jquery.chained.js" type="text/javascript" charset="utf-8"></script>
  3.  
  4. <select id="mark">
  5. <option value="">--</option>
  6. <option value="bmw">BMW</option>
  7. <option value="audi">Audi</option>
  8. </select>
  9. <select id="series">
  10. <option value="">--</option>
  11. <option value="series-3" class="bmw">3 series</option>
  12. <option value="series-5" class="bmw">5 series</option>
  13. <option value="series-6" class="bmw">6 series</option>
  14. <option value="a3" class="audi">A3</option>
  15. <option value="a4" class="audi">A4</option>
  16. <option value="a5" class="audi">A5</option>
  17. </select>
  18.  
  19. <script>
  20. $("#series").chained("#mark"); /* or $("#series").chainedTo("#mark"); */
  21. </script>


jednak napotkałem na problem - chciałbym pobrać wartości wybranych opcji i wyświetlić je jako echo, a potem POSTem przesłać do bazy. Prosiłbym o pomoc jaki kod stworzyć, żeby gdzieś na stronie wyświetlić wartości z list.

Próbowałem poniższego, ale nie działa...

  1. <?php
  2.  
  3. echo 'Wybrana wartość '.$_GET['mark'];
  4.  
  5. ?>
grzes999
Gdzie chcesz wyświetlić te dane po przesłaniu formularz po wybraniu opcji??
I chcesz przesłać formularz normalnie czy bez przeładowywania strony??
wojciechu
Chcę wyświetlić tekst w dowolnym miejscu na bieżącej stronie, żeby zmieniał się zależnie od wybranej opcji z select'a. Wysłanie danych już dowolnie

Pomożesz jakoś? smile.gif
mmmmmmm
Przy selectach brak "name", przez które się później do nich odwołujesz... No i oczywiście nie są w form z method=GET
wojciechu
Zamieniłem id na name i nadal nie działa.

O co chodzi Tobie w poniższym zdaniu? Jak mam zmienić swój obecny kod jeszcze?
Cytat
No i oczywiście nie są w form z method=GET
b4rt3kk
  1. $(function() {
  2. $('select').change(function() {
  3. value = $(this).val();
  4. alert(value);
  5. });
  6. });
wojciechu
OK, teraz mi wyświetla się okienko z informacją jaką wartość z selecta wybrałem (dla obu selectów).

Tylko to nie wyjaśnia problemu jaki opisałem - chciałem, żeby na stronie wyświetlił się tekst, który będzie pokazywał tylko wartości wybierane dla selecta 'mark'

Pomóżcie proszę, czuję, że jesteśmy blisko smile.gif

Poniżej cały obecny kod:
  1. <select name="mark">
  2. <option value="">--</option>
  3. <option value="bmw">BMW</option>
  4. <option value="audi">Audi</option>
  5. </select>
  6.  
  7. <select name="series">
  8. <option value="">--</option>
  9. <option value="series-3" class="bmw">3 series</option>
  10. <option value="series-5" class="bmw">5 series</option>
  11. <option value="series-6" class="bmw">6 series</option>
  12. <option value="a3" class="audi">A3</option>
  13. <option value="a4" class="audi">A4</option>
  14. <option value="a5" class="audi">A5</option>
  15. </select>
  16.  
  17. <script type="text/javascript" charset="utf-8">
  18. $(function(){
  19. $("#series").chained("#mark");
  20. });
  21.  
  22. $(function() {
  23. $('select').change(function() {
  24. value = $(this).val();
  25. alert(value);
  26. });
  27. });
  28. </script>
  29.  
  30.  
  31.  
  32. <?php
  33.  
  34. echo 'Wybrana wartość '.$_GET['mark'];
  35.  
  36. ?>
b4rt3kk
Do tego nie potrzebny jest php, co więcej zmienna typu GET. Wystarczy HTML.

Dodaj pod selectami:

  1. <p class="message"></p>


oraz lekko zmodyfikuj funkcję, którą podałem.

  1. $(function() {
  2. $('select').change(function() {
  3. value = $(this).val();
  4. $('.message').text(value);
  5. });
  6. });
wojciechu
Kurcze, już tak blisko... smile.gif

Tylko jak pisałem wcześniej, zależało mi na wyświetleniu na stronie napisu, tylko dla jednego selecta (mark), a nie dla ostatniego wybranego (tak jak jest w kodzie, który mi podałeś).

Kolejną rzeczą byłoby jak do bazy sql przesłać informację do danego pola, jaka opcja select została wybrana dla 'mark' i 'series' ...
b4rt3kk
  1. $(function() {
  2. $('select[name=mark]').change(function() {
  3. value = $(this).val();
  4. $('.message').text(value);
  5. });
  6. });


A to jak już zapiszesz to w bazie danych to kwestia wyboru, albo opakujesz całość w <form>...</form>, albo prześlesz ajaxem. Chyba wiesz jak wysłać formularz?
wojciechu
Dzięki za pomoc smile.gif

Ostatnie pytanie: A jak wynik Twojej funkcji zapisać jako zmienną, żeby wrzucić przez polecenie INSERT INTO do bazy sql?
b4rt3kk
To zależy, czy ma zapisywać w momencie wyboru pola select, czy po przesłaniu formularza. W pierwszym przypadku, ajax+php, w drugim czysty php wystarczy.
wojciechu
Pytanie: jak będzie wyglądał kod, który pozwoli mi zamienić opisywaną przez Ciebie funkcję wyświetlania wartości danego pola select na zmienną, którą umieszczę w formularzu do przesłania danych do tabeli sql? Czyli: wybiorę sobie odpowiednie pozycje z dwóch list i po naciśnięciu przycisku ma mi przesłać do bazy do dwóch pól informacje o wybranych wartościach selectów.
b4rt3kk
Funkcji nie musisz modyfikować. Dodaj ramy formularza do swojego kodu HTML.

  1. <form method="POST" action="wyslij.php">
  2. <select name="mark">
  3. <option value="">--</option>
  4. <option value="bmw">BMW</option>
  5. <option value="audi">Audi</option>
  6.  
  7. <select name="series">
  8. <option value="">--</option>
  9. <option value="series-3" class="bmw">3 series</option>
  10. <option value="series-5" class="bmw">5 series</option>
  11. <option value="series-6" class="bmw">6 series</option>
  12. <option value="a3" class="audi">A3</option>
  13. <option value="a4" class="audi">A4</option>
  14. <option value="a5" class="audi">A5</option>
  15. <input type="submit" />
  16. </form>


Plik wynikowy wyslij.php:

  1. print_r($_POST);
wojciechu
Czemu uparcie idziesz w takim kierunku? sad.gif

No bo niby jak w przedstawiony przez Ciebie sposób mam wysłać do bazy sql informacje w postaci
  1. INSERT INTO jakaś-tabela VALUES (wybrany SELECT 1, wybrany SELECT 2)
?
mmmmmmm
  1. INSERT INTO `jakas tabela` SELECT '{$_POST['mark']}', '{$_POST['series']}'
wojciechu
Ok, mój kod wygląda tak i nie działa.... sad.gif

pierwszy plik
  1. <p class="message"></p>
  2.  
  3. <script type="text/javascript" charset="utf-8">
  4. $(function(){
  5. $("#series").chained("#mark");
  6. });
  7.  
  8. $(function() {
  9. $('select[name=mark]').change(function() {
  10. value = $(this).val();
  11. $('.message').text(value);
  12. });
  13. });
  14. </script>
  15.  
  16.  
  17. <form action="form.php" method="post">
  18. <input type="submit" value="dodaj" />
  19.  
  20. <select name="mark">
  21. <option value="">--</option>
  22. <option value="bmw">BMW</option>
  23. <option value="audi">Audi</option>
  24. </select>
  25.  
  26. <select name="series">
  27. <option value="">--</option>
  28. <option value="series-3" class="bmw">3 series</option>
  29. <option value="series-5" class="bmw">5 series</option>
  30. <option value="series-6" class="bmw">6 series</option>
  31. <option value="a3" class="audi">A3</option>
  32. <option value="a4" class="audi">A4</option>
  33. <option value="a5" class="audi">A5</option>
  34. </select>
  35.  
  36. </form>


form.php
  1. <?php
  2. $mark = $_POST['mark'];
  3. $series = $_POST['series'];
  4.  
  5. if($mark and $series) {
  6.  
  7. $connection = @mysql_connect('xxx', 'xxx', 'xxx')
  8. or die('Brak połączenia z serwerem MySQL');
  9. $db = @mysql_select_db('xxx', $connection)
  10. or die('Nie mogę połączyć się z bazą danych');
  11.  
  12.  
  13. $ins = @mysql_query("INSERT INTO xxx VALUES (NULL, '$mark', '$series')");
  14.  
  15. if($ins) echo "Rekord został dodany poprawnie";
  16. else echo "Błąd nie udało się dodać nowego rekordu";
  17.  
  18. mysql_close($connection);
  19. }
  20.  
  21. ?>
b4rt3kk
Co niby ma robić ten warunek?

  1. if($mark and $series)


Sprawdzasz czy $mark i $series zwraca true?

  1. if (isset($mark) AND isset($series))


  1. if (!empty($mark) AND !empty($series))
terabit
Witam,

znalazlem ten sam kod, ktory jest umieszczony w pierwszym poscie, jednak staram sie go przerobic tak by dzialal tylko z "radio".

Chodzi mi o coś takiego:
  1. DATY:
  2. <input type="radio" name="data1" value="01.10" />
  3. <input type="radio" name="data2" value="02.10" />
  4. <input type="radio" name="data3" value="03.10" />
  5.  
  6.  
  7. DOSTEPNE GODZINY:
  8. <input type="radio" name="g" value="13:20 />
  9. <input type="radio" name="g" value="14:30" /> <----- maja sie wyswietlac gdy pierwszy radio (data1) jest zaznaczony
  10. <input type="radio" name="g" value="15:40" />
  11.  
  12. <input type="radio" name="g" value="15:20 />
  13. <input type="radio" name="g" value="16:30" /> <----- maja sie wyswietlac gdy drugi radio (data2) jest zaznaczony
  14. <input type="radio" name="g" value="17:40" />
  15.  
  16. <input type="radio" name="g" value="13:20 />
  17. <input type="radio" name="g" value="14:30" /> <---- itd.
  18. <input type="radio" name="g" value="15:40" />
  19.  


czyli generalnie ma to działać identycznie jak omawiany skrypt, jednynie zamiast select/option ma być radio.
Próbowałem przerobić skrypt http://www.appelsiini.net/download/jquery.chained.js jednak z JS nie jestem zbyt dobry.

Ma ktoś pomysł lub wskazówki jak to przerobić?

Z góry dzięki za pomoc

Pozdrawiam
wojciechu
Dodaj do powiązanego wyboru 'class' i zmień układ na taki jak w poście #7, żeby selecty miały swój 'name'.
terabit
@wojciechu, nie do końca rozumiem jak mam to zrobić, w jquery.chained.js mam wprowadzic jakies zmiany?

"jak w poście #7, żeby selecty miały swój 'name'."

tylko ze u mnie nie bedzie zadnego pola select.

---------

mam coś takiego i niestety nie działa:
  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js" type="text/javascript"></script>
  2. <script src="jquery.chained.js" type="text/javascript" charset="utf-8"></script>
  3.  
  4.  
  5. <script type="text/javascript" charset="utf-8">
  6. $(function(){
  7. $("#series").chained("#mark");
  8. $("#model").chained("#series");
  9. });
  10.  
  11. </head>
  12.  
  13.  
  14. <div id="mark">
  15. <input type="radio" name="g" value="" /> nic
  16. <input type="radio" name="g" value="bmw" /> bmw
  17. <input type="radio" name="g" value="audi" /> audi
  18. </div>
  19. <div id="series">
  20. <input type="radio" name="g" class="bmw" value="" /> seria 3
  21. <input type="radio" name="g" class="bmw" value="" /> seria 4
  22. <input type="radio" name="g" class="audi" value="" /> a3
  23. <input type="radio" name="g" class="audi" value="" /> a4
  24. </div>
  25.  
  26.  
  27. </body>
  28. </html>

pilk jquery.chained.js
wojciechu
Heh, a czytałeś stronę: http://www.appelsiini.net/projects/chained ?

Już w pierwszym zdaniu jest mowa, że to dot. selectów:
Chained is simple jQuery plugin for chained selects
terabit
wiem, dlatego pytalem czy da sie to przerobic/dostosowac do "radio".
Bo gotowego niestety nie moge znaleźć dlatego staram się ten jakoś przerobić.
wojciechu
Zadaj sobie pytanie po co przerabiać, skoro masz gotowca na rozwijane listy.... butem też można gwoździe wbijać, ale lepiej młotkiem smile.gif
terabit
wiem, jednak w moim przypadku przejrzyściej będzie wyświetlać całą liste, niż listę rozwijaną. Nie ma rzeczy niemożliwych dlatego myślę że jakoś da rade to przerobić, masz jakieś pomysły? smile.gif
Bo ja już całe Google przekopałem i nic sensownego nie znalazłem.

Oczywiście nie oczekuję gotowca, jedynie porady jak się za to zabrać żeby zaczęło działać smile.gif
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.