16. januar 2003 - 18:09Der er
23 kommentarer og 1 løsning
fil-flushing
Jeg har en database med nogle fil-navne i. Alle filerne ligger i den samme mappe. Nu er det sådan, at alle de filer som IKKE er i databasen skal slettes ved klik på en knap eller et link.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
jeg kan desværre ikke finde det spm... hvis du gidder lede alle spm. som jeg har deltaget igennem, så kan du finde dig svaret...
det spm gik på at lave en liste over alle filer i en mappe, som også var i databasen, det er ca. det samme du skal, bortset fra at dine ikke skal være i databasen (sætte et ! det rigtige sted), og slette filerne istedet for at lave en liste over dem...
så hvis du kan finde det spm, så er det problem løst...
Først skal du have to arrays. $arrayDB og $arrayFile Det ene med database-værdierne. Det andet med de egentlige filer. Hvis du ikke kender til fil-håndtering i php, så gør sådan her: (snip fra php-manualen samt lidt modifficering) ------------------- if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $arrayFile[]=$file; } } closedir($handle); } -------------------
Nu har du de to arrays. Nu skal vi bare finde forskellen. Det har vi den smare funktion, array_diff() til at gøre for os.
$arrayDims=array_diff($arrayFile,$arrayDB);
Nu har du $arrayDims, og den skal du bare traversere og slette hver fil i den (unlink($filnavn))
Og som dea_pg siger, hvis du kører php 4.0.4 så skift lige array_diff linjen ud med hans stykke kode.
NB! jeg har drukket flere øl og mange glas vin, og klokken er mange - så læs lige koden grundigt igennem før du eksekverer den. (Man kan aldrig være for forsigtig med sletning af filer)
Desuden er jeg ikke sikker på om $val ender med at indeholde kun filnavnet, eller sti+filnavn.. Så det kan være du skal bruge unlink("/pics/".$val); i stedet for unlink($val);
Fik det aldrig til at virke, men fik alligevel aldrig rigtig brug for det...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.