Esempio n. 1
0
    $sql_text = mb_convert_encoding("select {$fields} from {$table} {$is_order}", 'Windows-1251', 'UTF-8');
    global $ADODB_FETCH_MODE;
    $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
    $recordSet = $conn->Execute($sql_text);
    PutRecordSetToCSV($recordSet, $file, ';');
    //    header('X-Accel-Redirect: ' . $file);
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 36000');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header("Content-Disposition: attachment; filename=" . basename($file));
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    readfile($file);
    // освобождаем файл
    unlink($file);
    /*
        else
         echo $sql_text;
    */
    ClearCashe();
} catch (Exception $e) {
    $_SESSION['errors'] = $conn->ErrorMsg();
    $_SESSION['error_class'] = $e;
    $_SESSION['error_time'] = date('d.m.y H:i:s');
    echo "Ошибка при создании файла экспорта CSV. Подробности смотри <a href='error_log.php' target='_blank'>тут </a>." . $conn->ErrorMsg();
}
exit;
Esempio n. 2
0
function PutRecordSetToCSV($recordSet, $file, $TERMINATED = ',', $ENCLOSED = '"', $LINES_TERMINATED = "\r\n")
{
    global $filename;
    $fd = fopen($file, 'wb');
    // пишем заголовки
    for ($i = 0; $i < $recordSet->FieldCount(); $i++) {
        $field = $recordSet->FetchField($i);
        $name = $field->name;
        /*
        	   if ( substr($name, 0, 3 ) == 'id_' && (substr($name, 2) != substr($filename, 2)) )
        	       ClearCashe($name);
        */
        fwrite($fd, $ENCLOSED . GetFieldProp($field->name) . $ENCLOSED . $TERMINATED);
    }
    fwrite($fd, $LINES_TERMINATED);
    // пишем данные
    foreach ($recordSet as $key => $row) {
        for ($i = 0; $i < $recordSet->FieldCount(); $i++) {
            $field = $recordSet->FetchField($i);
            $name = $field->name;
            $value = substr($name, 0, 3) == 'id_' && substr($name, 2) != substr($filename, 2) ? GetValueFromID($row[$i], $name, 300) : $row[$i];
            fwrite($fd, $ENCLOSED . $value . $ENCLOSED . $TERMINATED);
        }
        fwrite($fd, $LINES_TERMINATED);
    }
    // while
    fclose($fd);
    // чистим кеш
    for ($i = 0; $i < $recordSet->FieldCount(); $i++) {
        $field = $recordSet->FetchField($i);
        $name = $field->name;
        if (substr($name, 0, 3) == 'id_' && substr($name, 2) != substr($filename, 2)) {
            ClearCashe($name);
        }
    }
}