Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] Wyszukiarka na żywo
Forum PHP.pl > Forum > Przedszkole
gabcio
Witam,

Mam takie pytanie w jaki sposób zrobić wyszukiwarkę, która będzie mi na żywo wyszukiwać daną frazę?

Mianowicie:

Strona mi się ładuje i mam listę artykułów (1000).
I teraz jeżeli sobie wpisze 0031 to mi pokaże tylko te z 0031 bez żadnych przeładować strony.

Jeżeli już ktoś napisał takie coś lub wie gdzie to znaleźć to proszę o link tutaj na tym forum tego nie znalazłem.
Wicepsik
Ajax
gabcio
Tyle to i ja wiem.
strife
Cytat(gabcio @ 22.05.2010, 20:36:03 ) *
Tyle to i ja wiem.

Jak zadałeś takie pytanie to jakiej odpowiedzi oczekujesz? Nawet nie widać, że się starasz, nie podałeś żadnych konkretów, kodu źródłowego, więc jak my mamy Ci niby pomóc co?

Więc ja powtórzę, skorzystaj z np. jquery, kilka linijek kodu i masz.
gabcio
Rozumiem, że umiecie czytać tylko 2 pierwsze linijki bo kolejnych to już nie widać..
Cienki1980
Cytat(gabcio @ 22.05.2010, 23:21:02 ) *
Rozumiem, że umiecie czytać tylko 2 pierwsze linijki bo kolejnych to już nie widać..


Raczej czytamy dobrze. Pytasz " Jeżeli już ktoś napisał takie coś ... " - tak napisałem takie coś.
I tak jak poprzednicy korzystałem z jquery i magicznego ajax'a.

Jak to zrobiłem ? Poczytałem o jquery - http://docs.jquery.com/Main_Page i zrobiłem.

Każdy tutaj Ci udzieli pomocy, ale tylko jak pokażesz że coś zrobiłeś sam.
strife
Cytat(gabcio @ 22.05.2010, 22:21:02 ) *
Rozumiem, że umiecie czytać tylko 2 pierwsze linijki bo kolejnych to już nie widać..

Ja przeczytałem dokładnie całą treść Twojego tematu i nie widzę żadnego kodu źródłowego, z Twojej postawy nie widać, że się starasz to zrobić, tylko czekasz na gotowca, więc wybacz.

Cytat
Strona mi się ładuje i mam listę artykułów (1000).
I teraz jeżeli sobie wpisze 0031 to mi pokaże tylko te z 0031 bez żadnych przeładować strony.

Jaka strona, co to jest lista artykułów, gdzie sobie wpiszesz 0031, gdzie ma się to niby pokazać itp. itd. Żadnych konkretów nie podałeś ani kodu, więc powtarzam jeszcze raz podaj więcej konkretów i kod źródłowy to spróbujemy Ci pomóc, a nie napisać za Ciebie.

Pozdrawiam.
gabcio
  1. <div id="content_left">
  2. <p class="breadcrumb"><a href="index.php">Home</a>
  3. &gt; <a href="index.php">Artykuły</a></p>
  4. <form method="post" action="clientarea.php?action=masspay">
  5. <table class="data" align="center" border="0" cellpadding="10"
  6. cellspacing="0" width="100%">
  7. <tbody><tr align=center>
  8. <th>Nr. artykułu</th>
  9. <th>Nazwa</th>
  10. <th>Kolor</th>
  11. <th>Cena netto</th>
  12. <th>Cena brutto</th>
  13. <th>Ilość</th>
  14. <th>Status</th>
  15. </tbody></tr>
  16. <?
  17. $cmd = 0;
  18. if (isset($_GET['cmd']))
  19. $cmd = $_GET['cmd'];
  20.  
  21. $ile_na_stronie = 8;
  22. $query = mysql_query("SELECT * FROM magazyn_koszalin");
  23. $wszystkie = mysql_num_rows($query);
  24. $strony = ceil($wszystkie/$ile_na_stronie);
  25. $zapytanie = mysql_query("SELECT * FROM magazyn_koszalin ORDER BY id ASC LIMIT ".($cmd*$ile_na_stronie).", ".$ile_na_stronie);
  26.  
  27.  
  28. while($rows = mysql_fetch_array($zapytanie))
  29.  
  30. {
  31. $id = $rows['id'];
  32. $numer_artykulu = $rows['numer_artykulu'];
  33. $nazwa = $rows['nazwa'];
  34. $kolor = $rows['kolor'];
  35. $cena_netto = $rows['cena_netto'];
  36. $cena_brutto = $rows['cena_brutto'];
  37. $ilosc = $rows['ilosc'];
  38. $status = $rows['status'];
  39.  
  40. echo "<tr align=center class=wiersz><td>".$numer_artykulu."</td><td>".$nazwa."</td><td>".$kolor."</td><td>".$cena_netto."</td><td>".$cena_brutto."</td><td>".$ilosc."</td><td>".$status."</td></tr>";
  41. }
  42. echo "</table>";
  43. echo("<center><br><BR>");
  44. for($i = 0; $i < $strony; $i++)
  45. {
  46. $int = $i+1;
  47. echo "<a href=index.php?cmd=".$i.">[".$int."]</a> ";
  48. }
  49.  
  50. echo "</center>";
  51. ?>
  52. </form>


