Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Експорт даних з MySQL в Excel. Два простих способи

Наша взаимовыгодная связь https://banwar.org/

Знадобилося мені нещодавно прикрутити експорт таблиць до сайту, але з PHP Exсel відразу вирішив не морочитися. Спочатку я скористався найпростішим способом, використовуючи MIME TYPE application / vnd.ms-excel. Створив файл excel.php (лістинг нижче). Виклик файлу exel.php зробивши через подія onclick.

Слід врахувати, що експорт стає доступним на сторінці мой_домен / excel.php, тому, щоб не переходити на іншу сторінку, я і використовував подія onclick.

<Button type = "submit" class = "btn btn-primary" onClick = "document.location.href = '/ excel.php'"> Експорт в Exel </ button>

Нижче наводжу лістинг коду:

<? PHP function cleanData (& $ str) {$ str = preg_replace ( "/ \ t /", "\\ t", $ str); $ Str = preg_replace ( &quot;/ \ r? \ N /", "\\ n", $ str); if (strstr ($ str, ' "')) $ str = '"'. str_replace ( ' "', '" "', $ str). '"'; } // Ім'я завантаження файлу. // У моєму прикладі вийде otched_20150331.xls $ filename = "otchet_". date ( 'Ymd'). ".Xls"; header ( "Content-Disposition: attachment; filename = \" $ filename \ ""); header ( "Content-Type: application / vnd.ms-excel"); // Підключення до бд mysql_connect ( "Localhost", "user", "pass"); // Хост юзер і пароль mysql_select_db ( "my_bd") or die (mysql_error ()); // Ім'я бази даних // Вказати кодування виведених даних mysql_query ( 'SET character_set_database = cp1251_general_ci'); mysql_query ( "SET NAMES 'cp1251'"); // запит і висновок даних $ flag = false; $ Result = mysql_query ( "SELECT * FROM user ORDER BY Data DESC") or die ( 'Запит не вдався!'); while (false! == ($ row = mysql_fetch_assoc ($ result))) {if (! $ flag) {// Висновок заголовків echo implode ( "\ t", array_keys ($ row)). "\ R \ n"; $ Flag = true; } // Виведення даних стовпців array_walk ($ row, 'cleanData'); echo implode ( "\ t", array_values ​​($ row)). &quot;\ R \ n"; } Exit; ?>

Детальніше про типи даних, особливості їх використання та діапазонах чисел: https://www.delay-delo.com/content/shpargalka-tipy-dannyh-mysql

Але незабаром змінилися вимоги. По-перше, стало необхідним додавати права доступу до звітів різним користувачам. Доступ до інформації само собою обмежувався правами. Довелося скрипт значно апгрейдити. За основу я взяв давно гуляє по мережі клас ExportToExcel, додавши невелику перевірку на права. Все той же файл excel.php став викликатися дещо іншим способом. Точніше, я до події onclick додав просто код рівня доступу. І посилання на сторінку експорту прийняла такий вигляд мой_домен / excel.php? Id = 23. У лістингу змінна $ accsess - передає у вигляді цифри код або рівень доступу. Таким чином, кожен користувач отримає саме "свій" звіт.

<Button type = "submit" class = "btn btn-primary" onClick = "document.location.href = '/ excel.php? Id = <? Php echo $ accsess;?>'"> Експорт в Exel </ button >

Нижче наводжу лістинг коду:

<? Php mysql_connect ( "localhost", "user", "pass"); // підключення до сервера mysql_select_db ( "my_db") or die (mysql_error ()); // вибір бази даних // Вказати кодування даних, що виводяться mysql_query ( 'SET character_set_database = cp1251_general_ci'); mysql_query ( "SET NAMES 'cp1251'"); if (! defined ( "ExcelExport")) {define ( "ExcelExport", 1); class ExportToExcel {var $ xlsData = ""; var $ fileName = ""; var $ countRow = 0; var $ countCol = 0; var $ totalCol = 3; // Кількість колонок в Excel // конструктор класу function __construct () {$ this-> xlsData = pack ( "ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0); } // Якщо число function RecNumber ($ row, $ col, $ value) {$ this-> xlsData. = Pack ( "sssss", 0x0203, 14, $ row, $ col, 0x00); $ This-> xlsData. = Pack ( "d", $ value); return; } // Якщо текст function RecText ($ row, $ col, $ value) {$ len = strlen ($ value); $ This-> xlsData. = Pack ( "s *", 0x0204, 8 + $ len, $ row, $ col, 0x00, $ len); $ This-> xlsData. = $ Value; return; } // Вставляємо число function InsertNumber ($ value) {if ($ this-> countCol == $ this-> totalCol) {$ this-> countCol = 0; $ This-> countRow ++; } $ This-> RecNumber ($ this-> countRow, $ this-> countCol, $ value); $ This-> countCol ++; return; } // Вставляємо текст function InsertText ($ value) {if ($ this-> countCol == $ this-> totalCol) {$ this-> countCol = 0; $ This-> countRow ++; } $ This-> RecText ($ this-> countRow, $ this-> countCol, $ value); $ This-> countCol ++; return; } // Перехід на новий рядок function GoNewLine () {$ this-> countCol = 0; this-> countRow ++; return; } // Кінець даних function EndData () {$ this-> xlsData. = Pack ( "ss", 0x0A, 0x00); return; } // Зберігаємо файл function SaveFile ($ fileName) {$ this-> fileName = $ fileName; $ This-> SendFile (); } // Відправляємо файл function SendFile () {$ this-> EndData (); header ( "Last-Modified:". gmdate ( "D, d M YH: i: s"). "GMT"); header ( "Cache-Control: no-store, no-cache, must-revalidate"); header ( "Pragma: no-cache"); header ( "Content-type: application / x-msexcel"); header ( "Content-Disposition: attachment; fileName = $ this-> fileName.xls"); print $ this-> xlsData; }}} // отримання коду доступу if (isset ($ _ GET [ 'id'])) {// фільтруємо дані $ id = mysql_real_escape_string (stripslashes (trim (htmlspecialchars ($ _ GET [ 'id'], ENT_QUOTES)))) ; $ Filename = 'user_export _'. $ Id; // задаємо ім'я файлу $ excel = new ExportToExcel (); // створюємо екземпляр класу $ accsess = $ id; // обов'язкова рядок, збережена для логіки // перевірка доступу, в моєму випадку доступ 0 означає повний доступ if ($ accsess == 0) {$ sql = "SELECT * FROM users"; // запит до бази} else {$ sql = "SELECT * FROM users WHERE lvl = '$ accsess'"; // запит до бази відповідно до рівня допуску} $ rez = mysql_query ($ sql); // Формуємо заголовки таблиць $ excel-> InsertText ( 'Номер'); $ Excel-> InsertText ( 'Ім'я'); $ Excel-> InsertText ( 'Посада'); $ Excel-> GoNewLine (); // Заповнення таблиць While ($ row = mysql_fetch_assoc ($ rez)) {$ excel-> InsertNumber ($ row [ 'id']); $ Excel-> InsertText ($ row [ 'Name']); $ Excel-> InsertText ($ row [ 'Post']); $ Excel-> GoNewLine (); } $ Excel-> SaveFile ($ filename); }?>

Quot;/ \ r?
Quot;\ R \ n"; } Exit; ?
Php?
Php?
Id = <?
Php echo $ accsess;?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: