Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Jak usunąć elementy z listy?
xajart
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Witam. 

Chciałem zrobić skrypt który będzie z FTP usuwał pliki. W tym celu mam baze danych z nazwami plików (które są użytkowane, czyli użyte gdzieś w treści strony) oraz pobieram drugą listę na podstawie zawartości foldera (folderów) na serwerze. 

Teraz chciałbym z tablicy FTP usunąc elementy które nie występuja na tablicy z BD (oczywiście wcześniej te wartości zostały pobrane do zmiennych tablicowych).


Bo usuwanie elementów które występują w BD jest proste, ale jak skonstruować skrypt by usuwało elementy które nie występują, myślałem o funkcji rekurencyjnej, ale jak tych plików będzie kilkaset czy kilka tysięcy,to nawet nie ma co o tym mówić. 

Może znacie jakieś rozwiazania tego, lub możecie coś zasugerować, bo puki co nie wiem z której strony to ugryźć, a chciałbym aby ten skrypt działał optymalnie. 

Wiem że w PHP istnieje funkcja za pomocą której można wyszukiwać elementy w tablicy (ale nie wiem czy można je wyszukiwać na podstawie tablicy zmiennych). 


Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Wiem że w PHP istnieje funkcja za pomocą której można wyszukiwać elementy w tablicy (ale nie wiem czy można je wyszukiwać na podstawie tablicy zmiennych).

Najlepiej byłoby co plik wykonywać zapytanie o konkretny wpis, ale byłoby to bez sensu.

W takim razie - pobierasz do tablicy wszystkie ścieżki z bazy (powinno pociągnąć, wszak chodzi o same nazwy/ścieżki smile.gif), potem iterujesz po plikach i przy pomocy in_array sprawdzasz, czy jest plik w bazie. false - kasujesz.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
xajart
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Przepraszam że odświeżam temat ale dalej sobie z tym nie poradziłem.

Załużmy że mamy dwie zmienne tablicowe, jedna zawiera listę plików na serwerze, druga zawiera listę plików w bazie danych.

ListaBD | ListaFTP
aaa.jpg | bbb.jpg
ccc.jpg | ddd.jpg
ggg.jpg | aaa.jpg
hhh.jpg | ccc.jpg

nie istotne jest to jakie mają nazwy czy formaty (podałem tylko dla przykładu).

I teraz chce porównać obydwie tablice i uzyskać trzecią wynikową zawierajacą elementy z ListaFTP, bez tych które występują na ListaBD.

Nowa Lista
bbb.jpg
ddd.jpg

Majac taką listę  wówczas można zrobić skrypcik który będzie te pliki usuwał.

Może jednak lepiej było by to zrobić na funkcji rekurencyjnej (wiem że przy dużej ilości tych danych będzie przymulać, ale ten skrypt będzie się najwyżej uruchamiać raz na jakiś czas by powywalać śmieci).

Czy może mi ktoś polecić jakieś przykłady takiej funkcji rekurencyjnej, bo siedze nad tym już drugi dzień i jakoś mi to opornie idzie.

Wiem że pewnie musi to jakoś tak działać że, istnieją dwie pętle i warunek po nich który sprawdza najpierw porownujac element pierwszy ze wszystkimi elementami pętli drugiej, jeżeli wystąpi to wywołać funkcję od nowa i przeprowadzić operację ponownie ale bez tego elementu, gorzej bo w praktyce mi to nie wychodzi tak jak bym chciał sad.gif




Ten post edytował xajart 6.09.2009, 16:42:41
Go to the top of the page
+Quote Post
franki01
post
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


  1. $nowaLista = array_diff($listaFTP, $listaBD);
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 Aktualny czas: 22.08.2025 - 05:30