Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka, problem z plikami
hryciuk
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 20.07.2004

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


Witajcie kto mi moze pomóc z wyszukiwarka.
Mam katalog "strony" w którym znajdują się pliki których zawartość chce przeszukac pod katem słów kluczowych.
zapis w kazdym pliku ma sposób:
1||ASD||http://ASD||ASD||2005-10-30_09:27:30||
2||f||http://f||f||2005-10-29_22:45:22||
0||q||http://q.pl||q||2005-10-29_22:38:14||

ilość odwiedzin || naswa || adres | opis || data

Problem głownie polega na tym ze mi nie przeszukuje wszystkich plików tylko 1 plik ! Co mam zrobic zeby przeszukalo wszystkie pliki w katalogu i wyswietlilo je jak w skrypcie. Bede wdzięczny za pomoc. Pozdrawiam
Achca searchtext to form w ktorego wpisujemy słowa kluczowe.
Oto zródło:

  1. <?php
  2. $searchtext = $_POST["searchtext"];
  3. if($searchtext == "") {
  4.     echo "brak tekstu";
  5. }
  6.  
  7. $handle = opendir('strony/.');
  8. while (false !== ($file = readdir($handle))) { 
  9.     if ($file != "." && $file != ".." && $file != "kategorie.szk") {
  10. $file1=fopen("strony/".$file."", "r");
  11.    flock($file1, 1);
  12.    }
  13.  //tu jest linijka odpowiedzialna za wczytanie pliku ale wczytuje mi tylko 1 plik
  14. $plik = "$katalog/$file";
  15.   }
  16. $file = file($plik);
  17. $count=0;
  18. echo"<b>Wyniki wyszukiwania:</b><br><br>";
  19. for ($i=0;$i<count($file);$i++) {
  20.     $grupa = split("|", chop($file[$i]));
  21.     $split = explode("||", $file[$i]);
  22.     $findtxt="$split[1]$split[2]$split[3]";
  23.  
  24.     if(eregi($searchtext,$findtxt)) {
  25.         $count++;
  26.         echo "<table cellspacing=0 cellpadding=0 boreder=0 width=100%><tr><td class=ramka><img src=image/dok.gif align=top> <b>".str_replace("_"," ",$split[1])."</b><hr>";
  27.         echo "<a href="go.php?site=$split[2]&p=$kategoria" onmouseover='roll$count.src="image/www2.gif"'onMouseOut='roll$count.src="image/www1.gif"' title='Otwórz stronę: ".str_replace("_"," ",$split[1])."' target=_blank><img src="image/www1.gif" name=roll$count align=top> ".$split[2]."</a><br><br>";
  28.         echo "<table cellspacing=0 cellpadding=0 boreder=0 width=100%><tr><td class=ramka1>".str_replace("_"," ",$split[3])."</td></tr></table><br>";
  29.         echo "<small>Ilo&para;ć wywołań: <b style="color: #B22222">$split[0]</b>&nbsp;&nbsp;Data zgłoszenia strony: ".str_replace("_"," ",$split[4])."</small>";
  30.         echo "</td></tr></table><br>";
  31.     }
  32. }
  33. echo "Znaleziono $count odpowiedzi na zapytanie";
  34.  
  35. ?>
Go to the top of the page
+Quote Post
dtb
post
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


  1. <?php
  2.  
  3. foreach (glob('strony/*.*') as $filename) {
  4. // $filename - nazwa pliku
  5. $text = file_get_contents ($filename);
  6. // $text - zawartość aktualnie sprawdzanego pliku. możesz teraz samodzielnie przeszukac je
    go zawartość
  7. }
  8.  
  9. ?>


http://pl.php.net/manual/pl/function.glob.php
http://pl.php.net/manual/pl/function.file-get-contents.php

Ten post edytował dtb 18.11.2005, 11:28:11


--------------------
Go to the top of the page
+Quote Post
hryciuk
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 20.07.2004

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


Ok wyszukuje mi pliki ale powstały nowe problemy a mianowicie takie:
j
ak zrobic aby $count zliczał wszystkie wyszukane linijki bo nie działa jak przestawie go wyzej to zlicza ale jest wyswietlany tyle razy ile plikow jest przeszukiwanych?

