20. april 2002 - 23:53Der er
12 kommentarer og 3 løsninger
Fil-tjek-script
Jeg skal have lavet et script som tjekker om de filer som er gemt i en mySQL database også ligger i mapperne. Og hvis der ligger filer som ikke er gemt i databasen skal den skrive navnet på dem... (Altså 2 funktioner) Mine filer bliver gemt under (via upload) /download/ og kategoriseret i mapper som /download/dk/ osv.. Der er en tabel i mysql databasen som hedder 'fil_navn' som den skal sammenligne med mapperne... Mappernes kategori hedder 'kat' i mysql databasen...
Håber det ka lade sig gøre, der skulle i hvert fald være nok point :]
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
$res = mysql_query("SELECT * FROM fil_navn order by kat ASC"); while ($row = mysql_fetch_array($res)){ if(!exist("./$row[kat]")){ print "$row[kat] findes <br>\n";} else { print "$row[kat] findes <u>ikke</u><br>\n";} }
den er ikke tjekket for fejl men det er vel en metode?
$res = mysql_query("SELECT * FROM fil_navn order by kat ASC"); while ($row = mysql_fetch_array($res)){ if(exist("./$row[kat]")){ print "$row[kat] findes <br>\n";} else { print "$row[kat] findes <u>ikke</u><br>\n";} }
Jamen tjekker den alle filer i databasen om de ligger i den mappe eller undermappe?
og hvad hvis der er en fil som ikke er i databasen? Kan du lave en funktion til det?
Synes godt om
Slettet bruger
21. april 2002 - 01:11#5
Her er et forslag til en løsning, du selv kan arbejde videre med:
<? function getFileArray($directory) { # Henter rekursivt samtlige filer i $directory
GLOBAL $fileArray;
$handle = opendir($directory); while ($file = readdir($handle)) $retVal[] = $file; closedir($handle); while (list($key, $val) = each($retVal)) { if ($val != "." && $val != "..") { if (is_dir($directory.$val)) getFileArray($directory.$val."/"); else $fileArray[] = $directory.$val; } } return $true; }
function databaseCompare($directory) { # Sammenligner indhold af $fileArray med databasen. Eksisterer en fil fra $fileArray ikke i tabellen udskrives denne.
GLOBAL $fileArray;
# Henter alle filer i et format så de er direkte sammenlignelige med det i $fileArray indeholdte $result = mysql_query("SELECT CONCAT($directory, '/', filename) AS file FROM fil_navn");
while ($array = mysql_fetch_array($result)) $databaseFileArray[] = $array['file']; if (!in_array($fileArray[$i], $databaseFileArray)) echo "Filen: ".$fileArray[$i]. " eksisterer ikke i databasen"; }
Hov, åbenlys fejl i databaseCompare funktionen, så her får du lige en ny version:
function databaseCompare($directory) { # Sammenligner indhold af $fileArray med databasen. Eksisterer en fil fra $fileArray ikke i tabellen udskrives denne.
GLOBAL $fileArray;
# Henter alle filer i et format så de er direkte sammenlignelige med det i $fileArray indeholdte $result = mysql_query("SELECT CONCAT($directory, '/', filename) AS file FROM fil_navn");
while ($array = mysql_fetch_array($result)) $databaseFileArray[] = $array['file'];
for ($i = 0; $i < count($fileArray); $i++) { if (!in_array($fileArray[$i], $databaseFileArray)) echo "Filen: ".$fileArray[$i]. " eksisterer ikke i databasen"; } }
Jeg er ikke mester i php, vil du ik hjælpe lidt? URL'en skal vel defineres på en måde? og filnavnet skal jo bare trækkes ud af databasen som 'fil_navn'...
Synes godt om
Slettet bruger
21. april 2002 - 18:44#8
Hjælpe? Det er forhåbentligt, det jeg gør.
URL'en? Du kalder begge funktioner med det bibliotek du vil løbe igennem - her er det "download/"
Filnavnet bliver trukket ud af databasen som en samlet streng bestående af kataloget for filen + "/" + fil navnet. Således kan det sammenlignes med det, vi henter, når vi løber filerne igennem fra getFileArray().
Er dette så koden jeg skal prøve ?? ************* -- ************ <? function getFileArray($directory) { # Henter rekursivt samtlige filer i $directory
GLOBAL $fileArray;
$handle = opendir($directory); while ($file = readdir($handle)) $retVal[] = $file; closedir($handle); while (list($key, $val) = each($retVal)) { if ($val != "." && $val != "..") { if (is_dir($directory.$val)) getFileArray($directory.$val."/"); else $fileArray[] = $directory.$val; } } return $true; }
function databaseCompare($directory) { # Sammenligner indhold af $fileArray med databasen. Eksisterer en fil fra $fileArray ikke i tabellen udskrives denne.
GLOBAL $fileArray;
# Henter alle filer i et format så de er direkte sammenlignelige med det i $fileArray indeholdte $result = mysql_query("SELECT CONCAT($directory, '/', filename) AS file FROM fil_navn");
while ($array = mysql_fetch_array($result)) $databaseFileArray[] = $array['file'];
for ($i = 0; $i < count($fileArray); $i++) { if (!in_array($fileArray[$i], $databaseFileArray)) echo "Filen: ".$fileArray[$i]. " eksisterer ikke i databasen"; } } getFileArray("download/"); databaseCompare("download/"); ?>
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.