За последние 24 часа нас посетили 22906 программистов и 1263 робота. Сейчас ищут 738 программистов ...

Вывод в файл и на экран

Тема в разделе "PHP для новичков", создана пользователем kot_k_k, 29 июл 2014.

  1. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    Не могу разделить поток вывода.
    есть HTML форма (html файл) - в ней вводится инфа и стартует php-файл, который формирует, путем разных извращений с базой, Excel файл.
    Как сделать чтобы при формировании файла - выводилась инфа на форму (можно новую)?
    вот код куда пытаюсь вставить echo() - но он инфу выводит в файл и его курочит.

    Код (Text):
    1.  
    2.  
    3. ............
    4.  
    5. [b]много кода, сюда тоже хочется вставить вывод, но он лезет в файл.[/b]
    6.  
    7. excel_import_my($date_start,$date_finish,$sql);   // вызов функции создания файла
    8.  
    9. код дальше
    10. ...........
    11.  
    12. function excel_import_my($date_start_,$date_finish_,$sql_)
    13. {// импорт
    14. $str_="Report_".date("m.d.y").".xls";
    15. header('Content-Type: application/force-download');
    16. header('Content-Type: application/octet-stream');
    17. header('Content-Type: application/download');
    18. header('Content-Disposition: attachment;filename= "'.$str_.'"');
    19. header('Content-Transfer-Encoding: binary „');
    20. .......
    21. xlsBOF();
    22. while ($tablerows = mysql_fetch_row($sql))  {
    23. ......
    24. xlsWriteNumber($str_Ex,$i,$tablerows[$i]);
    25. [b]echo("$tablerows[$i]");[/b]
    26. .......
    27. }
    28. xlsEOF()
    Как можно переключить вывод на форму а потом обратно в файл???

    п.с. понимаю что "лыжи и асфальт" - учимся потихоньку.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Код (Text):
    1. header('Content-Type: application/force-download');
    - эта скриптина не может выводить "в форму", поскольку она заточена на то, чтобы отдавать файл. Или/или. Разные скрипты должны быть
     
  3. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    а какой-нибудь "переключатель" есть?
    или другая скриптина, более "умная".
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Так скриптина будет делать то, что в ней написано. Не нравится - исправьте. Но в любом случае, она либо выдаст HTML в браузер, либо файл на загрузку, но неодновременно. Поскольку http://phpfaq.ru/na_tanke
     
  5. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    Так я и спрашиваю как можно сие сделать?

    за ссылку спасибо.
     
  6. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Не пытаться одной попой сесть на два стула.
    Например, можно формировать файл, сохранять его где-нибудь на сервере, выдавать обновленную форму, а на ней, помимо всего прочего - ссылка на файл.
     
  7. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    Но пока не закончу формировать файл - ничего на форму вывести не получится. Я правильно понял из объяснений и мурзилок?
    Всем спасибо.
     
  8. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Ну, если вам в форму нужно вывести те же данные, что были введены, можно вообще форму не сабмитить, а послать с нее данные через ajax в какой-то скрипт, который прожует их, сформирует файл и вернет ссылку на этот файл, а при получении ответа от Аякс можно эту ссылку вывести на форму.
     
  9. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    "Мне бы схемку иль чертеж " (Филатов)
    код (пример) бы помог сильно. просто что есть ajax - ХЗ, хотя это направление в процессе копания.
    и вот это
    это php должон возвращать Аяксу? если то как - return URL?
     
  10. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Ну да, все так.
    Ну, допустим, есть, условно говоря, поля field1 и field2 и див new_file_name с одноименными id. Если подключить jQuery, то аякс будет выглядеть так:
    Код (Text):
    1. $.ajax({
    2.    url: 'some_script.php',
    3.    type: 'POST',
    4.    data: {val1: $('#field1').val(), val2: $('#field2').val},
    5.    success: function(response) {$('#new_file_name').html(response);}
    6. })
    Тогда скрипт some_script.php должен получать через POST значения val1 и val2, формировать файл и выводить что-то типа <a href='http://yourserver.ru/new_just_created_file.txt'>Созданный файл</a>, а функция success запихнет это в див #new_file_name
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    не усложняйте то, что и так не можете понять. сделайте по простому, но чтобы работало. а там видно будет…
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    если надо показать страницу и при этом должен выскочить диалог сохранения файла, это можно сделать без Javascript.
    вариант а) указать на странице meta refresh и там URL файла
    вариант б) вставить в страницу iframe а там URL файла
    в любом случае Content-disposition файла должен быть attachment, чтобы гарантированно браузер не пытался этот файл показать сам.
     
  13. kot_k_k

    kot_k_k Активный пользователь

    С нами с:
    22 июл 2014
    Сообщения:
    46
    Симпатии:
    1
    Спасибо. Буду пробовать, главное новые ключевые слова узнал :)