PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 6
dnbdrive
Отправлено: 26 Января, 2012 - 13:10:08 • Тема: txt to PHPEXCEL • Форум: Хранение данных, их вывод и обработка
Ответов: 0 Просмотров: 3395
есть код, который выводит данные из файла:
PHP:
скопировать код в буфер обмена
if ( isset ( $_POST [ 'link' ] ) ) { $file = $_POST [ 'link' ] ;
$flink = $file ;
function view( $flink ) {
if ( filesize ( $flink ) > 0
) : $fh = fopen ( $flink , "r" ) or
die ( "Couldn't open $flink " ) ; $line = fgets ( $fh , 8192
) ; list ( $data , $contract , $type , $comments , $ip ) = explode ( "<--column-->" , $line ) ; echo <<<HTML
$data
$contract
$type
$comments
$ip
HTML ;
endwhile ;
endif ;
}
@ view( $flink ) ;
}
}
и есть код, с помощью которого я хотел бы выводить все данные из файла в excel:
PHP:
скопировать код в буфер обмена
/** Error reporting */
/** PHPExcel */
require_once '../Classes/PHPExcel.php' ;
// Create new PHPExcel object
$objPHPExcel = new PHPExcel( ) ;
// Set properties
$objPHPExcel -> getProperties ( ) -> setCreator ( "Maarten Balliauw" )
-> setLastModifiedBy ( "Maarten Balliauw" )
-> setTitle ( "Office 2007 XLSX Test Document" )
-> setSubject ( "Office 2007 XLSX Test Document" )
-> setDescription ( "Test document for Office 2007 XLSX, generated using PHP classes." )
-> setKeywords ( "office 2007 openxml php" )
-> setCategory ( "Test result file" ) ;
// Перекодирую переменные в UTF-8
$hdata = iconv ( "WINDOWS-1251" , "UTF-8" , "Дата:" ) ; $hcontract = iconv ( "WINDOWS-1251" , "UTF-8" , "Договор:" ) ; $htype = iconv ( "WINDOWS-1251" , "UTF-8" , "тип:" ) ; $hcomments = iconv ( "WINDOWS-1251" , "UTF-8" , "Комментарий:" ) ; $hip = iconv ( "WINDOWS-1251" , "UTF-8" , "IP адрес отправителя:" ) ;
// Add some data
$objPHPExcel -> setActiveSheetIndex ( 0 )
-> setCellValue ( 'B2' , $hdata )
-> setCellValue ( 'C2' , $hcontract )
-> setCellValue ( 'D2' , $htype )
-> setCellValue ( 'E2' , $hcomments )
-> setCellValue ( 'F2' , $hip ) ;
//Data
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'B' ) -> setWidth ( 20) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'C' ) -> setWidth ( 15) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'D' ) -> setWidth ( 30) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'E' ) -> setWidth ( 50) ;
$objPHPExcel -> getActiveSheet ( ) -> getColumnDimension ( 'F' ) -> setWidth ( 20) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'B2:F2' ) -> getAlignment ( ) -> setHorizontal ( PHPExcel_Style_Alignment:: HORIZONTAL_CENTER ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'B2:F2' ) -> getFont ( ) -> setBold ( true ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'B2:F2' ) -> getFont ( ) -> setSize ( 10) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'D2' ) -> getAlignment ( ) -> setHorizontal ( PHPExcel_Style_Alignment:: HORIZONTAL_CENTER ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'E2' ) -> getAlignment ( ) -> setHorizontal ( PHPExcel_Style_Alignment:: HORIZONTAL_CENTER ) ;
$objPHPExcel -> getActiveSheet ( ) -> getStyle ( 'F2' ) -> getAlignment ( ) -> setHorizontal ( PHPExcel_Style_Alignment:: HORIZONTAL_CENTER ) ;*/
// Вот примерно как я хотел бы выводить данные:
$objPHPExcel -> setActiveSheetIndex ( 0 )
-> setCellValue ( 'B3' , $data )
-> setCellValue ( 'C3' , $contract )
-> setCellValue ( 'D3' , $type )
-> setCellValue ( 'E3' , $comments )
-> setCellValue ( 'F3' , $ip ) ;
$objPHPExcel -> setActiveSheetIndex ( 0 )
-> setCellValue ( 'B4' , $data )
-> setCellValue ( 'C4' , $contract )
-> setCellValue ( 'D4' , $type )
-> setCellValue ( 'E4' , $comments )
-> setCellValue ( 'F4' , $ip ) ;
. . .
$objPHPExcel -> setActiveSheetIndex ( 0 )
-> setCellValue ( 'Bx' , $data )
-> setCellValue ( 'Cx' , $contract )
-> setCellValue ( 'Dx' , $type )
-> setCellValue ( 'Ex' , $comments )
-> setCellValue ( 'Fx' , $ip ) ;
// Rename sheet
$objPHPExcel -> getActiveSheet ( ) -> setTitle ( 'Simple' ) ;
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel -> setActiveSheetIndex ( 0) ;
// Redirect output to a client’s web browser (Excel5)
header ( 'Content-Type: application/vnd.ms-excel' ) ; header ( 'Content-Disposition: attachment;filename="01simple.xls"' ) ; header ( 'Cache-Control: max-age=0' ) ; $objWriter = PHPExcel_IOFactory:: createWriter ( $objPHPExcel , 'Excel5' ) ;
$objWriter -> save ( 'php://output' ) ;
Интересует, собственно, пример, как это можно сделать.
В интернете натыкался на похожую реализацию, но только с использованием mysql. Но так как Mysql сервера тут нет (и пока не предвидится), мучаюсь с файлами.
В итоге завис уже на второй день ...
dnbdrive
Отправлено: 20 Декабря, 2011 - 16:09:01 • Тема: Вывод нескольких переменных из БД в Цикле • Форум: Вопросы новичков
Ответов: 10 Просмотров: 407
tuareg пишет: `date_reg` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- дата регистрации (создания) проблемного билета(при создании записи сам будет вставлять текущую дату и время)
То есть при создании записи, не нужно будет передавать текущую дату с помощью date()
tuareg пишет: Ну на пример, во второй таблице оставить только описание и способ решения, а остальные данные вынести в еще одну таблицу и связать их по id, тут будет плюс если будут выборки по этим параметрам.(допустим по статусу проблемы или приоритету)
Я реализовал вывод проблем по статусу, с помощью swich и get, с этим вроде разобрался сразу, хотя возможно реализовать это еще проще, но не суть ...
по факту, на сколько я понял, для каждой связи нужно делать еще таблицу, или дотаточно одной таблицы, где будут все связи?
ну например пользователь:группа пользователя или клиент:услуга ...
(Добавление)
ну учитывая мое нынешнее состояние отложу "пищу для мозга" на завтра ...
dnbdrive
Отправлено: 20 Декабря, 2011 - 15:00:20 • Тема: Вывод нескольких переменных из БД в Цикле • Форум: Вопросы новичков
Ответов: 10 Просмотров: 407
tuareg пишет: P.S Лучше бы время на эту х... не теряли(ну не правильно это), а переделали БД. Я помогу с запросами
Только что думал об этом и поняв, как mysql сервер будет любить меня за это, решил все же переделывать это ...
В реале (это уже не пусть)
есть таблица Services — услуги, вот ее структура:
CODE (
SQL ):
скопировать код в буфер обмена
`id` int( 11) NOT NULL AUTO_INCREMENT , -- уникальный идентификатор услуги
`s_name` varchar( 100) NOT NULL DEFAULT '' , -- короткое название услуги
`s_fullname` varchar( 500) NOT NULL DEFAULT '' , -- полное название услуги
`s_description` text NOT NULL , -- описание услуги
`s_tariff` varchar( 200) NOT NULL DEFAULT '0' , -- стоимость услуги (сохраняется id группы тарифов)
`s_tariffing` varchar( 200) NOT NULL DEFAULT '0' , -- тарификация услуги, где помесячная-1 или единоразовая-2
`s_info` text NOT NULL , -- информация об услуге
PRIMARY KEY ( `id` )
Problems — список проблем
CODE (
SQL ):
скопировать код в буфер обмена
`id` int( 11) NOT NULL AUTO_INCREMENT , -- уникальный идентификатор проблемы
`date_reg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' , -- дата регистрации (создания) проблемного билета
`date_start` varchar( 20) NOT NULL DEFAULT '0' , -- дата начала решения проблемы
`date_end` varchar( 20) NOT NULL DEFAULT '0' , -- дата решения проблемы
`responsible` mediumint( 8) UNSIGNED NOT NULL DEFAULT '0' , -- id ответственного за решение проблемы
`status` mediumint( 8) UNSIGNED NOT NULL DEFAULT '0' , -- статус проблемы
`priority` mediumint( 8) UNSIGNED NOT NULL DEFAULT '0' , -- приоритет проблемы
`services` varchar( 200) NOT NULL DEFAULT '0' , -- id услуг, на которые заведена проблема
`equipment` varchar( 200) NOT NULL DEFAULT '0' , -- id оборудования, но которые заведены проблемы
`description` text NOT NULL , -- подробное описание проблемы
`solution` text NOT NULL , -- способ решения проблемыы
-- это можно пока не вносить, так как еще не придумал как и что будет записываться. ..
`log_id` mediumint( 8) UNSIGNED NOT NULL DEFAULT '0' , -- группа логов (тут я пока не решил, как логировать те или иные действия по "проблеме")
`log_rec` mediumint( 8) UNSIGNED NOT NULL DEFAULT '0' , -- id записи лога (тут я пока не решил, как логировать те или иные действия по "проблеме")
PRIMARY KEY ( `id` ) ,
-- вот эти записи мне посоветовали сделать, но внятно так и не сказали зачем ...
KEY `responsible` ( `responsible` ) ,
KEY `services` ( `services` ) ,
KEY `equipment` ( `equipment` ) ,
KEY `log_id` ( `log_id` ) ,
KEY `log_rec` ( `log_rec` )
Мега-благодарен за помощь !!!
dnbdrive
Отправлено: 20 Декабря, 2011 - 14:29:09 • Тема: Вывод нескольких переменных из БД в Цикле • Форум: Вопросы новичков
Ответов: 10 Просмотров: 407
Okula пишет: Вот я не понимаю людей которые пишут так
есть же функции
mysql_fetch_assoc() или
mysql_fetch_row() зачем забивать код лишним текстом, а вообще в mysql слишком много всего ненужного есть которое тянется со старых версий расширения, не пора ли отказаться от него?
Спасибо, буду знать. Я программирую только месяц, вот и туплю ...
tuareg пишет: . Получили строку типа 1,2. Сделали запрос id IN(1,2)===>id=1 OR id=2
вот с этого момента поподробнее ...
Попробовал сделать так:
и вместо 1 тратата 2 получаю 1,2
На этом вчера я завис, и вырубился ...
dnbdrive
Отправлено: 19 Декабря, 2011 - 22:52:33 • Тема: Вывод нескольких переменных из БД в Цикле • Форум: Вопросы новичков
Ответов: 10 Просмотров: 407
Спасибо за столь быстрый ответ, но как на зло уже достаточно далеко ушел ( ...
а других способов никаких нет?
Подобный пример нашел в "не малоизвестном" движке DLE, вывод категорий (от туда я и применил этот способ) ... но как на зло не работает он нормально...
dnbdrive
Отправлено: 19 Декабря, 2011 - 22:32:17 • Тема: Вывод нескольких переменных из БД в Цикле • Форум: Вопросы новичков
Ответов: 10 Просмотров: 407
Начал делать небольшой проект, при помощи книг и гугла справлялся, но в этот раз не приложу ума, что делать.
Говорю сразу - в php новичок, по этому в вопросе могу написать глупость.
Пусть в таблице "тт" есть 3 строки:
id - идентификатор проблемы
description - описание проблемы
equipments - идентификаторы оборудования, у которого есть проблемы (записывается как 1,33,43)
а в таблице equipments есть 2 строки:
id - идентификатор оборудования
name - название оборудования.
Допустим, я нахожусь на странице где выводится список ТТ, в каких то ТТ-шках указано одно оборудование, в каких то несколько, суть в том, чтобы вывести их название. Попробовал применить "foreach" в while, но последней ТТ был выведен список всего оборудования ...
Привожу кусок кода:
PHP:
скопировать код в буфер обмена
$query = "SELECT * FROM problems LIMIT $start , $num_page " ; // Формируем запрос
if ( ! $result ) : die ( "Неудалось выполнить запрос<br /><h4>" . mysql_error ( ) ) . "</h4>" ; endif ;
$id = $row [ "id" ] ;
$description = $row [ "description" ] ;
// вот тут я хз, правильно или нет ...
if ( empty ( $row [ "equipments" ] ) ) { $equipments = "железки не указаны" ;
} else {
$equip = $row [ "equipments" ] ;
foreach ( $parentsm as $element ) {
$result2 = mysql_query ( "SELECT `s_name` FROM `equipments` WHERE `id` = '$element ' LIMIT 0 , 30" ) or
die ( "Ошибка запроса" . mysql_error ( ) ) ; if ( $row_r = mysql_fetch_array ( $result2 , MYSQL_ASSOC
) ) : $equipments [ ] = "<a href=\" /home.php?go=equipments&id=" . $element . "\" >" . $row_r [ "name" ] . "</a>" ; endif ; }
$equipments = implode ( ', ' , $equipments ) ; }
//вывожу все что вышло ...
echo <<<HTML
Номер: $id | Описание: $description | Оборудование: $equipments
HTML ;
Если в таблице, например 5 записей, то в браузере вижу это:
Номер: 1 | Описание: описалово | Оборудование: сервер,
Номер: 2 | Описание: описалово | Оборудование: сервер, роутер,
Номер: 3 | Описание: описалово | Оборудование: сервер, роутер, коммутатор
Номер: 4 | Описание: описалово | Оборудование: сервер, роутер, коммутатор, cisco
Номер: 5 | Описание: описалово | Оборудование: сервер, роутер, коммутатор, cisco, dlink, магистраль
а должно быть так:
Номер: 1 | Описание: описалово | Оборудование: сервер,
Номер: 2 | Описание: описалово | Оборудование: роутер,
Номер: 3 | Описание: описалово | Оборудование: коммутатор
Номер: 4 | Описание: описалово | Оборудование: cisco
Номер: 5 | Описание: описалово | Оборудование: dlink, магистраль (этот пример с несколькими железками)
I need help!!! ...
По факту там все намного сложнее, но чтобы вы не вникали, упростил все как мог.
Благодарен за любую помощь!
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB