Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [wolontariat]wczytanie nazw plików i zapisanie do bazy
projektyKJR
post
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
 
Start new topic
Odpowiedzi
elektrrrus
post
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
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

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 19:42