[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с директорией
Renden
Доброго времени суток. Эту задачку писал уже на другом форуме, но он либо мертв, либо там не знают как сделать, думаю может здесь помогут.
Есть директория с файлами, есть база данных с именами файлов.
Задача сравнивать директорию по названиям файлов с базой данных, тех названий что нет в базе, но они есть в директории вывести на экран.
т.е пример:
-dir- -sql-
file 1 file2
file 2 file4
file 3 file5
file 4
file 5
После выполнения скрипта дожно выдать имена:
file1
file3
Написал код, но получилось что выводит только те названия которые есть в базе и в директории (получилось по тому что глупо было делать вывод из базы, она же не знает тех которых нет), не знаю как реализовать наоборот.
Вот код:

<?php
$br = "<br>";
include 'config.php'; //грузим конфиг
mysql_connect($dbhost, $dbuser, $dbpassword) OR DIE("Err");
mysql_select_db($dbname) or die(mysql_error());

$dir = opendir ("/media/sdc1/kino/"); //открываем директорию
while (false !== ($file = readdir($dir))) //читаем
{
if (( $file != ".") && ($file != "..")) //удаляем переходы на каталоги
{
$file = preg_replace ( "/\.mkv/", "", $file ); //удаляем расширение фалов
$nfile = iconv("UTF-8", "cp1251", $file); //кодировка
$data = mysql_query("SELECT * FROM kino WHERE name = '$nfile'"); //запрос в базу сдесь и понятно мою ошибку
while($all = mysql_fetch_assoc($data)) {
echo iconv("cp1251", "UTF-8", $all["name"]); //перекодируем обратно и выводим
echo $br;
}
}
}

closedir ($dir);
?>

Потом подумал что можно файлы из директории загнать в массив, и вывод из базы загнать в массив, а потом сравнить эти массивы с помощью функции array_diff(); , но к сожалению не получается..
Подскажите как можно реализовать, куда копать?



Спустя 1 час, 28 минут, 47 секунд (17.08.2010 - 13:46) linker написал(а):
Не мудрствуя лукаво
$data = mysql_query("SELECT * FROM kino WHERE name = '$nfile'");
if (mysql_num_rows($data) > 0) continue;
echo iconv("cp1251", "UTF-8", $all["name"]); //перекодируем обратно и выводим
echo $br;

Спустя 2 минуты, 47 секунд (17.08.2010 - 13:49) Nord написал(а):
Ну, дак, сделайте обратное условие:


if (!mysql_fetch_assoc($data)) {
echo $file;
echo $br;
}


Правка:
P.S. Ну, или как выше

Спустя 47 минут, 55 секунд (17.08.2010 - 14:37) Renden написал(а):
linker
Nord
Все банально просто когда знаешь, огромное вам спасибо!!, я долго мучался..



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.