Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Opcja szukaj na stronie.
Mateusz10
post 24.06.2009, 09:16:42
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Witam! Chciałbym stworzyć na swoim portalu wyszukiwarkę treści tylko z mojej strony aby można tam było wpisać słowo i aby pokazywało wszystkie tematy aktualności z tym związane. Jak to zrobić
Go to the top of the page
+Quote Post
Spawnm
post 24.06.2009, 09:29:38
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




w zapytaniu sql użyj LIKE "%$wyraz%"
Go to the top of the page
+Quote Post
alegorn
post 24.06.2009, 09:30:41
Post #3





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


to zalezy jak masz zbudowana storne, a dokladniej gdzie trzymasz tresc po ktorej chcesz wyszukiwac.

jesli w plikach - to prosto,
tworzysz iterator po katalogu, przechodzisz po kazdym prawidlowym pliku, sprawdzasz wyrazeniami regularnymi i wyswietlasz wynik.
jesli content masz w bazie danych - to po prostu preparujesz odpowiedniego sql'a i wyswietlasz wynik,
ewent hybryda obu opcji

oczywiscie to tak w wielkim skrocie, pamietaj o zabezpieczeniu sie na zlosliwy kod, a przy przeszukiwaniu tresci - radze wyciac wczesniej wszelkiego typu znaki html (takze wyrazeniem regularnym)

oczywiscie - przeszukiwanie calosci rozbudowanego serwisu w ten sposob to dosc czasochlonne moze byc, jesli czas swykonywania jest zbyt wielki - trzeba by bylo pomyslec o zindeksowaniu calosci.... ale to juz inna bajka.

tak naprawde poziom trudnosci wykonania tego o czym napisalem - zalezy od stopnia skomplikowania wyszukiwarki... to o czym napisalem, jest do wykonania w mniej niz pol godziny(w najprostszej postaci), i to z testami...
Go to the top of the page
+Quote Post
Mateusz10
post 24.06.2009, 09:33:36
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Wyszukiwarka ma przeszukiwać pliki stron. A może podacie jakiś konkretny skrypt?
Go to the top of the page
+Quote Post
Spawnm
post 24.06.2009, 09:35:48
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




file_get_contents" title="Zobacz w manualu PHP" target="_manual i strpos" title="Zobacz w manualu PHP" target="_manual chyba wystarczy smile.gif

Ten post edytował Spawnm 24.06.2009, 09:50:57
Go to the top of the page
+Quote Post
alegorn
post 24.06.2009, 10:03:22
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


to tak na szybko, bez wiekszej finezji i zabezpieczen...
  1. <?php
  2. //tablica plikow po ktorch nie wyszukujemy plikow
  3. $arrWyklucz = array(
  4.    'index.php'
  5. );
  6.  
  7. // szukany ciag
  8. $query = (isset($_REQUEST['query']))?$_REQUEST['query']:null;
  9. if(!empty($query)){
  10.    $query = htmlentities($query);
  11.    $dir = new DirectoryIterator(dirname(__FILE__));
  12.    $arSearch = array();
  13.    foreach ($dir as $fileinfo) {
  14.        if (!$fileinfo->isDot()) {
  15.            $fname = $fileinfo->getFilename();
  16.            if(in_array($fname,$arrWyklucz))
  17.                continue;
  18.    
  19.            $fpath = dirname(__FILE__) . '/'. $fname;
  20.            $fn = explode('.',$fname);
  21.            $ext = array_pop($fn);
  22.            //szukam tylko w plikach z rozszezeniem PHP
  23.            if ($ext =="php"){
  24.                $f = fopen($fpath,'r');
  25.                $tresc = file_get_contents($f);
  26.                $sprawdz = ereg("(".$query.")", $tresc);
  27.                if($sprawdz !== false){
  28.                    $arSearch[] = '<a href="'.TUTAJ_URL.$fname.'">'.$fn[0].'</a>';
  29.                }
  30.            }
  31.        }
  32.    }
  33. }
  34. if(count($arSearch)>0)
  35.    echo join('<br />', $arSearch);
  36. else
  37.    echo 'nie znalazlem';
  38. ?>
Go to the top of the page
+Quote Post
Mateusz10
post 24.06.2009, 14:40:14
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


A jak to podkleić pod ramkę wyszukiwania? bo jak wkleiłem na strone to pisze nie znalazłem i to wszystko.

Pomocy! DO czego wkleić ten kod?
Go to the top of the page
+Quote Post
Spawnm
post 24.06.2009, 14:46:17
Post #8





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Cytat(Mateusz10 @ 24.06.2009, 15:40:14 ) *
Pomocy! DO czego wkleić ten kod?

Do pliku winksmiley.jpg

Pokaż jak obecnie wygląda twój kod.

a to

  1. <?php
  2. if(count($arSearch)>0)
  3.   echo join('<br />', $arSearch);
  4. else
  5.   echo 'nie znalazlem';
  6. ?>


