Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javaScript][Ajax] Problem ze zmiennymi
Forum PHP.pl > Forum > Przedszkole
djluzak
Nie wiem czy to dobry dział, poniewaz moj problem wiąże się głownie z JS, ale także z Ajaxem.

Mam taki kod:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Ajax Auto Suggest</title>
  6.  
  7. <script type="text/javascript" src="jquery.js"></script>
  8. <script type="text/javascript">
  9. function lookup1(imie) {
  10. if(imie.length == 0) {
  11. $('#suggestions1').hide();
  12. } else {
  13. $.post("rpc.php", {queryString1: ""+imie+""}, function(data){
  14. if(data.length >0) {
  15. $('#suggestions1').show();
  16. $('#autoSuggestionsList1').html(data);
  17. }
  18. });
  19. }
  20. }
  21.  
  22. function fill(thisValue) {
  23. $('#imie').val(thisValue);
  24. setTimeout("$('#suggestions1').hide();", 200);
  25. }
  26. <script type="text/javascript">
  27.  
  28. function lookup2(nazwisko) {
  29. if(nazwisko.length == 0) {
  30. $('#suggestions2').hide();
  31. } else {
  32. $.post("rpc.php", {queryString2: ""+nazwisko+""}, function(data){
  33. if(data.length >0) {
  34. $('#suggestions2').show();
  35. $('#autoSuggestionsList2').html(data);
  36. }
  37. });
  38. }
  39. }
  40.  
  41. function fill(thisValue) {
  42. $('#nazwisko').val(thisValue);
  43. setTimeout("$('#suggestions2').hide();", 200);
  44. }
  45.  
  46. </head>
  47.  
  48. <input id="imie" onkeyup="lookup1(this.value);" onblur="fill();" type="text" name="imie" class="formn">
  49. <div class="suggestionsBox1" id="suggestions1" style="display: none;"><div class="suggestionList" id="autoSuggestionsList1"> </div>
  50.  
  51. <input id="nazwisko" onkeyup="lookup2(this.value);" onblur="fill();" type="text" name="nazwisko" class=formn >
  52. <div class="suggestionsBox" id="suggestions2" style="display: none;"><div class="suggestionList" id="autoSuggestionsList2"> </div></td></tr>
  53.  
  54.  
  55. </body>
  56. </html>


Wiele kodu opuscilem, ale to nie jest tu wazne. Chodzi o to, ze skrypt ten oparty na jquery wyswietla autouzupelnianie pola imie i nazwisko z bazy myqsl.
Samo wyswietlanie podpwoiedzi mi dziala, tylko cos mam nie tak z ta czescia kodu:

  1. function fill(thisValue) {
  2. $('#imie').val(thisValue);
  3. setTimeout("$('#suggestions1').hide();", 200);
  4. }
  5.  
  6. <input id="imie" onkeyup="lookup1(this.value);" onblur="fill();" type="text" name="imie" class="formn">


a dokladnie dwoma pierwszymi linijkami.

Gdy wybiore z listy imie to wpisuje mi go do pola nazwisko, a nazwisko wpisuje tez do pola nazwisko.
Co bym nie zmienil zawsze imie i nazwisko mam w tym samym polu.

Czy ktos jest mi w stanie pomoc?
nospor
po pierwsze: fill() wymaga parametry thisValue, a ty przy wowolaniu go nie podajesz
po drugie: dwa razy deklarujesz fill(), raz dla imie, raz dla nazwisko. To nazwisko nadpisuje ci pierwszą definicje

po trzecie i najwazniejsze:
http://bassistance.de/jquery-plugins/jquer...n-autocomplete/

Nie wywazaj otwartych juz drzwi winksmiley.jpg
piotrooo89
prosze gotowy skrypcik +opis. klik
djluzak
Dzieki koledzy. Wlasnie taki skrypcik znalazlem, bo nie moglem sobie poradzic ze skryptem autocomplete, a konkretniej z wdrozeniem myslq-a. Nie wiem jak polaczyc JS z SQL. Problem tkwi w tym, ze nie znam JS.

Mam dwie funkce fill i jedna nadpisuje druga, ale czy da sie to jakos ominac? Tak, zeby fill wiedzial gdzie ma wstawic jakie dane. Czy poprostu nie da sie jakiejs innej funkcji uzyc zamiast fill,. zeby wypelnic te dwa pola?

Dzieki koledzy za skrypty, jak z tym mi sie nie uda bede walczyl z innymi.

Aha, gdy podam parametr thisValue do filla to i tak nic sie nie zmienia. Zawsze mam wszystko w polu nazwisko.
piotrooo89
w tym co ja Ci dałem skrypt wykorzysuje dane z bazy... wysarczy przerobić na swoje potrzeby, ale jak patrzyłem na to co Ci ~nospor przesłał to również jest ciekawa pozycjia.
djluzak
Ten skrypt autocomplete ma bardzo duze mozliwosci, ale ja sobie nie poradze z wdrozeniem sqla do js.
Drugi skrypt jest duzo protszy w zastosowaniu.

Na ta funkcje fill stracilem juz z 3 godziny i nic....
nospor
Cytat
Ten skrypt autocomplete ma bardzo duze mozliwosci, ale ja sobie nie poradze z wdrozeniem sqla do js.

A cos ty sie uczepil tego sqla w js?
W js masz tylko js. Dla autocomplete podajesz adres skryptu, ktory ci bedzie wypluwal dane. To jest zwykly php, a z php juz chyba sobie poradzisz?
djluzak
Wlasnie nie wiem czy dam rade.

W tamtym skrypcie mialem cos takiego (rpc.php):

  1. <?php
  2. $sql = mysql_connect("localhost", "root", "aaaaa") or die("Connection error: ".mysql_error());
  3. mysql_select_db("xyz", $sql) or die("Unable to select the database: ".mysql_error());
  4.    
  5. if(isset($_POST['queryString'])) {
  6.          
  7.    $queryString = $_POST['queryString'];
  8.            
  9.        if(strlen($queryString) >0) {
  10.        
  11.            $query = mysql_query("SELECT distinct imie FROM cos_tam WHERE imie LIKE '$queryString%' LIMIT 10");
  12.            $dane = mysql_num_rows($query);
  13.                
  14.            if($dane<>NULL) {
  15.                    
  16.            while($row = mysql_fetch_array($query)) {
  17.            echo '<li onClick="fill(''.$row['imie'].'');">'.$row['imie'].'</li>';
  18.            }
  19.            }
  20.        }
  21. }
  22. ?>


w wywoływało się to za pomocą:

  1. $.post("rpc.php", {queryString: ""+imie+""}, function(data)


A tu zupelnie nie wiem....czasem ogarnia mnie taka niemoc....nagle ci sie wszystko miesza.

W autocomplete mam funkcje:
  1. $("#suggest1").autocomplete(cities, cos tam);


I to autocomplete(cities,cos tam) pobiera nazwy miast, wiec co mam napisac?

  1. autocomplete('jakis_plik.php',cos tam)
?

I w tym pliku php napisac cos takiego jak mam wyzej?

Sorki, ze zamieszalem.

Wazne dla mnie jest jeszcze w jakiej postaci plik php ma zwrocic dane - przez echo?
nospor
skrypt php ma zwrocic dane w postaci:
Kod
rekord1
rekord2
rekord3
...

gdzie rekord to poprostu jakis tekst, jaki ma byc zwrocony dla podpowiedzi
Są też wersje rozszerzone, ale to juz inna bajka i nie na ten etap Twojej wiedzy winksmiley.jpg
djluzak
Dzieki wielkie kolego, juz sobie z tym poradziłem, jak narazie w wersji podstawowej wyswietlania listy.
Teraz probuje to wcisnac do mojego kodu. Jednak ten skrypt jest bardziej skomplikowany, ale prostszy w uzyciu.

Zapomnialem o najwazniejszym: jak pozbyc sie krzaczkow z polskiej czcionki? Kodowanie strony mam odpowiednie, ale pokazują mi sie znaczki typu ����
nospor
Cytat
Jednak ten skrypt jest bardziej skomplikowany, ale prostszy w uzyciu.

Albo skomplikowany, albo prosty. Zdecyduj sie winksmiley.jpg

Cytat
ak pozbyc sie krzaczkow z polskiej czcionki? Kodowanie strony mam odpowiednie, ale pokazują mi sie znaczki typu ����

O krzakach bylo nie raz na forum, wystarczy poszukac.

Oprocz kodowania strony, musisz tez miec wlasciwe kodowanie bazy i wlasciwe kodowanie pliku php.
djluzak
Juz udalo mi sie zmienic kodowanie strony oraz pliku i czcionka jest OK.
Strona zostala zmieniona na UFT-8 bez BOM, a w skrypcie dodalem:

  1. header("Content-type: text/html; charset=iso-8859-2");
.

Dzieki za pomoc!
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.