Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie jQuery bez przeładowania
Forum PHP.pl > Forum > XML, AJAX
lukasheek88
Witam wszystkich,
mam pewien problem, a mianowicie mam tabelkę składającą się z 10 wierszy. W pierwszej kolumnie są inputy gdzie wprowadzam pewien indeks, w drugiej kolumnie chciałbym mieć wynik wyszukania danego indeksu. Chciałbym by to wszystko wyszukiwało się bez przeładowania strony za pomocą jQuery. Czyli wpisuje w pierwszym inpucie jakiś indeks, w drugiej kolumnie dla tego indeksu wyświetla mi wynik, itd, drugi i kolejny wiersz tak samo, wpisuje w inpucie indeks a w drugiej kolumnie wstawia mi wynik zapytania. Jak coś takiego zrobić?
Mam coś takiego:
formularz:
  1. <head>
  2. <script type="text/javascript" src="style/js/wybor.js"></script>
  3. </head>
  4.  
  5. <tr><td>
  6. <input type="text" name="rekord1" onKeyUp="showPart(this.value)">
  7. </td><td><div id="informacja1">Wynik:</div></td></tr>
  8.  
  9. </form>
  10.  
  11.  
  12. </body>
  13. </html>


Plik odpowiedzialny za zapytanie do bazy:
  1. $query = "SELECT * FROM tabela WHERE indeks LIKE '%".$part."%'";
  2. $wyniki = mysql_query($query);
  3.  
  4. while($wiersz=mysql_fetch_array($wyniki))
  5. {
  6. echo $wiersz['wynik'];
  7. }


oraz plik wybor.js
var xmlhttp;
  1. function showPart(str)
  2. {
  3. xmlhttp=GetXmlHttpObject();
  4. var url="baza.php";
  5. url=url+"?part="+str;
  6. url=url+"&sid="+Math.random();
  7. xmlhttp.onreadystatechange=stateChanged;
  8. xmlhttp.open("GET",url,true);
  9. xmlhttp.send(null);
  10. }
  11.  
  12. function stateChanged()
  13. {
  14. if (xmlhttp.readyState==4)
  15. {
  16. document.getElementById("informacja1").innerHTML=xmlhttp.responseText;
  17. document.getElementById("informacja2").innerHTML=xmlhttp.responseText;
  18. document.getElementById("informacja3").innerHTML=xmlhttp.responseText;
  19. }
  20. }
  21.  
  22. function GetXmlHttpObject()
  23. {
  24. if (window.XMLHttpRequest)
  25. {
  26. return new XMLHttpRequest();
  27. }
  28. return null;
  29. }
  30.  

trueblue
Z jQuery niewiele ma to wspólnego.
Chcesz wszystkie rekordy spełniającego warunek wyświetlić w tym jednym polu? Jeśli nie, to dlaczego w skrypcie php jest pętla while?
Brak jest pozostałych input i div.
Czy w przypadku modyfikacji jednego input mają być odczytywane również pozostałe i aktualizowane wyniki?
lukasheek88
Faktycznie,
powinienem dopisać jeszcze dwa wiersze oraz div dla informacja2 i informacja3. Ale jak tak zrobilem to zmiana w pierwszym inpucie powoduje zmianę w każdym divie. Chciałbym by zmiana w pierwszym divie zmieniała dane w divie informacja1, zmiana w drugim inpucie zmieniała dane w divie informacja2 itd....
trueblue
http://jsfiddle.net/01qob0qt/

Ale jeśli będziesz miał więcej rekordów, to będzie to bardzo kłopotliwe, szczególnie, że nie ułatwiasz sobie korzystając z jQuery.
lukasheek88
A z czego korzystać by nie było to kłopotliwe?
Chce mieć tabelkę i w niej inputy a po wprowadzeniu indeksu w kolumnie obok do kazdego inputu dopasowywala by mi sie wartosc z bazy danych. Coś jak funkcja wyszukaj.pionowo w excelu.
trueblue
Z jQuery, o którym wspominałem dwukrotnie.
Pomimo niezastosowania, sprawdziłeś przykład, który podałem?
lukasheek88
Sprawdziłem, nie działa.
trueblue
Przeniosłeś kod do siebie? Co dokładnie nie działa?
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.