Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka plików w katalogu
Forum PHP.pl > Forum > PHP
AuronDiel
Witam wszystkich! smile.gif
Napisałem wyszukiwarke, która jest niestety dojść niedokładna. Załużmy, że mamy 3 pliki w katalogu o nazwie ,,Pies.php", ,,Pies i Kot.php", ,,PiesiKot.php".
Jeśli wpiszemy w mojej wyszukiwarce słowo ,,Pies" to wypisze nam tylko plik ,,Pies.php" a chce właśnie by wypisał wszystkie pliki które zawieraja słowo kluczowe.
Pisze tutaj ponieważ kompletnie nie mam pomysłu jak się za to zabrać. Mam nadzieje, że wszystko co napisałem jest w miare zrozumiałe i jasne. Dziękuje wszystkim chętnym za pomoc. Po rozwiązaniu problemu wysyłam piwa.
W pierwszym pliku (wyszukaj.php) jest tam formularza z metoda POST.

Plik wyszukajj.php
  1. <?php
  2. $temat = $_POST['temat'];
  3. $Katalog = 'sc/j.polski/' . "$temat" . '.php';
  4. $nazwy = glob("$Katalog");
  5. $nazwyc = count($nazwy);
  6. for ($i = 0; $i < $nazwyc; $i++) {
  7. $pathinfo = pathinfo($Katalog.'/'.$temat.'.php');
  8.  
  9. '<a href="'.$Katalog.'"><font color="#c4c4c4" size="5">'.$pathinfo['filename'].'</font></a><br /><hr size="1" color="gray">';
  10. }
  11. ?>


Pozdrawiam smile.gif
sowiq
Według Twojego kodu, po wpisaniu "Pies" wyszukujesz plików, które pasują do "sc/j.polski/Pies.php". Zrób tak, żeby wyszukiwało "sc/j.polski/*Pies*.php"

PS. Filtruj dane przychodzące w $_POST, zamiast używać ich od razu.
AuronDiel
dojść ciężkie zadanie... no spróbuje smile.gif
sowiq
Ciężkim zadaniem jest zamienić to:
Kod
'sc/j.polski/' . "$temat" . '.php';

Na to? (usunąłem również niepotrzebne cudzysłowy)
Kod
'sc/j.polski/*' . $temat . '*.php';
AuronDiel
  1. <?php
  2. $temat = $_POST['temat'];
  3. $Katalog = 'sc/j.polski/*' . $temat . '*.php';
  4. $nazwy = glob("$Katalog");
  5. $nazwyc = count($nazwy);
  6. for ($i = 0; $i < $nazwyc; $i++) {
  7. $pathinfo = pathinfo($Katalog.'/*' . $temat . '*.php');
  8.  
  9. '<a href="'.$Katalog.'"><font color="#c4c4c4" size="5">'.$pathinfo['filename'].'</font></a><br /><hr size="1" color="gray">';
  10. }
  11.  
  12.  
  13.  
  14. ?>


Zamiast wypisać ,,Pies.php", ,,Pies i Kot.php", ,,PiesiKot.php"
wypisuje 3 razy *Pies* + a href nie działa ponieważ nie ma takiego pliku jak ,,*Pies*.php".
sowiq
@AuronDiel, przeanalizuj co robi Twój program. Po pierwsze (4. linijka) szuka plików i zapisuje ich listę do tablicy w zmiennej $nazwy. Dalej (linia 5.) liczysz ile masz plików. Ale w pętli wyświetlasz za każdym razem to samo. Powinieneś iterować po tablicy $nazwy i używać/wyświetlać poszczególne jej elementy.

  1. foreach($nazwy as $file){
  2. echo $file;
  3. }
AuronDiel
  1. <?php
  2. $temat = $_POST['temat'];
  3. $Katalog = 'sc/j.polski/' . "$temat" . '.php';
  4. $nazwy = glob("$Katalog");
  5. $nazwyc = count($nazwy);
  6. foreach($nazwy as $file){
  7.  
  8. $pathinfo = pathinfo($Katalog.'/'.$temat.'.php');
  9. echo $file;
  10.  
  11. }
  12. ?>


Poprawiłem i dalej nic. sad.gif
sowiq
Zgubiłeś gdzieś po drodze gwiazdki, które dodałeś wcześniej.
AuronDiel
  1. <?php
  2. $temat = $_POST['temat'];
  3. $Katalog = 'sc/j.polski/*' . $temat . '*.php';
  4. $nazwy = glob("$Katalog");
  5. $nazwyc = count($nazwy);
  6. foreach($nazwy as $file){
  7. $pathinfo = pathinfo($Katalog.'/*' . $temat . '*.php');
  8. echo '<a href="'.$file.'"><font color="#c4c4c4" size="5">'.$pathinfo['filename'].'</font></a><br /><hr size="1" color="gray">';
  9.  
  10. }
  11.  
  12.  
  13.  
  14. ?>

Odnośniki działają, do każdego pliku. Niestety dalej mi wszystkie wypisuje je pod nazwą ,,*Pies*". sad.gif
abort
Bo wpisałeś "*Pies*" w okienko do wyszukania i w pętli ciągle się do tego odwołujesz. Przeanalizuj na spokojnie.
sowiq
@AuronDiel, ale co tak się uparłeś na to pathinfo? Sprawiasz wrażenie, jakbyś sklejał te linijki kodu na ślepo...

  1. $temat = $_POST['temat'];
  2.  
  3. // koniecznie przefiltrowanie zmiennej $temat w tym miejscu!
  4.  
  5. $path = 'sc/j.polski/*' . $temat . '*.php';
  6. $nazwy = glob($path);
  7.  
  8. foreach($nazwy as $file){
  9. echo $file;
  10. }


To powinno zadziałać, a resztę dorobisz sobie sam.
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.