Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: рекурсивное добавление в базу данных
 
 автор: FaStY   (07.03.2006 в 20:28)   письмо автору
 
 

вот возникла проблема: мне нужно просканировать папку, и занести в базу все файлы, когда я сканирую папку и смотрю файлы, то все получается, но когда я птыаюсь записать данные из этих файлов, то после просмотра одной папки, скрипт перестает работать:

<?php 
require_once 'MP3/Id.php'
set_time_limit(1);
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);
     
$filemane str_replace("'","'",$filemane);
          
$genre str_replace("'","'",$genre);
print  
$artist.'<br>';  

                               
                      } 
              } 
  
//            echo "</table>"; 
        


read_dir('D:/music/Зарубежная музыка'); 
?> 

я считываю с Mp3 idтэги
И еще: вот как идут папки:
D:/music/Зарубежная музыка/A/ABBA/abba.mp3

   
 
 автор: cheops   (08.03.2006 в 00:12)   письмо автору
 
   для: FaStY   (07.03.2006 в 20:28)
 

А куда записываете и в какой строчке?

   
 
 автор: FaStY   (08.03.2006 в 00:39)   письмо автору
 
   для: cheops   (08.03.2006 в 00:12)
 

ааа, :) да вот даже при незаписывании, а при выводе вот этого:

print  $artist.'<br>';  

все равно отображается только одна папка, т.е. после того, как он прочитает все файлы из папки, в другую папку он не может перейти :(

   
 
 автор: cheops   (08.03.2006 в 00:43)   письмо автору
 
   для: FaStY   (08.03.2006 в 00:39)
 

Всё правильно, это из-за того, что он вынесен из цикла.

   
 
 автор: FaStY   (08.03.2006 в 00:54)   письмо автору
 
   для: cheops   (08.03.2006 в 00:43)
 

а как мне сделать, чтобы все показывало?

   
 
 автор: cheops   (08.03.2006 в 02:02)   письмо автору
 
   для: FaStY   (08.03.2006 в 00:54)
 

Хотя у вас в принципе в цикле... попутал я...

   
 
 автор: FaStY   (08.03.2006 в 10:59)   письмо автору
 
   для: cheops   (08.03.2006 в 02:02)
 

блин, так значит непонятно в чем ошибка... :(

   
 
 автор: cheops   (08.03.2006 в 13:34)   письмо автору
 
   для: FaStY   (08.03.2006 в 10:59)
 

Выделите блок
<?php
  $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); 
     
$filemane str_replace("'","'",$filemane); 
          
$genre str_replace("'","'",$genre); 
print  
$artist.'<br>'
?>

В отдельную функцию - вам будет проще работать и локализовать ошибку.

   
 
 автор: FaStY   (08.03.2006 в 14:47)   письмо автору
 
   для: cheops   (08.03.2006 в 13:34)
 

хм... чет мне и это не помогает :(

   
 
 автор: kasmanaft   (08.03.2006 в 19:07)   письмо автору
 
   для: FaStY   (08.03.2006 в 14:47)
 

мне кажется все дело в "оформлении"....
а точнее вот здесь: (по-моему не надо закрывать таблицу...)

print $artist.'<br>';

}
}
// echo "</table>";
}
}

   
 
 автор: FaStY   (08.03.2006 в 19:15)   письмо автору
 
   для: kasmanaft   (08.03.2006 в 19:07)
 

так она же закоментирована. она не влияет на вывод

   
 
 автор: kasmanaft   (08.03.2006 в 19:21)   письмо автору
 
   для: FaStY   (08.03.2006 в 19:15)
 

:)) извиняюсь... не заметил :)

   
 
 автор: kasmanaft   (08.03.2006 в 19:32)   письмо автору
 
   для: kasmanaft   (08.03.2006 в 19:21)
 

сразу скажу, что никогда не работал с PEAR... по-этому не знаю что произойдет когда он наткнется на папку и попробует обработать ее mp3 теги... может быть эшибка в этом???

попробуй вот так:


<?php 
require_once 'MP3/Id.php'
set_time_limit(1); 
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); 
     
$filemane str_replace("'","'",$filemane); 
          
$genre str_replace("'","'",$genre); 
print  
$artist.'<br>';   

                      }          
                      } 
              } 
  
//            echo "</table>"; 
        


read_dir('D:/music/Зарубежная музыка'); 
?>

   
 
 автор: FaStY   (08.03.2006 в 20:59)   письмо автору
 
   для: kasmanaft   (08.03.2006 в 19:32)
 

спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования