|
|
|
| вот скрипт:
<?php
require_once 'MP3/Id.php';
include('../../inc/config.php');
set_time_limit(0);
function read_dir($dir)
{
if ($path = opendir($dir)) //открываем папку
{
// echo "<table width=100% border=1 align=center>";
while ($file_name = readdir($path)) //смотрим содержимое папки
{
//нам не нужны папки "." и ".."
if (($file_name !== '.') && ($file_name !==".."))
{
//если "файл" - папка, то
if (is_dir($dir."/".$file_name))
{
read_dir ($dir."/".$file_name);
// echo "</table></td></tr>";
}
//а если не папка, то просто выводим его имя
else { echo "$dir/[$file_name]<br>";
// Создаем объект, читаем файл
$id3 = &new MP3_Id();
$result = $id3->read($dir.'/'.$file_name);
if (PEAR::isError($result)) {
die($result->getMessage() );
}
// Ошибкаr "Tag not found" игнорируется
if (PEAR::isError($result) && $result->getCode() !== PEAR_MP3_ID_TNF) {
die($result->getMessage() );
}
$result = $id3->study();
if (PEAR::isError($result)) {
die($result->getMessage() );
}
$artist=$id3->getTag('artists');
$album=$id3->getTag('album');
$name=$id3->getTag('name');
$year=$id3->getTag('year');
$genre=$id3->getTag('genre');
$mode=$id3->getTag('mode');
$filesize=$id3->getTag('filesize');
//
$artist = str_replace("'","'",$artist);
$album = str_replace("'","'",$album);
$name = str_replace("'","'",$name);
$file_name = str_replace("'","'",$file_name);
$genre = str_replace("'","'",$genre);
print $artist.'<br>';
//
//добавляем пользователя в базу
$query="SELECT * FROM media_artists WHERE name='$artist'";
$ath = mysql_query($query);
$auth = mysql_fetch_array($ath);
if(@$auth)
{
$nameartist=$auth[id];
}else{
$query="INSERT INTO media_artists (id, name) VALUES(NULL, '$artist' )";
if(!mysql_query($query)) echo("Ошибка при добавлении нового исполнителя".mysql_error());
$nameartist = mysql_insert_id();
}
$arr=explode("../../", $dir);
$dir1=$arr[1];
//данные в базу
$query_author = "INSERT INTO media_mp3 (id,
singer,
album,
song,
year,
genre,
mode,
size,
path,
filename,
date,
category) VALUES(NULL,
'$nameartist',
'$album',
'$name',
'$year',
'$genre',
'$mode',
'$filesize',
'$dir1',
'$file_name',
NOW(),
'$category') ";
if(!mysql_query($query_author)) echo("Ошибка при добавлении нового исполнителя".mysql_error());
//
}
}
}
// echo "</table>";
}
}
read_dir('../../music');
?>
|
после 127 загрузки в базу у меня выдает ошибку:
Ошибка при добавлении нового исполнителяDuplicate entry '127' for key 1../../music/Зарубежная музыка/A/Anouk/[Anouk - You Being You.mp3]
Что она означает и как ее справить? | |
|
|
|
|
|
|
|
для: FaStY
(09.03.2006 в 18:23)
| | Это означает что повторяется id, а так как у этого поля стоит autoincrement, то возникает ошибка.
Хм... Попробуйте переписать запрос к базе на этот
INSERT INTO media_mp3 (singer,
album,
song,
year,
genre,
mode,
size,
path,
filename,
date,
category) VALUES('$nameartist',
'$album',
'$name',
'$year',
'$genre',
'$mode',
'$filesize',
'$dir1',
'$file_name',
NOW(),
'$category')
|
| |
|
|
|
|
|
|
|
для: Artemy
(09.03.2006 в 18:31)
| | И чем Вам первичный ключ помешал... | |
|
|
|
|
|
|
|
для: Trianon
(09.03.2006 в 18:35)
| | Если у поля id стоит autoincrement, то при добавление, записи в таблицу, это поле вообще можно не учитывать!!! | |
|
|
|
|
|
|
|
для: Artemy
(09.03.2006 в 18:42)
| | тоже верно. Прошу прощения, не подумал. | |
|
|
|
|
|
|
|
для: Artemy
(09.03.2006 в 18:31)
| | так у меня не здесь ошибка выдате, а ошибка в добавлении артиста. | |
|
|
|
|
|
|
|
для: FaStY
(09.03.2006 в 18:23)
| | а какова структура таблицы?
Поле id является auto_increment? | |
|
|
|
|
|
|
|
для: Trianon
(09.03.2006 в 18:32)
| | да, является
таблица media_artists включает 2 поля: Id и name
а таблица Media_mp3 все поля, которые в запросе(INSERT ...) | |
|
|
|
|
|
|
|
для: FaStY
(09.03.2006 в 19:21)
| | Выберите тип для id с большим объёмом памяти, т.е. вместо INT(1), BYTE выберите что-нибудь более объёмное, например, INT или BIGINT. | |
|
|
|
|
|
|
|
для: cheops
(09.03.2006 в 19:47)
| | поставил, но ничего :(
вот база:
CREATE TABLE 'media_artists' (
'id' bigint(50) NOT NULL auto_increment,
'name' tinytext NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=90 ;
|
| |
|
|
|
|
|
|
|
для: FaStY
(09.03.2006 в 20:31)
| | Выдаёт такую же ошибку? Почему изменена таблица media_artists, в неё же ничего не вставляется, следует изменить media_mp3. | |
|
|
|
|
|
|
|
для: cheops
(09.03.2006 в 21:22)
| | ну почему? как раз-таки в базу media_artists записываются имена авторов. Здесь и выкидывает ошибку | |
|
|
|
|
|
|
|
для: FaStY
(10.03.2006 в 20:13)
| | А я бы не стал полагаться на то, что MySQL умеет работать с пятидесятизначными числами, и заменил бы BIGINT(50) на INT(9) . Сомневаюсь, что Вы наберете в ближайшее время миллиард артистов...
Между прочим... почему AUTO_INCREMENT = 90? | |
|
|
|
|
|
|
|
для: Trianon
(10.03.2006 в 20:50)
| | просто чуть выше, мне посоветовали сделать int или bigint, но ничего не вышло :( | |
|
|
|