Проблема с удалением из бд

rispa

Новичок
Проблема с удалением из бд

Необходимо в указанной директории прочитать и вывести файлы с расширением mp3 и flac. А также вывести информацию по каждому файлу (время модификации, название, исполнитель, альбом, год и т.д.). В дальнейшем планируется добавить кеширование, чтобы не перечитывать теги по каждому запросу каждого пользователя, реализовать кеш прочитанных данных.

Сейчас у меня следующая проблема: актульность содержимого таблицы бд. Я из базы беру данные, содержащие имена файлов. Затем, начинаю сравнивать с файлами директории. В случае добавления файла в директорию - добавляю данные этого файла в базу, это у меня получилось. Но вот с удалением - беда. Как организовать удаление из базы, если файл удаляется из директории, подскажите, пожалуйста.

PHP:
<?php
require_once 'MP3/Id.php'; 
include_once 'mysql_connect.php'; 

mysql_query('create table IF NOT EXISTS musi(url text,file text, date text, artists text, album text, year int, name text)')
or die ("MySQL error: ".mysql_error()); 

$url = "c:/"; 

//массив из базы
$modified_files = mysql_query('SELECT file FROM musi');
for ($k=array(); $row = mysql_fetch_row($modified_files) ; $k[]=$row);

//листинг директории
function CheckExt($filename, $ext) {
$passed = FALSE;
$testExt = "\.".$ext."$";
if (eregi($testExt, $filename)) {
$passed = TRUE;
}
return $passed;
}
$exts = array("mp3","flac");
$dir = opendir("$url");
$files = readdir($dir);

while (false !== ($files = readdir($dir))) {
foreach ($exts as $value) {
if (CheckExt($files, $value)) {
echo "<a href=\"$files\">$files</a>\n<br>";

$puti = $url.'/'.$files; 

$id3 = &new MP3_Id(); 
$result = $id3->read("$puti"); 

$art = $id3->getTag('artists');
$alb = $id3->getTag('album');
$year = $id3->getTag('year');
$name = $id3->getTag('name');
$modifed = date ("F d Y H:i:s.", filemtime($puti));
echo "в последний раз файл $files был изменен: " . $modifed . "\n<br>";	
echo 'Название: ' . $name . "\n<br>"; 
echo 'Исполнитель: ' . $art . "\n<br>"; 
echo 'Альбом: ' . $alb . "\n<br>"; 
echo 'Год: ' . $year . "\n<br>"; 
echo 'Комментарий: ' . $id3->getTag('comment') . "\n<br>"; 
echo 'Жанр: ' . $id3->getTag('genre') . "\n<br>"; 
echo 'Жанр (число): ' . $id3->getTag('genreno') . "\n<br>"; 
echo 'Трэк: ' . $id3->getTag('track') . "\n<br>"; 

for ($i=0; $i <= count($k); $i++){
	if ($k[$i][0] == $files){
	$flag=true;
	break;
	}
	else 
	$flag=false;

if ($flag==false) {
$query = "insert into musi(url,file, date, artists,album,year,name) values('$url', '$files', '$modifed', '$art','$alb', '$year', '$name')";
mysql_query ( $query );
}
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Refresh</a>\n";
closedir($dir);
?>
 

Фанат

oncle terrible
Команда форума
а в чем конкретно проблема-то? запрос не можешь составить?
 

Фанат

oncle terrible
Команда форума
а че там понимать-то?
в чем проблема удалить запись из таблицы? ты никогда удаление из бд не делал?
 

rispa

Новичок
не, удаление я понимаю, как сделать - deletе from. не понимаю, как сравнить полученный массив из базы с имеющимися файлами так, чтоб, если запись в базе никак не соотносится с реально существующими файлами, она просто удалялась. С добавлением понятно как, в цикле посредством "==". С удалением - не очень(
 

Фанат

oncle terrible
Команда форума
странно новые ты сравниваешь с базой по одному, а удалять хочешь все разом.
почему отсутствующие не сделать так же, как присутствующие?
 

rispa

Новичок
*****, мне без разницы, как). Поверь, и так, и так не получилось). Ты можешь привести фрагмент или расписать подробней?
 

Фанат

oncle terrible
Команда форума
нет

-~{}~ 24.06.09 21:19:

или ты объяснишь, почему сравнить один массив со вторым у тебя получилось, а второй с первым - нет, или тема будет закрыта.
больно похоже на троллизм, "я скачал файл из интернета, как мне закачать его обратно?"
 

cDLEON

Онанист РНРСlub
Скрипт сто процентов не его :)
PHP:
$id3 = &new MP3_Id();
Так рекомендовалось инициализировать объекты только в 4-ке.
 

rispa

Новичок
Автор оригинала: cDLEON
Скрипт сто процентов не его :)
Так рекомендовалось инициализировать объекты только в 4-ке.
код по id3-тэгам за небольшим изменением взяла отсюда http://www.softtime.ru/article/index.php?id_article=64, умник. Во-первых, я не знаток формата mp3, а во-вторых, перспектива изобретения велосипеда меня не привлекает.

А вообще, вопрос снят. Многие новички не всегда умеют четко сформулировать вопрос - на то они и новички. И форум - это крайность, когда все остальное не помогло. Для меня остается загадкой, что в таких местах делают люди, которые могут лишь пренебрежительно указать на несостоятельность спрашивающего).

В моем случае спасут хеши по директориям. А не удаляются записи таким же способом, как и создаются в таблице потому, что поддержание актуальности базы - штука сложная, был бы веб-интерфейс, можно было бы проще, но у меня его нет, и предполагается, что юзер стирает руками файл из файловой системы.
 
Сверху