Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [wolontariat]wczytanie nazw plików i zapisanie do bazy
projektyKJR
post 26.08.2011, 08:08:52
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.08.2011
Skąd: Warszawa

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


Witam

Potrzebuje skrypt który z określonego folderu wczytuje nazwy plików, zapisuje je do bazy mysql, jeżeli pokaze się nowy plik wykonuje kolejny skrypt.

Probowałem coś takiego zrobić , wczytywał mi nazwy lecz niestety nie działał prawidlowo jeżeli pojawił się npowy plik.

Ma ktoś może jakieś gotowe rozwiązanie ?
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
elektrrrus
post 26.08.2011, 08:30:30
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


Musisz odpalać skrypt cyklicznie w cronie na przykład i sprawdzać stan katalogu od poprzedniego odpalenia.
Go to the top of the page
+Quote Post
mortus
post 26.08.2011, 08:54:42
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(elektrrrus @ 26.08.2011, 09:30:30 ) *
Musisz odpalać skrypt cyklicznie w cronie na przykład i sprawdzać stan katalogu od poprzedniego odpalenia.

A co to ma do rzeczy? Jeśli skrypt po "ręcznym" uruchomieniu nie działał prawidłowo, to prze CRON-a też nie będzie.
  1. $folder = 'ścieżka/do/katalogu';
  2. foreach(glob($folder.'/*') as $filename) {
  3. if(is_file($filename)) {
  4. $filesInFolder[] = pathinfo($filename, PATHINFO_BASENAME);
  5. }
  6. }
  7. $sql = "SELECT `f`.`filename` FROM `files` `f`";
  8. $results = mysql_query($sql) or die(mysql_error());
  9. if(mysql_num_rows($result) != 0) {
  10. while($row = mysql_fetch_assoc($results)) {
  11. $filesInDb[] = $row['filename'];
  12. }
  13. }
  14. $notInDb = array_diff($filesInFolder, $filesInDb);
  15. if(count($notInDb) > 0) {
  16. $sql = 'INSERT INTO `files` (`filename`) VALUES ';
  17. foreach($notInDb as $filename) {
  18. $sql .= '('.$filename.'),'
  19. }
  20. $sql = substr($sql, 0, -1);
  21. $results = mysql_query($sql);
  22. }

Do tego trzeba podpiąć połączenie z bazą danych. Skrypt zapisuje tylko nazwy plików w katalogu pod zmienną $folder, aby zapisywał również ścieżkę, trzeba go nieco zmodyfikować (w sumie to zastąpić linię 4 poniższą):
  1. $filesInFolder[] = $filename;

Oczywiście nie wiem, jak wygląda u Ciebie tabela w bazie danych, w przykładzie ma ona dwa pola (id oraz filename) i nazywa się 'files'. Skrypt nie sprawdza, czy pliki zostały usunięte, ale czy zostały dodane.
Pisane z "palca", więc nie wiem, czy będzie działać na 100%.
Go to the top of the page
+Quote Post
projektyKJR
post 26.08.2011, 18:25:56
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.08.2011
Skąd: Warszawa

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


Wielkie dzięki za pomoc dzisiaj sprawdzę czy działa, dokładnie oto mi chodziło żeby sprawdzał czy są nowe pliki, poźniej to będzie uruchamiane przez crona.

pozdrawiam
Konrad
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: 25.06.2025 - 09:56