dał bym w klamerce od
if(!empty($query)){
Go to the top of the page
+Quote Post
Mateusz10
post 24.06.2009, 16:18:04
Post #9





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Ale ja nie mam pojęcia jak to podkleić do strony. Możecie mi powiedzieć jak to zrobić?
Go to the top of the page
+Quote Post
alegorn
post 25.06.2009, 11:32:16
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


hmm... okazalo sie ze zrobilem maly error winksmiley.jpg, tak bywa jak sie z glowy bez sprawdzania pisze.

tu masz caly plik, lacznie z formularzem do wywolania, zapisz go i zadziala... dalej to juz chyba sobie poradzisz...

  1. <form action="?"><input name="query" /> <input type="submit" /></form>
  2. <?php
  3. //tablica plikow po ktorch nie wyszukujemy plikow
  4. $arrWyklucz = array(
  5.   'index.php'
  6. );
  7.  
  8. // szukany ciag
  9. $query = (isset($_REQUEST['query']))?$_REQUEST['query']:null;
  10. if(!empty($query)){
  11.   $query = htmlentities($query);
  12.   $dir = new DirectoryIterator(dirname(__FILE__));
  13.   $arSearch = array();
  14.   foreach ($dir as $fileinfo) {
  15.       if (!$fileinfo->isDot()) {
  16.           $fname = $fileinfo->getFilename();
  17.           if(in_array($fname,$arrWyklucz))
  18.               continue;
  19.  
  20.           $fpath = dirname(__FILE__) . '/'. $fname;
  21.           $fn = explode('.',$fname);
  22.           $ext = array_pop($fn);
  23.           //szukam tylko w plikach z rozszezeniem PHP
  24.           if ($ext =="php"){
  25.               $tresc = file_get_contents($fpath);
  26.               $sprawdz = ereg("(".$query.")", $tresc);
  27.               if($sprawdz !== false){
  28.                   $arSearch[] = '<a href="'.TUTAJ_URL.$fname.'">'.$fn[0].'</a>';
  29.               }
  30.           }
  31.       }
  32.   }
  33. }
  34. if(!empty($query))
  35.    if(count($arSearch)>0)
  36.       echo join('<br />', $arSearch);
  37.    else
  38.       echo 'nie znalazlem';
  39. ?>



tym razem testowalem - dziala:)

Ten post edytował alegorn 25.06.2009, 11:34:38
Go to the top of the page
+Quote Post
Mateusz10
post 25.06.2009, 15:23:39
Post #11





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


A u mnie na stronie jak wpisze i dam wyszukaj to pisze:

Fatal error: Cannot instantiate non-existent class: directoryiterator in /var/www/sites/yoyo.pl/m/i/miso/menu.php on line 40
Go to the top of the page
+Quote Post
Crozin
post 25.06.2009, 16:09:11
Post #12





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Czyżbyś miał PHP4?
Go to the top of the page
+Quote Post
Mateusz10
post 25.06.2009, 17:34:30
Post #13





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


wątpie gdyż na yoyo.pl pisze iż jest tam php 5 więc co jest przyczyną? a może nie tam gdzie trzeba dodałem skrypt? bo ja mam tak w index.php jest menu i tam jest include do menu.php i w tym menu.php jest menu rozwijane i pod nim wyszukiwarka.
Go to the top of the page
+Quote Post
erix
post 25.06.2009, 17:58:21
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Albo masz czwórkę włączoną, albo za starą piątkę.

Co masz w phpinfo" title="Zobacz w manualu PHP" target="_manual?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Mateusz10
post 25.06.2009, 18:32:20
Post #15





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


już mam, takie coś mi wyskoczyło.

Kod
4.4.4-8+etch4yoyo1


Jak zmienić php na 5?

Ten post edytował Mateusz10 25.06.2009, 18:36:45
Go to the top of the page
+Quote Post
erix
post 25.06.2009, 20:48:04
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jesteśmy pomocą hostingu?

Poszukaj w panelu/na forum.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Mateusz10
post 26.06.2009, 09:38:39
Post #17





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Czyli zmienić hosting i będzie dobrze tak?
Go to the top of the page
+Quote Post
Crozin
post 26.06.2009, 10:30:44
Post #18





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Czyli zapytać obsługę hostingu, albo wklepać w google: jak zmienić na php5 [tu nazwa hostingu]
Go to the top of the page
+Quote Post
lejf
post 4.02.2010, 18:59:25
Post #19





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 4.02.2010

Ostrzeżenie: (0%)
-----


Pozwolę sobie odświeżyć temat.
Wyszukiwarka podana przez alegorna działa z wyjątkiem słów zawierających polskie znaki.
Zwraca wtedy brak wyników.
Może jakieś rozwązanie nie nazbyt skomplikowane komuś się nasuwa?

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 08:09