Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Listowanie folderów i dodawanie wyniku do bazy
Mis323
post 1.09.2019, 08:18:11
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Cześć,
Ostatnio pytałem o ffmpeg i rozwiązałem problem z waszą pomocą.
Dziś chciałbym zrobić listowanie katalogu, w którym jest skrót filmu kilka sekund. Nazwa plików to id z bazy danych, mam listowanie ale nie wiem jak pobrać ścieżkę dostępu gdzie znajduje się film i później zrobić update bazy danych.

  1.  
  2. $dir = 'filmy';
  3. $dh = opendir($dir);
  4. while (false !== ($fileName = readdir($dh))) {
  5. $ext = substr($fileName, strrpos($fileName, '.') + 1);
  6. if(in_array($ext, array("mp4")))
  7. $files1= $fileName;
  8.  
  9.  
  10. echo" $files1</br>";
  11.  



Mam jeszcze pytanie, na stronie mam upload plików i tutaj pojawia się pytanie ponieważ wrzucam cały film. Później ffmpeg tworzy z niego skrót
I wrzuca do folderu, funkcja musi dzialac po dodaniu filmu poniewaz zeby ffmpeg stworzyl film musi byc id z bazy danych jak inaczej to rozwiązać może ktoś ma inny pomysł?
Go to the top of the page
+Quote Post
dublinka
post 1.09.2019, 09:12:49
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Mis323 @ 1.09.2019, 08:18:11 ) *
Cześć,
Ostatnio pytałem o ffmpeg i rozwiązałem problem z waszą pomocą.
Dziś chciałbym zrobić listowanie katalogu, w którym jest skrót filmu kilka sekund. Nazwa plików to id z bazy danych, mam listowanie ale nie wiem jak pobrać ścieżkę dostępu gdzie znajduje się film i później zrobić update bazy danych.

  1.  
  2. $dir = 'filmy';
  3. $dh = opendir($dir);
  4. while (false !== ($fileName = readdir($dh))) {
  5. $ext = substr($fileName, strrpos($fileName, '.') + 1);
  6. if(in_array($ext, array("mp4")))
  7. $files1= $fileName;
  8.  
  9.  
  10. echo" $files1</br>";
  11.  




Mam jeszcze pytanie, na stronie mam upload plików i tutaj pojawia się pytanie ponieważ wrzucam cały film. Później ffmpeg tworzy z niego skrót
I wrzuca do folderu, funkcja musi dzialac po dodaniu filmu poniewaz zeby ffmpeg stworzyl film musi byc id z bazy danych jak inaczej to rozwiązać może ktoś ma inny pomysł?



Masz katalog to wiesz gdzie sa pliki przeciez.

  1. <?php
  2.  
  3. $ca = dir('filmy');
  4. $ro = '.mp4';
  5. $tab = array();
  6. while((false!==($pl=$ca->read())))
  7. {
  8. if($pl!="."&&$pl!="..")
  9. {
  10. if(substr($pl,-strlen($ro))==$ro)
  11. {
  12. $tab[] = $pl;
  13. };
  14. };
  15. };
  16.  
  17. while(list(,$val) = each($tab))
  18. {
  19. echo 'adres/katalog/' . $val . '<br>';
  20. }
  21. ?>


Ten post edytował dublinka 1.09.2019, 09:33:39


--------------------
Go to the top of the page
+Quote Post
viking
post 1.09.2019, 12:42:03
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


  1. foreach (glob("filmy/*.mp4") as $filename) {
  2. echo $filename;
  3. }


Równocześnie z wgrywaniem pliku stwórz odpowiedni wpis w bazie, dodaj jakąs flagę która opisuje stan przetwarzania pliku. W przypadku przetwarzania długotrwałego (jakim jest obrabianie filmu) stosuje się zazwyczaj systemy kolejek (np rabbitmq). W takim wypadku możesz mieć dane nie gotowe jeszcze dla użytkownika ale taki urok tego rozwiązania. Zazwyczaj też w systemach rozproszonych (kilka serwerów przerabiających długotrwałe zadania) nie stosuje się id tylko uuid.


--------------------
Go to the top of the page
+Quote Post
Mis323
post 8.09.2019, 11:03:35
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Dziękuję za pomoc, przepraszam że dopiero teraz ale wcześniej nie miałem czasu.

Problem w tym że nie wiem jak przypisać pętle do zmiennej
  1. $rest = substr($pl, 0, -4); // zwraca nazwe pliku bez rozszerzenia
  2.  
  3. foreach (glob("filmy/*.mp4") as $filename) {
  4. echo $filename;
  5. }
  6.  


Jeśli wpiszę zmienną po za pętla to wypisuje ostatni rekord.
Sprawdzenie czy "tag" jest pusty.
  1. SELECT * FROM baza WHERE OCTET_LENGTH(tag) == 0

i teraz potrzebował bym zrobić znów całe zapytanie w pętli. Jeśli rekord jest pusty to dodaj rekord o id = $rest AND tag = $filename tylko że nie wyświetla wszystkich rekordów tylko ostatni.
Go to the top of the page
+Quote Post
dublinka
post 8.09.2019, 12:30:43
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


patrz moj przyklad.

  1. $tab;


Jest tablicą która zawiera wszystkie nazwy plików.


Ten post edytował dublinka 8.09.2019, 13:16:17


--------------------
Go to the top of the page
+Quote Post
viking
post 8.09.2019, 13:40:10
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


  1. $files = glob("filmy/*.mp4");
  2.  
  3. array_walk($files, function (&$item) {
  4. $item = pathinfo($item, PATHINFO_FILENAME);
  5. });
  6.  
  7. var_dump($files);


Nie bazuj na sprawdzaniu rozszerzenia w ten sposób (cośtam minus przewidywana liczba znaków) bo się możesz przejechać.


--------------------
Go to the top of the page
+Quote Post
Mis323
post 8.09.2019, 15:43:25
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Cytat(dublinka @ 8.09.2019, 13:30:43 ) *
patrz moj przyklad.

  1. $tab;


Jest tablicą która zawiera wszystkie nazwy plików.


Ale nie mogę użyć tablicy do zapytania sql




Cytat(viking @ 8.09.2019, 14:40:10 ) *
  1. $files = glob("filmy/*.mp4");
  2.  
  3. array_walk($files, function (&$item) {
  4. $item = pathinfo($item, PATHINFO_FILENAME);
  5. });
  6.  
  7. var_dump($files);


Nie bazuj na sprawdzaniu rozszerzenia w ten sposób (cośtam minus przewidywana liczba znaków) bo się możesz przejechać.

Dziękuje za podpowiedz ale w tym przypadku wszystkie filmy muszą mieć rozszerzenie .mp4 dlatego wybrałem łatwiejszy sposób.
Go to the top of the page
+Quote Post
dublinka
post 8.09.2019, 15:55:01
Post #8





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Mis323 @ 8.09.2019, 15:43:25 ) *
Ale nie mogę użyć tablicy do zapytania sql



