Вывод отыгравших песен на сайт

Вопросы, проблемы, решения с помощью Sound Empire.

Модераторы: Dark-Horse, Wlad, 7radio

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Вс янв 04, 2015 10:13 pm

И все же не могу решить проблему с историей эфира. Практически на всех радиостанциях сейчас есть раздел с плейлистом за день, где слушатели по дате/времени просматривают что звучало. Вот как добавить в MySQL базу название трека и время его старта, если вещание с империи??? HTTP GET запрос решил бы это задачу в одно мгновение...эх... одна строчка в настройках решила бы все (
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Wlad » Пн янв 05, 2015 11:51 am

Ну а сделать запрос к базе отчетов - никак?
Название Rep_YYMM.db , где YY - год, MM - месяц

Поле FType значения (некоторые)
4 - Песня
5 - Ролик
7 - Джингл
12 - Добивка

Что значат остальные поля расписывать? :)
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2569
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Пн янв 05, 2015 11:54 am

А средствами php можно сделать запрос к этой базе? Если да, как? В гугле не нашел (
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Wlad » Пн янв 05, 2015 12:03 pm

Я бы предложил сделать утилиту, которая извлекает из этой базы нужные данные и раскладывает их в нужные файлы, с которыми потом работать, т.к. постоянно обращаться к базе, с которой работает Студия - не очень хорошо.
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2569
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Re: Вывод отыгравших песен на сайт

Сообщение Ed » Вт янв 13, 2015 1:33 pm

Sergey_Belov писал(а):И все же не могу решить проблему с историей эфира. Практически на всех радиостанциях сейчас есть раздел с плейлистом за день, где слушатели по дате/времени просматривают что звучало. Вот как добавить в MySQL базу название трека и время его старта, если вещание с империи??? HTTP GET запрос решил бы это задачу в одно мгновение...эх... одна строчка в настройках решила бы все (

Код: выделить все
class dbf_class {
               
    var $dbf_num_rec;           //Number of records in the file
    var $dbf_num_field;         //Number of columns in each row
    var $dbf_names = array();   //Information on each column ['name'],['len'],['type']
    //These are private....
    var $_raw;               //The raw input file
    var $_rowsize;           //Length of each row
    var $_hdrsize;           //Length of the header information (offset to 1st record)
    var $_memos;             //The raw memo file (if there is one).

    function dbf_class($filename) {
        if ( !file_exists($filename)) {
            echo 'Not a valid DBF file !!!'; exit;
        }
        $tail=substr($filename,-4);
        if (strcasecmp($tail, '.dbf')!=0) {
            echo 'Not a valid DBF file !!!'; exit;
        }
                               
        //Read the File
        $handle = fopen($filename, "r");
        if (!$handle) { echo "Cannot read DBF file"; exit; }
        $filesize = filesize($filename);
        $this->_raw = fread ($handle, $filesize);
        fclose ($handle);
        //Make sure that we indeed have a dbf file...
        if(!(ord($this->_raw[0]) == 3 || ord($this->_raw[0]) == 131) && ord($this->_raw[$filesize]) != 26) {
            echo 'Not a valid DBF file !!!'; exit;
        }
        // 3= file without DBT memo file; 131 ($83)= file with a DBT.
        $arrHeaderHex = array();
        for($i=0; $i<32; $i++){
            $arrHeaderHex[$i] = str_pad(dechex(ord($this->_raw[$i]) ), 2, "0", STR_PAD_LEFT);
        }
        //Initial information
        $line = 32;//Header Size
        //Number of records
        $this->dbf_num_rec=  hexdec($arrHeaderHex[7].$arrHeaderHex[6].$arrHeaderHex[5].$arrHeaderHex[4]);
        $this->_hdrsize= hexdec($arrHeaderHex[9].$arrHeaderHex[8]);//Header Size+Field Descriptor
        //Number of fields
        $this->_rowsize = hexdec($arrHeaderHex[11].$arrHeaderHex[10]);
                $this->dbf_num_field = floor(($this->_hdrsize - $line ) / $line ) ;//Number of Fields
                               
        //Field properties retrieval looping
        for($j=0; $j<$this->dbf_num_field; $j++){
            $name = '';
            $beg = $j*$line+$line;
            for($k=$beg; $k<$beg+11; $k++){
                if(ord($this->_raw[$k])!=0){
                    $name .= $this->_raw[$k];
                }
            }
            $this->dbf_names[$j]['name']= $name;//Name of the Field
            $this->dbf_names[$j]['len']= ord($this->_raw[$beg+16]);//Length of the field
            $this->dbf_names[$j]['type']= $this->_raw[$beg+11];
        }
        if (ord($this->_raw[0])==131) { //See if this has a memo file with it...
            //Read the File
            $tail=substr($tail,-1,1);   //Get the last character...
            if ($tail=='F'){            //See if upper or lower case
                $tail='T';              //Keep the case the same
            } else {
                $tail='t';
            }
            $memoname = substr($filename,0,strlen($filename)-1).$tail;
            $handle = fopen($memoname, "r");
            if (!$handle) { echo "Cannot read DBT file"; exit; }
            $filesize = filesize($memoname);
            $this->_memos = fread ($handle, $filesize);
            fclose ($handle);
        }
    }
   
    function getRow($recnum) {
        $memoeot = chr(26).chr(26);
        $rawrow = substr($this->_raw,$recnum*$this->_rowsize+$this->_hdrsize,$this->_rowsize);
        $rowrecs = array();
        $beg=1;
        if (ord($rawrow[0])==42) {
            return false;   //Record is deleted...
        }
        for ($i=0; $i<$this->dbf_num_field; $i++) {
            $col=trim(substr($rawrow,$beg,$this->dbf_names[$i]['len']));
            if ($this->dbf_names[$i]['type']!='M') {
//print $col . "<br>\r\n";                                                     
//                                                              $col = mb_convert_encoding($col, 'ISO-8859-1', 'HTML-ENTITIES');
                                                                $col = html_entity_decode($col);
//print $col . "<br>\r\n";                                                     
                $rowrecs[]=$col;
            } else {
                $memobeg=$col*512;  //Find start of the memo block (0=header so it works)
                $memoend=strpos($this->_memos,$memoeot,$memobeg);   //Find the end of the memo
                $rowrecs[]= substr($this->_memos,$memobeg,$memoend-$memobeg);
            }
            $beg+=$this->dbf_names[$i]['len'];
        }
        return $rowrecs;
    }
   
    function getRowAssoc($recnum) {
        $rawrow = substr($this->_raw,$recnum*$this->_rowsize+$this->_hdrsize,$this->_rowsize);
        $rowrecs = array();
        $beg=1;
        if (ord($rawrow[0])==42) {
            return false;   //Record is deleted...
        }
        for ($i=0; $i<$this->dbf_num_field; $i++) {
            $col=trim(substr($rawrow,$beg,$this->dbf_names[$i]['len']));
            if ($this->dbf_names[$i]['type']!='M') {
                $rowrecs[$this->dbf_names[$i]['name']]=$col;
            } else {
                $memobeg=$col*512;  //Find start of the memo block (0=header so it works)
                $memoend=strpos($this->_memos,$memoeot,$memobeg);   //Find the end of the memo
                $rowrecs[$this->dbf_names[$i]['name']]=substr($this->_memos,$memobeg,$memoend-$memobeg);
            }
            $beg+=$this->dbf_names[$i]['len'];
        }
        return $rowrecs;
    }
}
$db="имя БД mysql";
$db_host="хост";
$db_user="пользователь";
$db_pass="пароль";

$link = mysqli_connect($db_host,$db_user,$db_pass, $db);
mysqli_query($link,"TRUNCATE TABLE `таблица`");
$dbf = new dbf_class('база.dbf');
$num_rec=$dbf->dbf_num_rec;
$field_num=$dbf->dbf_num_field;
for($i=0; $i<=$num_rec; $i++){
       if ($row = $dbf->getRow($i)){
          $sql="sql запрос для вставки данных в таблицу mysql";
          mysqli_query($link,$sql);
       }
}
mysqli_close($link);
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Вт янв 13, 2015 8:51 pm

Спасибо за помощь! Я правильно понимаю, что этот скрипт будет выгружать информацию из файла с отчетом в базу MySQL?
Т.е. достаточно запускать этот скрипт один раз в минуту и у меня в базе мускульной будет инфа о названии и времени старта трека?
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Ed » Вт янв 13, 2015 9:46 pm

Это класс написаный на php для работы с dbf файлами, и пример использования, естественно для конкретных задачь его нужно допиливать...
К сожелению сейчас я немогу привести конкретный пример, нет баз, нет компа...
Но в свое время я использовал этот класс в другом прэкте, все прекрасно работало.
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Вт янв 13, 2015 10:33 pm

Ок, спасибо!!!! Попробую разобраться.
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Вс июн 21, 2015 7:34 pm

Продолжаю изобретать велосипед с выводом на сайте плейлиста за день. Хочу попробовать забирать данные php скриптом прямо из базы отчета. В связи с этим вопрос такой - БД отчета paradox? для доступа к этой базе нужны ли имя пользователя и пароль? Если да, то какие?
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Ed » Пн июн 22, 2015 4:14 pm

я же чуть выше писал как работать с БД империи средствами php.
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Пн июн 22, 2015 5:41 pm

Ed писал(а):я же чуть выше писал как работать с БД империи средствами php.

Вы пробовали конкретно с базами империи вышеописанным способом работать? Если да - тогда у вас должно быть решение, хотя бы для примера. Выкладывайте.
У меня не получается... и вообще я вижу, что там класс для dbf - базы dbase... а у империи судя по всему paradox
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Ed » Пн июн 22, 2015 7:44 pm

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

edik_gen сабака маил ру
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Пн июн 22, 2015 8:38 pm

отправил)
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Sergey_Belov » Ср июн 24, 2015 8:38 am

Итак вопрос пока открыт:

БД отчета paradox? для доступа к этой базе нужны ли имя пользователя и пароль? Если да, то какие?
Sergey_Belov
Опытный
 
Сообщений: 98
Зарегистрирован: Пт янв 04, 2013 8:54 pm
Откуда: Мариуполь

Re: Вывод отыгравших песен на сайт

Сообщение Wlad » Ср июн 24, 2015 9:59 am

Sergey_Belov писал(а):Итак вопрос пока открыт:


В BDE нет понятий доступа по имени пользователя и пароля.
Кроме того, каждая таблица данных является отдельным файлом.
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2569
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Пред.След.

Вернуться в Общий форум

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27