Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka
Forum PHP.pl > Forum > PHP
hryciuk
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. ?>
dtb
  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
hryciuk
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. ?>
dtb
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.
hryciuk
Wielkie dzięki o to mi chodzilo. A zeby zliczalo wystaraczylo dodaj jeszcze jedna funkcje. Dzieki za pomoc i pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.