https://stackoverflow.com/questions/1005463...tabase-with-php


--------------------
Go to the top of the page
+Quote Post
Mis323
post 8.09.2019, 16:39:17
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Cytat(dublinka @ 8.09.2019, 16:55:01 ) *


Można coś jaśniej napisać jak to zrobić z tego wątku który podałeś nie rozumiem.
Go to the top of the page
+Quote Post
dublinka
post 8.09.2019, 17:51:57
Post #10





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Mis323 @ 8.09.2019, 16:39:17 ) *
Można coś jaśniej napisać jak to zrobić z tego wątku który podałeś nie rozumiem.

To jest odpowiedz na twoja odpowidz ze nie mozesz uzyc tablicy do zapytania sql.

Mało rozumiem z tego co napisales.Tylko tyle ze nie mozesz. Nie siedze w Twojej glowie i nie wiem co chcesz robic a Twoje pytanie jakiej pogmatwane i nie jasne. Ogolnie w tym linku masz odpowiedz jak dodac dane z tablicy do zapisu bo chyba o to Ci chodzi.

Ten post edytował dublinka 8.09.2019, 17:54:08


--------------------
Go to the top of the page
+Quote Post
Mis323
post 9.09.2019, 18:18:34
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Przepraszam może jeszcze raz od początku.
Dałeś przykład że moża użyć tablicy array jako zapytania dodającego rekord do bazy. Wszystko fajnie ale czy mógłbym prosić o inny przykład lub kawałek kodu, jak ma wyglądać kod? bo z tego linka
średnio rozumiem jak to zrobić.

Obecnie tak wygląda moja tablica.

  1. Array ( [0] => 1031fa769bd163249a55c53f894edadd.mp4 [1] => 38a199f634e3618042da9468256bffa1.mp4 [2] => 3ca18948d15b7f0530d5b78511885778.mp4 [3] => 4843634a4f99f3bef247c89c6ca58be9.mp4 [4] => 6d6f24a34dcdf70e3126c138a39bc064.mp4 [5] => 74cc24692dac38f0730b81df49c32980.mp4 [6] => 75735a9f3c2c84776603c389ddd1dee5.mp4 [7] => 82651b85cbff6833bc3c40bed59787a4.mp4 [8] => 865b93d1f1d2273dd9d9bc05a7426410.mp4 [9] => 91f0e89ee468989e321895caa0b78bc2.mp4 [10] => ad1ff05c60d55e3f72341d40cfcb545e.mp4 [11] => cf668c61fb4c1196a31b69f823492a00.mp4 [12] => d7b6748d54ab1c3ee0b5afb035c029a5.mp4 [13] => eccecd0522d2b978003e00c0b0120134.mp4 )
  2.  
Go to the top of the page
+Quote Post
dublinka
post 9.09.2019, 18:41:47
Post #12





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Jesli nie radzisz sobie z tym to moze to:

Zrobic to mozna przy pomocy pętli.

