Strona 1 z 3

<select> - czy można odczytać wybór?

Napisane: wtorek, 6 marca 2012, 12:34
przez neytiri
Chciałabym wyświetlać użytkownikowi jego dane w zależności od wybranej opcji w select.
Oglądam lekcje z java script i jquery i nie wiem za bardzo jak się do tego zabrać, bo wszystko muszę połączyć jeszcze z danymi z serwera(czyli php).
Wszystko jest mi potrzebne do edycji i zmiany danych użytkownika.

Czy to w ogóle ma sens takie podejście, bo w sumie php jest po stronie serwera, a js i jq po stronie uzytkownika.
Jak ktoś wie jak się coś takiego robi lub jak się do tego zabrać to napiszcie.

Re: <select> - czy można odczytać wybór?

Napisane: wtorek, 6 marca 2012, 13:31
przez Morfidon
Obserwuj przy pomocy jquery zmianę zdarzenia na select boxie. Interesuje Cię zdarzenie .change. Po zmianie na podstawie wartości select boxa (val()) wysyłasz zapytanie przy pomocy ajax do php. PHP na podstawie wartości wybiera odpowiednie rekordy z bazy danych i zwraca wynik, a ajax odbiera. Następnie dane masz w JS więc wyświetlasz dynamicznie bez przeładowania strony dane.

Ajaxem głównie zajmuję się w kursie poświęconym AJAX. W jQuery można stosować AJAX, co więcej stosuje się go prościej, no ale przykładów w kursie AJAX jest dużo więcej niż w jQuery, jeśli chodzi o AJAX co jest logiczne ;)

Re: <select> - czy można odczytać wybór?

Napisane: wtorek, 6 marca 2012, 23:01
przez neytiri
Spróbowałam coś takiego :
w pliku html :

Code: Zaznacz cały

<script type="text/javascript">
	$("a").bind({
      click:function(s) {   
         //alert($(this).text());
         $.ajax(
            url:{"data.php"},
            method:{"get"},
            data:{id:$(this).text()},
            dataType:{"html"},
            success: function(data) {
               $("#result").html(data);   
            }
         );
         return false;
      }            
   });	</script>
		
	  <select name="what" id="what">
      <option value="">wybierz</option>
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
   	  </select>
a plik data.php:

Code: Zaznacz cały

<?php

$id=(int)$_GET['id'];
mysql_connect('localhost','login','haslo') or die('brak połączenia');
mysql_select_db('baza');

$q=mysql_query("select * from user where id='{$id}'");
$res=mysql_fetch_assoc($q);

echo "id: ".$res['id']."<br>Imię: ".$res['name']."<br>";

mysql_close();

?>
Część php zrobiłam sama i HTML, ale script już nie - ściągnięty gdzieś z internetu.

Z tego co zrozumiałam, to po wyborze selecta powinno mi wypisać na ekran mojego usera id+imie.
Nic takiego się nie dzieje, czy to jest błąd w skrypcie, czy to ja mieszam wszystko i źle sprawdzam.

Re: <select> - czy można odczytać wybór?

Napisane: środa, 7 marca 2012, 11:55
przez Morfidon
A gdzie masz coś o identyfikatorze "result" w kodzie pliku html? (nawiązuje do $("#result")). Swoją drogą korzystaj proszę ze znaczników code lub też z np. wklejto.org

Re: <select> - czy można odczytać wybór?

Napisane: środa, 7 marca 2012, 12:50
przez neytiri
Poprawiłam - czyli tak jak w php odwołuję się teraz do zmiennej res.
Niestety nie działa, chyba coś nie tak jest z tym znacznikiem "a"

Mam taki błąd :
$ is not defined
[Wstrzymuj na tym błędzie]

$("a").bind({

Czy jest w tym jakiś błąd bo właśnie wskazuje na tą linijkę kodu!


Na razie idę krok po kroku po Twoim kursie AJAX. Mam problem z podpowiedziami w aptanie. Jak sobie zrobiłam nowy projekt dodałam plik index.html to od razu mi stworzył taki katalog ./ i tam mi wrzuca upracie mój ajax.js. Niestety wtedy nie działają żadne podpowiedzi jeżeli chodzi o składnie. Czy da się to jakoś ominąć, jak utworzyć plik js z możliwością takich podpowiedzi.

Próbuję sobie jakoś poukładać jak to jest z tymi danymi z różnych skryptów - rozumiem, że jedyny sposób to ładowanie tego do tych tablic globalnych POST i GET ?
Czy dobrze myślę?
Jeżeli tak, to czy gdzieś znajdę jasno wytłumaczone sposoby używania tego, tzn. w jaki sposób w jquery (js - pewnie to samo), ajax to robić?

Re: <select> - czy można odczytać wybór?

Napisane: środa, 7 marca 2012, 14:52
przez Morfidon
$ is not defined to znaczy, że nie jest zdefiniowane jQuery, dołączyłaś w ogóle jquery.js?

Powinno się obsługiwać zdarzenie change, nie click na select boxie, a nie "a", czyli anchor textie czyli odnośniku...

$("#what").change...

Re: <select> - czy można odczytać wybór?

Napisane: środa, 7 marca 2012, 16:53
przez neytiri
tak brakowało biblioteki, bo to moje próby z jquery, ale już to naprawiłam.
Teraz mam :

Code: Zaznacz cały

$("document").ready(
		function()
		{
			alert("test");
		}
);


$("#what").change.bind({
			  
   click:function()
   {   
     $.ajax({
             url:"data.php",
             method:"get",
             data:{id:$(this).text()},
             dataType:"htm",
             success: function(data) { $("#res").htm(data); }
            });
     return false;
    }            
       });
Test się wyświetla, więc jquery chodzi.
Jednak wciąż to nie działa.

Odnośnie aptana studio, to przy uruchamianiu przykładu nie wczytuje mi się plik.php. - Lekcja AJAX w praktyce. Wszystko chodzi jak trzeba, tylko nie pokazuje treści z pliku php. Jaki to może być błąd.

Re: <select> - czy można odczytać wybór?

Napisane: środa, 7 marca 2012, 18:05
przez Morfidon
http://api.jquery.com/change/
Tak ma wyglądać zdarzenie change, nie tak jak jest teraz. Nie jestem pewien co to może być za błąd.

Re: <select> - czy można odczytać wybór?

Napisane: czwartek, 8 marca 2012, 00:39
przez neytiri
Już wszystko jest ok, ale ...

Jak zrobić, aby pod tym selectem pojawiały się tylko pola wyboru z bazy ?
Jak na razie to efekt jest taki, że pod spodem ładuje mi znowu cała strona z headem i footem.

Co właściwie odpowiada za to, że znowu zostanie załadowana strona?

Re: <select> - czy można odczytać wybór?

Napisane: czwartek, 8 marca 2012, 08:28
przez Morfidon
Zauważyłem, że na razie jeszcze masz w sobie trochę schematycznego myślenia.

W programowaniu nie ma czegoś takiego. Tu jesteś twórcą. Robisz tak jak chcesz i co lepsze... będzie działało tak jak to zrobisz. Gdy coś nie działa to jedynie kogo jest to wina to Twoja, a nie komputera.

Powinno ładować się to co jest w zmiennej data dzięki:
success: function(data) {
$("#result").html(data);
}

natomiast to co znajduje się w data to jest to co zostanie wypisane przy pomocy echo tu:
url:{"data.php"},

.

Strona się przeładowuje, gdy wyślesz taki rozkaz w przeglądarce. Zmienisz np. URL.