![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam taką stronę: Wyniki są zapisane w pliku xml i są one pobierane do danej kategorii na stronę główną itd. Jak można zrobić wyszukiwarkę, żeby wyszukiwała wyniki np. po tytule z pliku xml lub już z kategorii, które są na stronie głównej? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Można rozwiązać to na kilka sposobów, ale myślę, że jednym z bardziej przyjaznych dla programisty jest użycie XPath w pliku XML. Wygoda jak dla mnie porównywalna z zapytaniami do bazy danych
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Można troszkę jaśniej
![]() Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tu masz ładnie opisane użycie XML w PHP (łącznie z XPath): http://devzone.zend.com/article/1713
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Można coś w wersji pl?
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Przyzwyczajaj się, że poznając programowanie większość tych rzeczy powyżej absolutnych podstaw nie jest dostępna w języku polskim. A jeśli już jest, to będziesz za nią musiał zapłacić (książki, kursy, płatne treści na stronach). Na szczęście XPath jest bliski podstawom i tutaj masz choćby krótki tutorialik do niego:
http://www.ygreg.com/pokaz.php/xpath -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kod simplexml ladujesz do niego, wyciagasz kolumne zwiazana z wyszukiwana rzecza (np. tytul), w petli od 0 do liczba_elementow porownujesz (eregi) wartosc wezla z szukana wartoscia, jesli sie zgadza, to zapamietujesz index w tablicy $wyniki na koniec pokazujesz zawartosc xml odwolujac sie do listy publication i indeksow z tablicy wyniki (jesli szukany tytul byl na pozycjach 0, 5 i 67 to pokazujesz publication[0], publication[5] i publication[67]) czy ktoś mi pomoże zamienić to na php ![]() Pozdrawiam |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
A co, dostałeś taką odpowiedź na innym forum i nie wiesz co z tym zrobić ?
![]() Ja bym tego jednak nie robił za pomocą simplexml tylko obiektu DomDocument i później domxpath. 1. tworzysz nowy obiekt DomDocument ($x = new DomDocument() ) i ładujesz do niego plik xml metodą load(sciezka/do/pliku.xml) 2. tworzysz nowy obiekt domxpath, podając mu w argumencie konstruktora instancję wcześniej utworzonego obiektu DomDocument ($y = new domxpath($x) ) 3. wywołujesz metodę query obiektu domxpath, podając w argumencie ścieżkę xpath do elementów XML, które chcesz pobrać. Wynik przypisujesz do zmiennej 4. za pomocą pętli foreach iterujesz tablicę zawierającą pobrane elementy i wyświetlasz je lub robisz z nimi co tam potrzebujesz ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy mnie dobrze rozumicie i czy to dobrze napisałem w pierwszym wątku.
W jednym pliku xml mam tam zawarte wszystkie tytuły ![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
No i robisz dokładnie tak jak napisałem, a w tej pętli foreach (pkt 4) po prostu sprawdzasz czy szukana fraza pojawia się w którymś z tytułów pobranych Xpathem.
Przykładowo: masz taki plik xml:
to metoda query obiektu domxpath będzie wyglądała tak:
Już chyba więcej napisać się nie da ![]() Jak dalej nie wiesz jak tworzyć te obiekty to zajrzyj do tego artykułu, którego link wcześniej podałem, nie musisz znać angielskiego, popatrz na kody po prostu ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ok już wyświetlają mi się tytuły.
Zrobiłem to tak:
Teraz jak podpiąć pod to wyszukiwarkę ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
W pętli foreach zamiast wyświetlać wartość pola textContent każdego elementu XML porównaj ją np. za pomocą funkcji stristr z frazą wpisaną przez użytkownika. Jeżeli funkcja zwróci true - znaczy że dany tytuł pasuje w jakimś stopniu do zapytania, jeśli false - znaczy, że nie został znaleziony.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Można troszkę jaśniej
![]() Pozdrawiam |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
No i oczywiście musisz dorobić do tego jakiś formularz. Nie wiem co w tym jest niejasnego |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 0 Dołączył: 16.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli ma to wyglądać tak:
wyszukiwarka.php
pole.html
Tak to ma wyglądać..? Coś nie działa :/ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 10:16 |