https://www.sitepoint.com/community/t/inser...o-database/1773

lub

https://stackoverflow.com/questions/5404317...ql-through-loop

Mam nadzieje ze teraz zrozumiesz wink.gif

Ten post edytował dublinka 9.09.2019, 18:54:52


--------------------
Go to the top of the page
+Quote Post
Mis323
post 9.09.2019, 22:54:08
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.08.2019

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


Cytat(dublinka @ 9.09.2019, 19:41:47 ) *
Jesli nie radzisz sobie z tym to moze to:

Zrobic to mozna przy pomocy pętli.

https://www.sitepoint.com/community/t/inser...o-database/1773

lub

https://stackoverflow.com/questions/5404317...ql-through-loop

Mam nadzieje ze teraz zrozumiesz wink.gif

Tak dziękuje, ale mam jeszcze pytanie jak rozdzielić teraz filmy tak żeby każdy film był osobno a nie tak jak teraz ze wszytsko dodaje się do jednego. Wiem że można skorzystać z funkcji expload ale wtedy występuję błąd array

  1. $data = array();
  2.  
  3. foreach($tab as $team)
  4. $data[] = "" . addslashes($team) . "";
  5.  
  6. $data = implode("," , $data);
  7.  
  8.  
  9.  
  10.  
  11. for($test = 0; $test <= 7; $test++)
  12. {
  13. $conn = mysqli_connect('localhost', 'root', '', 'test') or die('Error connecting to mysql');
  14. $zapytanie=mysqli_query($conn, "UPDATE `baza` SET `tag`='test/$data' WHERE id='$rest'");
  15.  
  16. mysqli_close($conn);
  17.  
  18. }
Go to the top of the page
+Quote Post
viking
post 10.09.2019, 05:13:57
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A po co to addslashes robisz? W moim przykładzie na array_walk też możesz robić od razu insert.


--------------------
Go to the top of the page
+Quote Post
dublinka
post 10.09.2019, 07:44:14
Post #15





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. <?php
  2.  
  3. $tab = array(
  4. 'jeden',
  5. 'dwa',
  6. 'trzy',
  7. 'cztery',
  8. 'pięć',
  9. 'sześć',
  10. 'siedem',
  11. 'osiem',
  12. 'dziewięć',
  13. 'dziesięć'
  14. );
  15.  
  16. $t = array();
  17. foreach($tab as $k)
  18. {
  19.  
  20. $t[] = $k . ',';
  21.  
  22. }
  23. $x = '';
  24.  
  25. for($i=0; $i<count($t); $i++)
  26. {
  27. $x .= $t[$i];
  28. }
  29. echo substr($x, 0, -1);
  30. ?>


Ten post edytował dublinka 11.09.2019, 07:43:31


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 10.09.2019, 09:16:33
Post #16





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


czy zapytaniu ma być $rest czy $test?

Ten post edytował Tomplus 10.09.2019, 14:23:30
Go to the top of the page
+Quote Post
nospor
post 10.09.2019, 15:14:16
Post #17





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




@dublinka jak rozumiem miales na mysli:

polaczenie do bazy ma byc jedno a nie w petli


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dublinka
post 10.09.2019, 15:29:29
Post #18





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(nospor @ 10.09.2019, 15:14:16 ) *
@dublinka jak rozumiem miales na mysli:

polaczenie do bazy ma byc jedno a nie w petli

Ofkoz. tym razem


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.09.2019, 15:31:14
Post #19





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




tylko po grzyba kasowac posta? Zawieral dobra rade tylko cie sie jezyk zaplatal...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dublinka
post 11.09.2019, 12:12:43
Post #20





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(nospor @ 10.09.2019, 15:31:14 ) *
tylko po grzyba kasowac posta? Zawieral dobra rade tylko cie sie jezyk zaplatal...

se tego posta skasowalem bo sie mnie pomylil przycisk smile.gif i tak juz poszlo

Cytat(Mis323 @ 9.09.2019, 22:54:08 ) *
Tak dziękuje, ale mam jeszcze pytanie jak rozdzielić teraz filmy tak żeby każdy film był osobno a nie tak jak teraz ze wszytsko dodaje się do jednego. Wiem że można skorzystać z funkcji expload ale wtedy występuję błąd array

  1. $data = array();
  2.  
  3. foreach($tab as $team)
  4. $data[] = "" . addslashes($team) . "";
  5.  
  6. $data = implode("," , $data);
  7.  
  8.  
  9.  
  10.  
  11. for($test = 0; $test <= 7; $test++)
  12. {
  13. $conn = mysqli_connect('localhost', 'root', '', 'test') or die('Error connecting to mysql');
  14. $zapytanie=mysqli_query($conn, "UPDATE `baza` SET `tag`='test/$data' WHERE id='$rest'");
  15.  
  16. mysqli_close($conn);
  17.  
  18. }


O jakie explode chodzi i gdzie.





Ten post edytował dublinka 11.09.2019, 12:19:27


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 29.03.2024 - 12:23