i w linku $kategoria zeby była to nazwa pliku, próbowałem wstawić $filename ale wtedy wstawia sie np. "strony/jakisplik.txt" a ja chce zeby sei wstawilo tylko "jakisplik" bez zadnych rozszezen i przedrostków.

i chce zeby mi przeszukiwało pliki w katalogu z wyjatkiem pliku cos.txt
Pozdrawiam
  1. <?php
  2. $searchtext = $_POST["searchtext"];
  3. if($searchtext == "") {
  4.     echo "brak tekstu";
  5. }
  6.  echo"<b>Wyniki wyszukiwania:</b><br><br>";
  7. foreach (glob("strony/*.*") as $filename) {
  8.  
  9.   $text = file_get_contents ($filename);
  10.  
  11.  
  12.  
  13. $file = file($filename);
  14.  
  15. //to jest ten licznik ale nie działa ;/
  16. $count=0;
  17.  
  18. for ($i=0;$i<count($file);$i++) {
  19.     $grupa = split("|", chop($file[$i]));
  20.     $split = explode("||", $file[$i]);
  21.     $findtxt="$split[1]$split[2]$split[3]";
  22.  
  23.     if(eregi($searchtext,$findtxt)) {
  24.         $count++;
  25.         echo "<table cellspacing=0 cellpadding=0 boreder=0 width=100%><tr><td class=ramka><img src=image/dok.gif align=top> <b>".str_replace("_"," ",$split[1])."</b><hr>";
  26.  
  27. //a tu ponizej mam ten link chce zeby zamiast $kategoria wstawiala sie nazwa pliku
    .
  28.  
  29.         echo "<a href="go.php?site=$split[2]&p=$kategoria" onmouseover='roll$count.src="image/www2.gif"'onMouseOut='roll$count.src="image/www1.gif"' title='Otwórz stronę: ".str_replace("_"," ",$split[1])."' target=_blank><img src="image/www1.gif" name=roll$count align=top> ".$split[2]."</a><br><br>";
  30.         echo "<table cellspacing=0 cellpadding=0 boreder=0 width=100%><tr><td class=ramka1>".str_replace("_"," ",$split[3])."</td></tr></table><br>";
  31.         echo "<small>Ilo&para;ć wywołań: <b style="color: #B22222">$split[0]</b>&nbsp;&nbsp;Data zgłoszenia strony: ".str_replace("_"," ",$split[4])."</small>";
  32.         echo "</td></tr></table><br>";
  33.     }
  34. }
  35.  }
  36. echo "Znaleziono $count odpowiedzi na zapytanie";
  37.  
  38. ?>


Ten post edytował hryciuk 18.11.2005, 14:25:12
Go to the top of the page
+Quote Post
dtb
post
Post #4





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


Cytat
i chce zeby mi przeszukiwało pliki w katalogu z wyjatkiem pliku cos.txt


daj to na początku pętli foreach:
  1. <?php
  2. if ($filename == 'katalog/cos.txt') break;
  3.  
  4. ?>


Cytat
i w linku $kategoria zeby była to nazwa pliku, próbowałem wstawić $filename ale wtedy wstawia sie np. "strony/jakisplik.txt" a ja chce zeby sei wstawilo tylko "jakisplik" bez zadnych rozszezen i przedrostków.


  1. <?php
  2. echo preg_replace ('/katalog/([a-zA-Z0-9_]+).txt/', '$1', $filename);
  3. ?>


Cytat
jak zrobic aby $count zliczał wszystkie wyszukane linijki bo nie działa jak przestawie go wyzej to zlicza ale jest wyswietlany tyle razy ile plikow jest przeszukiwanych?


nie jestem pewien czy cie dobrze zrozumiałem. wytnij $count = 0; i wstaw przed pętle foreach.

Ten post edytował dtb 19.11.2005, 11:14:40


--------------------
Go to the top of the page
+Quote Post
hryciuk
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 20.07.2004

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


Wielkie dzięki o to mi chodzilo. A zeby zliczalo wystaraczylo dodaj jeszcze jedna funkcje. Dzieki za pomoc i pozdrawiam

Ten post edytował hryciuk 19.11.2005, 12:23:56
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 Aktualny czas: 19.08.2025 - 15:22