Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Печать из sql (https://javascript.ru/forum/css-html/70305-pechat-iz-sql.html)

Iopq 26.08.2017 03:20

Печать из sql
 
Есть база sql. Из неё делается выборка данных которые вставляются в шаблон и выводится окно печати. Это делается методом post. Хочу делать без перезагрузки страницы. Т.е допустим на странице форма для ввода значения и кнопка. Пользователь вводит нужные данные, нажимает кнопку и получает окно печати после которой остаётся на той же странице. Как это осуществить?

laimas 26.08.2017 03:49

Если в новой вкладке, то достаточно

<form action="url" method="post" target="_blank">
....
</form>


Сервер отдает страницу для печати, в которой производится и запуск печати.

Iopq 26.08.2017 10:58

Нет. В том же окне. Без перезагрузки страницы

laimas 26.08.2017 12:08

Цитата:

Сообщение от Iopq
Нет. В том же окне

В том же окне не получится, это будет печать уже самой страницы.

Iopq 26.08.2017 12:23

Но как то же это делают. Пустая страница с одной кнопкой при нажатии на которую появляется окно с выбором принтера и текстом для печати

laimas 26.08.2017 12:26

Цитата:

Сообщение от Iopq
появляется окно с выбором принтера и текстом для печати

Ну так окно же (новое), а не тоже самое окно.

Iopq 26.08.2017 12:39

да в том то и суть что не совсем окно. вот нажмите ctrl+p. появилось "окно" с содержимым страницы. вот мне надо такое же окно но информацией из шаблона без перегрузки страницы. не знаю как объяснить

Iopq 26.08.2017 12:43

у меня сейчас это работает так
$tpl = new template('./data','.tpl'); # создали объект, задали каталог и расширение
$tpl -> load('tpl'); # загрузили шаблон
$tpl -> vars('tpl',array('time','date')); # указали какие переменные преобразовать, они должны быть заданы зарание
echo $tpl -> out('tpl'); # вывели шаблон
а я хочу сделать выборку данных аяксом и печать что бы страница не перезагружалась

laimas 26.08.2017 12:44

<form action="url" method="post" onsubmit="window.open('','myprt', 'width=600, height=400, left=0, top=0')" target="myprt">


Форма будет передана методом POST по указанному URL, скрипт которого вернет страницу для печати, которая будет помещена в новое окно. Если настройки браузера запрещают это делать, то только после разрешения такого действия.

Iopq 26.08.2017 12:57

Parse error: syntax error, unexpected '','' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';' in
вот такая ошибка

laimas 26.08.2017 13:06

Думаю локальный сервер есть? Выполните на нем файл .html файл. Файл .php, под которыми сохраните его, укажите в action формы.

.html файл:

<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="" method="post" onsubmit="window.open('','myprt', 'width=600, height=400, left=0, top=0')" target="myprt">
<input name="as" value="Form data" />
<button>Send</button>
</form>
</body>
</html>


.php файл:

<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <style>
        /* стили для печати*/
    </style>
</head>
<body onload="this.print()">
<?=$_POST['as']?>
</body>
</html>


И все будет работать. Это в чем-то вы косячите.

Iopq 26.08.2017 13:30

как же объяснить? вы ctrl+p нажимали? появляется диалоговое окно и после печати или отмены исчезает и пользователь остается на той же странице. а в вашем примере появляется новое браузерное окно с диалоговым и после печати или отмены остается

laimas 26.08.2017 13:37

Цитата:

Сообщение от Iopq
вы ctrl+p нажимали?

А вы нажимали? Как по вашему в этом случае это работа самого браузера или клиентского скрипта?

laimas 26.08.2017 13:38

Цитата:

Сообщение от Iopq
Есть база sql. Из неё делается выборка данных которые вставляются в шаблон и выводится окно печати.

Чего вам еще надо - открыли это в новом окне и запустили печать.

Iopq 26.08.2017 13:47

Это работа браузера. А мне надо скриптом вызвать это нажатие и подгрузить в это окно шаблон

laimas 26.08.2017 13:50

Цитата:

Сообщение от Iopq
А мне надо скриптом вызвать это нажатие и подгрузить в это окно шаблон

Попробуйте. Это кстати не окно документа, а параметров печати, подгрузить в него ничего нельзя, а печататься будет текущая страница.

Iopq 31.08.2017 03:44

laimas,
Да вы были правы и я остановился на вашем способе. Теперь я переделал свой код и аяксом отправляю данные на сервер т.е пост запросом из HTML странички. Как мне теперь вызвать такое же окно с ответом сервера?

laimas 02.09.2017 05:37

Цитата:

Сообщение от Iopq
Как мне теперь вызвать такое же окно с ответом сервера?

Что значит "такое же"?

Цитата:

Сообщение от Iopq
я остановился на вашем способе

Это не мой способ, это естественное, что можно сделать причем Ajax для этого совсем не требуется. Если так хочет Ajax, то открыть новое окно поместив в него ответ сервера.


Часовой пояс GMT +3, время: 17:40.