Возникла проблема с печатью. В материале запросом формируется таблица. Отображается нормально. При нажатии кнопки "Печать". В окне предварительного просмотра отображается только шапка таблицы. Получается то, что сформировано запросом и выведено в цикле не отображается и не печатается. Код (CODE): $db =& JFactory::getDBO(); //Соединение с Базой данных $query = "SELECT name, phone, email, dop FROM #__bd_zakaz WHERE tip='$tip' and date='$date'"; // Выполняем запрос к базе данных $db->setQuery( $query );//Создаем масив из полученных данных $list = $db->loadAssocList();//Создам список ?> <!--Создание таблицы, шапка --> <table width="675px" border="1" cellpadding="2px"> <tr> <td width="25px" align="center"><p>№</p></td> <td width="200px" align="center"><p>Имя</p></td> <td width="70px" align="center"><p>Телефон</p></td> <td width="180px" align="center"><p>Email</p></td> <td width="200px" align="center"><p>Дополнительно</p></td> </tr> <?php foreach($list as $value) { $n++; echo " <tr> <td>{$n}</td> <td>{$value['name']} </td> <td>{$value['phone']}</td> <td>{$value['email']}</td> <td>{$value['dop']}</td> </tr>"; } ?> </table> Во вложенном файле скриншот.
Тему перенес в раздел "Программирование". Я же вроде бы написал как формируется таблица. Через форму передаются параметры запроса. Обработчик обрабатывает: делает выборку из базы, формирует и выводит таблицу с данными. Проблем с отображением нет. Пытаюсь распечатать через стандартную кнопочку материала "Печать". На скриншоте видно, что обработчик сформировал таблицу нормально: все строки таблицы отображаются. А на предварительном просмотре печати: выводится только шапка - первая строка. Я думал, то что уже отображено в материале должно печататься без проблем. Или я не прав, и данные нужно как-то подготавливать к печати? Если что-то нужно уточнить, или расписать более подробно, скажите я напишу.
Хмм, начнём сначала по порядку. Есть материал "Форма вывода заказов" в котором через: Код (CODE): {rdaddphp file=form2.php} Вызывается мой рукотворный скрипт. Привожу код form2.php: Код (html): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Выборка</title> </head> <body> <form action="index.php?option=com_content&view=article&id=26&Itemid=24" method="post"> <p>Выберите тип конструкции:<br><select name="tip" size="1"> <option>Пластиковые окна</option> <option>Деревянные окна</option> <option>Алюминиевые окна</option> </select></p> <p>Укажите дату заявки:<br> <?php JHTML::_('behavior.calendar'); echo JHTML::_('calendar', $cal_var, 'cal_var', 'cal_var', '%Y-%m-%d', array('class'=>'inputbox', 'size'=>'25', 'maxlength'=>'19')); ?> </p> <input name="submit" type="submit" value="Выбрать"> </form> </body> </html> Есть другой материал "Просмотр заказов", который выше у упоминал как ОБРАБОТЧИК , в котором аналагично через: Код (CODE): {rdaddphp file=select.php} Привожу select.php: Код (PHP): <?php // прямой доступ запрещен defined ('_JEXEC') or die ('Restricted access'); //Получение переменных $tip = JRequest::getVar('tip'); $date = JRequest::getVar('cal_var'); /* echo $tip; echo $date; */ $db =& JFactory::getDBO(); //Соединение с Базой данных $query = "SELECT name, phone, email, dop FROM #__bd_zakaz WHERE tip='$tip' and date='$date'"; // Выполняем запрос к базе данных $db->setQuery( $query );//Создаем масив из полученных данных $list = $db->loadAssocList();//Создам список ?> <!--Создание таблицы, шапка --> <table width="675px" border="1" cellpadding="2px"> <tr> <td width="25px" align="center"><p>№</p></td> <td width="200px" align="center"><p>Имя</p></td> <td width="70px" align="center"><p>Телефон</p></td> <td width="180px" align="center"><p>Email</p></td> <td width="200px" align="center"><p>Дополнительно</p></td> </tr> <?php foreach($list as $value) { $n++; echo " <tr> <td>{$n}</td> <td>{$value['name']} </td> <td>{$value['phone']}</td> <td>{$value['email']}</td> <td>{$value['dop']}</td> </tr>"; } ?> </table> Результат работы выше изложенного никаких ошибок не выдает. Данные с формы передаются в ОБРАБОТЧИК select.php. Тот делает выборку и выводит таблицу с данными. Но на печать выводится только шапка таблицы.
Сейчас попробовал распечатать так: Код (html): <a href="javascript:print('');void(0)">Печать</a> Всё распечаталось! И таблица и все данные и весь сайт целиком!!! Можно сделать что-бы печаталась только моя зловредная табличка?
Код (CODE): JavaScript - Printing part of page. Danish Shaikh replied to Mohit tiwari at 05-май-08 02:32 Use <DIV> to enclose ur grid. e.g.: <div id="areaToPrint"> ur grid inside in this tag </div> then add javascript to ur page to print ur grid : <script> function printDiv() { var divToPrint=document.getEelementById('areaToPrint'); newWin= window.open(""); newWin.document.write(divToPrint.outerHTML); newWin.print(); newWin.close(); } </script> Если я понял, то нужный участок мне нужно заключит между тегами: Код (CODE): <div id="areaToPrint"> <!--Создание таблицы, шапка --> <table width="675px" border="1" cellpadding="2px"> <tr> <td width="25px" align="center"><p>№</p></td> <td width="200px" align="center"><p>Имя</p></td> <td width="70px" align="center"><p>Телефон</p></td> <td width="180px" align="center"><p>Email</p></td> <td width="200px" align="center"><p>Дополнительно</p></td> </tr> </div> А как вызвать данную функцию? Код (CODE): <a href="какой параметр?">Печать</a>
resolute, Я такое или похожее делаю через PDF. До сих пор меня устраивало "выше крыши" ... Сразу не допер, как с ним бороться, но потом покатило как по маслу ... Глянь вот на этот топик может и тебе поможет ...
resolute, При условии, что у тебя Joomla 1.5 (в других версиях не знаю как это сработает), ну и .... Чтобы не морочить тебе голову догадками, попробуй сделать следующее: 1. Создай рядом с твоим view.html.php, файл view.pdf.php (условие обязательное) 2. Организуй ссылку в шаблоне с указанием типа такого: <a href="<?php echo JRoute::_( 'index.php?option=com_component&view=myview&format =pdf... дальше параметры какие надо. Выделенное красным - обязательно. Это будет гарантировать то, что Джумла будет поднимать твой файл view.pdf.php 3. В теле файла view.pdf.php пишем такое: // Запрещаем прямой доступ defined('_JEXEC') or die('Прямой доступ запрещен'); // Будем наследовать объект View require_once JPATH_COMPONENT.DS.'view.php'; // Если понадобятся данные, нам надо подключить Модель из которой мы их получим. Можно это опустить, если ты будешь формировать свой запрос ... require_once JPATH_COMPONENT.DS.'models'.DS.'mymodel.php'; //Создадим свой View=класс class MynamecomponentViewMynamecontroller extends MynamecomponentView { Здесь все буква в букву как в твоем классе из файла view.html.php, т.е. Имя класса и имя Виева .. так как в твоем view.html.php... Дальше имеет значение только две функции: 1. Дисплей .. Например такого содержания, но это не важно, главное чтобы она была и через нее надо отобразить результат .. function display( $tpl = null ) { //В ссылке мы передавали (в моем случае) значение ID объекта, тут его прочитаем $id = JRequest::getInt('id', 0); //Проверяем все ли у нас есть то, что мы ожидаем ... if( $id && $this->getLayout() == 'default' ){ Самый простой способ - это вернуть сюда текст HTML (но только текст а не объект), типа так: $this->showTable(); } 2. И функция. которая построит твою таблицу и вернет ее в формате HTML Дальше давай смастерим функцию в которой обработается приведенный тобой код в этом топике ... function showTable() { Сюда тычем весь твой код что в твоем примере .. Запрос к базе и все остальное с единственным условием, что всю уже сформированную таблицу тебе надо возвратить в текстовом виде вместе со свсеми тегами ... Что типа такого: $db =& JFactory::getDBO(); //Соединение с Базой данных $query = "SELECT name, phone ......................... и т.д. <!--Создание таблицы, шапка --> $tableHtml = '<table width="675px" border="1" cellpadding="2px"> .... трям-трям-трям --- вся сформированная таблица в виде HTML ----- </table> До конца ... return $tableHtml; Если єто возвратиться в чистом формате HTML в функцию display( $tpl = null ) ... Тебе больше ничего делать не прийдется ... В браузере поднимется файл PDF с твоей таблицей .. Короче суть такая, верни HTML с тегами и Джумла все сделает сама ... } Но наверняка результат не устроит полностью, потмоу что так же будут сформированы и отображены в этом файле вместе с твоей таблицей ... еще и Заголовки и колонтитулы ... Если это не устраивает или хочешь сделать по своему, смотри топик на который я тебя направил выше ...
В шаблоне от IceTheme - Prestige - наблюдаются "кривое" форматирование текста при формировании pdf-файла, предпросмотра на печать и при отправке по e-mail, например, скрин e-mail: Во-первых, текст отформатирован по правому краю. Во-вторых, последние симводы абзаца становятся первыми. При формировании pdf-файла рисунок не вмещается, а хочется. Помогите, пож-ста, с Joomla начал работать 3 дня назад, практически ничего не знаю. Поиск по форуму результатов не дал. CMS Joomla! 1.5.15 Stable
2 Lion2005 Вот это я получил с твоей ссылки при нажатии на кнопку "Отправить по почте" .... : Ничего не трогая .... Как я увиел, то я бы ничего не трогал, а просто нашел бы и убрал бы ведущие двоеточия .. в лейблах полей .. (очень даже прикольненько смотрится .. вроде бы как так и задумано ... Думаю, тут надо проверить файлик в Виеве .. типа print.viev.php А вот при формировании PDF верхняя картинка (с той же ссылки) выходит за пределы страницы ... Думаю, что надо в этом случае (когда размещаем фото на странице сайта а не просто как фотогаллерея, добавили как есть) готовить картинку (размером) с учетом размера страницы ... Думаю, что PDF берет (просто по ссылке на файл не преобразуя его ... оригинал файла, а не его преобразования) ... Именно ОРИГИНАЛ в материал добавляйте меньше по ширине (чтобы вместился на печатную страницу) ... Думаю что поможет ... Тут, я пояснял как сделать собственный формат (измененный от .. по умолчанию) вывода на печать в PDF (в самописном компоненте), а Вы используете стандартные средства Джумлы ... Тяжело сказать, что она и как в конкретном слкчае формирует .. Надо рыть в коде .. или приспосабливаться. Попробуйте вставить снимок с оригиналом меньше (предположительно подходящей под страницу) ширины ...
Спасибо, OlegKor, за попытку оказать помощь. Гы-гы-гы - больше я никак не могу описать то, что ещё нашёл. Попробуйте вписать в форму отправки ссылки по e-mail какой-нибудь адрес эл. ящика. Вы введете joomla@support.ru, а будете получать сначала "joomla", потом "@joomla", потом "joomla@support", потом ".joomla@support", потом "joomla@support.ru". Вводит в возбу- (вычеркнуто) заблуждение. К тому же на эл. ящик никакого сообщения не приходит. Подскажите, есть если стабильные аналоги этих опций сторонних производителей. Жду советов, спасибо.
Только что разобрался, вернее случайно наткнулся на решение. Нужно просто удалить или переименовать файл \templates\system\css\template_rtl.css
Спасибо, надеюсь в других местах не будет косяков из-за изменения этого файла (хотя поискал, понял, что этот файл отвечает за текст, который пишется справа-налево, например, арабский или иврит). Если есть вопросы по шаблону, задавайте, может помогу чем тоже.