To wyświetla rekordy

A nad tym chcę właśnie tą wyszukiwarkę, żeby nie klikać na każdą ze stronnic.
A jeżeli chodzi o Ajax to nie znam.. chyba, że można to jakiś inaczej napisać
Cienki1980
I teraz zasadnicze pytanie
Czy chcesz żeby podczas wpisywania od razu zmieniała się lista wyników ? Czy jakąś inną funkcję ?

Niezależnie od tego co chcesz zrobić ale tak długo jak chcesz uzyskać efekt bez przeładowania to tylko i wyłącznie AJAX.
Polecam lekturę chociażby tego - > http://api.jquery.com/load/ chyba najprostsze do zrozumienia.
gabcio
Chciałbym, aby podczas wpisywania jakieś tam nazwy od razu mi pokazało wyszukana nazwa i jak klikne to się pojawi dane o tym.
Co do lektury to poczytam smile.gif
Cienki1980
Cytat(gabcio @ 23.05.2010, 00:24:09 ) *
Chciałbym, aby podczas wpisywania jakieś tam nazwy od razu mi pokazało wyszukana nazwa i jak klikne to się pojawi dane o tym.
Co do lektury to poczytam smile.gif

Czyli chciałbyś coś w stylu autocomplete które jest widoczne chociażby w google.pl ?

Nie zmienia to faktu, że jest to do wykonania po przeczytaniu podanej "lektury". Wszystko opiera się na wysyłaniu odpowiednich danych ajaxem do skryptu i odbiorem danych jakie ten skrypt wyprodukuje.
gabcio
Czytam , ale prawdę pisząc nie wiem co się z czym je.. php ok, ale ajax jeszcze to już masakra
Cienki1980
Cytat(gabcio @ 23.05.2010, 12:55:30 ) *
Czytam , ale prawdę pisząc nie wiem co się z czym je.. php ok, ale ajax jeszcze to już masakra


Chyba nie dokładnie przeczytałeś zadaną lekturę. Przeczytaj opis funkcji load() i to już powinno wystarczyć do zrobienia tego co chcesz. Próbowałeś zrobić chociaż jeden przykład ? Wiesz jak to działa - przetestowałeś ?
Napisz może czego nie rozumiesz z tej lektury ?

Musisz wysłać do pliku php tekst wpisywany do inputa wyszukiwarki ( najlepiej na onchange() albo onkeyup() albo onkeypress() ). Wartość tą wysyłasz jako DRUGI parametr funkcji load(). Pierwszym parametrem jest adres pliku php. Wystarczy dodać do tego miejsce gdzie ma się pokazać wynik.
Schematycznie:
Kod
$('#div_z_wynikami').load(plik.php, parametry);

Oczywiście musi być do tego pobieranie z inputa -> funkcja val() w jquery, plus napisanie tak żeby reagował na jedną z powyższych akcji.

Napisz może dokładniej czego nie rozumiesz, a najlepiej pokaż przykłady na których sprawdzałeś.
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.