instant search jak w google - problem.

0

Witam, chociaż wiele razy korzystałem z tego forum to jednak po raz pierwszy postanowiłem poradzić się was bezposrednio. Otóż znalazłem fajny skrypt php/jquery pozwalający na umieszczenie na własnej stronie "search instant" (takie jak ma google).
świetnie zilustrowany - mini tutorial znajduje sie tu: http://woorkup.com/2010/09/13/how-to-create-your-own-instant-search/ . Wszystko działa jak należy tylko chciałbym wprowadzić jedną małą zmianę a ponieważ jestem nie mam za duzego doswiadczenia w javie to moze jest ktoś to wie jak to zrobić. W tym skrypcie zaraz po załadowaniu wyszukiwarki nie ma pokazanych zadnych wyników , a mi chodzi żeby po załadowaniu były widoczne wszystkie (albo jakieś domyślne) dane z tabeli MySQL i potem normalnie filtrowane przez wpisywanie szukanej frazy. Mam nadzieję że wiecie o co mi chodzi. Podejrzewam ze rozwiazanie jest banalnie proste, ale nawet takie dla kogos jak ja kto używał wcześniej javy tylko do wyświetlania okienek z potwierdzeniem yes/no jest trudne. Z góry dziękuję za wszelka pomoc i polecam wypróbować skrypt w linku powyzej - fajna zabawka. pozdrawiam.

0

Filtrowanie wyników po stronie użytkownika możesz rozwiązać za pomocą wyrażeń regularnych, ale skoro nie odróżniasz javy od javascript, to możesz mieć z tym problem (no chyba, że dobrze programujesz, tylko po prostu z tymi dwoma językami programowania nie miałeś nigdy do czynienia). Drugie rozwiązanie, to skorzystanie z funkcji indexOf - ta funkcja zwraca -1 jeśli szukanego wyrażenia nie ma w tekście.

Wyświetlanie wyników od razu możesz zrealizować w banalny sposób - wystarczy na samym wywołać funkcję showResults.

I jeszcze przerobiłbym ten kod tak, żeby dane json były pobierane tylko raz, bo po co za każdym wysyłać nowe zapytanie, skoro chcesz już na samym początku mieć je wszystkie.

0

Sirkruk - dzieki za szybka odpowiedź. Faktycznie - java a java script to dwie różne rzeczy. Jak juz wcześniej wspomniałem wcześniej nie miałem do czynienia z java script (chyba ze jakieś gotowce z dreamweavera). No cóż uczymy sie, całe życie. Mógłbyś mi dokładniej wytłumaczyć jak wstawic tą searchResults? Wiem że brzmi to bardzo głupio i pewnie dla ciebie to banalne, ale siedze nad tym już parę ładnych dni i już mi sie to śni po nocach.... Dzięki bardzo.

0

Piszę z palca, więc może nie działać.

Po pierwsze zastanów się, czy jest konieczność asynchronicznego pobierania danych. Skoro wszystkie mają być widoczne na początku, to moim zdaniem nie, więc ten kod

request = $.getJSON('search.php',{
            q:$q.val()
        },function(data){           
            showResults(data,$q.val());
            runningRequest=false;
        });

Jest zbędny. Gdzieś na początku strony dodaj sobie:

<script type="javascript">
var data = <?php echo json_encode($results); ?>;
</script>

W funkcji showResults dodaj filtrowanie. Tam gdzie masz $.each sprawdzaj, czy szukane wyrażenie znajduje się w aktualnie przetwarzanym elemencie (potrzebną funkcję masz w poprzednim poście), jeśli nie to return false.

Żeby na samym początku pokazać wszystkie wyniki dodaj kod:

$(function(){
  showResults(data, '');
});

I poczytaj o funkcji $.ready(), żebyś zrozumiał co to robi.

Usuń wszystkie odwołania do serwera i gotowe.

0

wielkie dzięki sirkruk. życie mi uratowałeś. jak sprawdzę później to dam znać. pozdrawiam.

\EDIT: Siedziałem do późna ale nie mogłem tego zmusić do działania.... spróbuję jeszcze w weekend i jeśli się nie uda to dam sobie spokój...

1 użytkowników online, w tym zalogowanych: 0, gości: 1