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.
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.
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.
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.
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...