Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Szukajka plików
Forum PHP.pl > Forum > Przedszkole
dk1342
Witam, mam pytanie czy jest możliwość zrobienia szukajki plików w danym katalogu (potrzebne do uploadu)
bez bazy mysql i bez plików tekstowych ?

Jak tak to czekam na propozycje

a jak nie to jak to zrobić na plikach tekstowych ?
nospor
wczytujesz po kolei wszystkie pliki z katalogu i sprawdzasz, ktore pasuja do twego wzorca.

Mozesz tez uzyc glob(), ktore wspomaga podanie wzorca.
wookieb
Można np za pomoca funkcji http://pl.php.net/glob
albo zwyklymi funkcjami z rodziny http://pl.php.net/manual/pl/ref.dir.php
dk1342
ok funkcje wyświetlania wszystkich plików z folderu już wcześniej miałem napisaną

nie znam tej funkcji glob musze zobaczyć w manualu ale tam niestety wszystko po angielsku ale może coś zrozumie

ee nie zrozumiałem dalibyście jakieś nakierowanie do tej funkcji ?

nie prosze o gotowca chyba że ktoś będzie taki miły, proszę o coś jak wyjaśnienie tej funkcji
nospor
a czego tu nie rozumiec?
  1. <?php
  2. foreach (glob("*szukanafraza*") as $filename) {
  3.    echo "$filename size " . filesize($filename) . "\n";
  4. }
  5. ?>
koreja
Posłużę się przykładem z manuala:
  1. <?php
  2. foreach (glob("*.txt") as $filename) {
  3.    echo "$filename size " . filesize($filename) . "\n";
  4. }
  5. ?>


Jak widzisz, funkcja glob wyszukuje plików o podanym rozszerzeniu, a następnie zapisuje nazwę do zmiennej
  1. <?php
  2. $filename
  3. ?>
potem
  1. <?php
  2. echo $filename;
  3. ?>
wyświetla to na ekranie. Wystarczy, że przerobisz ten skrypt delikatnie i uzyskasz to, czego szukasz smile.gif
dk1342
dzięki działa udało mi się



tylko mam problem gdy szukajka nie znajdzie czyli gdy plik nie istnieje to wywala warninga

Warning: Invalid argument supplied for foreach() in /home/accounts_d/dk1342/public_html/demo/dupa.php on line 5

więc zrobiłem takie coś:
Kod
if (file_exists($filename)
{
$szukaj = $_POST['szukaj'];
foreach (glob("files/*".$szukaj."*") as $filename)
{
echo substr($filename, 6)."<br />";
}
} else {
echo "Nie znaleziono";
}


teraz nie ma warninga ale caly czas pisze

"Nie znaleziono"

choć taki plik istnieje
erix
A wiesz, że kod wykonuje się od góry do dołu, a nie na odwrót?
bartg
  1. <?php
  2. $szukaj = $_POST['szukaj'];
  3. $aFiles = glob("files/*".$szukaj."*");
  4. foreach ((array)$aFiles as $filename)
  5. {
  6. echo substr($filename, 6)."<br />";
  7. }
  8. if(count($aFiles)==0)
  9. {
  10. echo "Nie znaleziono";
  11. }
  12. ?>
dk1342
erix tak wiem, ale jakoś nie wiem jak to zrobić

bartg

dzięki ładnie działa tylko jak plik nie istnieje to jest biała strona zamiast pisać "nie znaleziono" a gdy plik istnieje ładnie wyświetla



więc dlaczego nie pokazuje tego komunikatu ? wg. jest to zwykły if i nie widze w nim błędu więc nie wiem
nospor
  1. <?php
  2. $szukaj = $_POST['szukaj'];
  3. $aFiles = glob("files/*".$szukaj."*");
  4. if ($aFiles){
  5. foreach ($aFiles as $filename)
  6. {
  7. echo substr($filename, 6)."<br />";
  8. }
  9. }
  10. else
  11. {
  12. echo "Nie znaleziono";
  13. }
  14. ?>
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.