PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
dnbdrive Отправлено: 26 Января, 2012 - 13:10:08 • Тема: txt to PHPEXCEL • Форум: Хранение данных, их вывод и обработка

Ответов: 0
Просмотров: 3395
есть код, который выводит данные из файла:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.         if (isset($_POST['link'])) {
  4.                 $file = $_POST['link'];
  5.                 if(is_file("$file")) {
  6.                         $flink = $file;
  7.                         function view($flink) {
  8.                                 if (filesize($flink) > 0) : $fh = fopen($flink, "r") or die("Couldn't open $flink");
  9.                                 while (! feof($fh)) :
  10.                                         $line = fgets($fh, 8192);
  11.                                         list($data, $contract, $type, $comments, $ip) = explode("<--column-->", $line);
  12.                                         echo<<<HTML
  13.                                                 $data
  14.                                                 $contract
  15.                                                 $type
  16.                                                 $comments
  17.                                                 $ip
  18. HTML;
  19.                                 endwhile;
  20.                                 endif;
  21.                                 fclose($fh);
  22.                         }
  23.                         @view($flink);
  24.                 }
  25.         }
  26.  
  27.  


и есть код, с помощью которого я хотел бы выводить все данные из файла в excel:


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. /** Error reporting */
  4.  
  5. date_default_timezone_set('Europe/London');
  6.  
  7. /** PHPExcel */
  8. require_once '../Classes/PHPExcel.php';
  9.  
  10.  
  11. // Create new PHPExcel object
  12. $objPHPExcel = new PHPExcel();
  13.  
  14. // Set properties
  15. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  16.                                                          ->setLastModifiedBy("Maarten Balliauw")
  17.                                                          ->setTitle("Office 2007 XLSX Test Document")
  18.                                                          ->setSubject("Office 2007 XLSX Test Document")
  19.                                                          ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  20.                                                          ->setKeywords("office 2007 openxml php")
  21.                                                          ->setCategory("Test result file");
  22.  
  23. // Перекодирую переменные в UTF-8
  24. $hdata = iconv("WINDOWS-1251", "UTF-8", "Дата:");
  25. $hcontract = iconv("WINDOWS-1251", "UTF-8", "Договор:");
  26. $htype = iconv("WINDOWS-1251", "UTF-8", "тип:");
  27. $hcomments = iconv("WINDOWS-1251", "UTF-8", "Комментарий:");
  28. $hip = iconv("WINDOWS-1251", "UTF-8", "IP адрес отправителя:");
  29.  
  30. // Add some data
  31. $objPHPExcel->setActiveSheetIndex(0)
  32.             ->setCellValue('B2', $hdata)
  33.             ->setCellValue('C2', $hcontract)
  34.             ->setCellValue('D2', $htype)
  35.             ->setCellValue('E2', $hcomments)
  36.             ->setCellValue('F2', $hip);
  37.  
  38. //Data
  39. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
  40. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
  41. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
  42. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50);
  43. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
  44. $objPHPExcel->getActiveSheet()->getStyle('B2:F2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  45. $objPHPExcel->getActiveSheet()->getStyle('B2:F2')->getFont()->setBold(true);
  46. $objPHPExcel->getActiveSheet()->getStyle('B2:F2')->getFont()->setSize(10);
  47. $objPHPExcel->getActiveSheet()->getStyle('D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  48. $objPHPExcel->getActiveSheet()->getStyle('E2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  49. $objPHPExcel->getActiveSheet()->getStyle('F2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);*/
  50.  
  51. // Вот примерно как я хотел бы выводить данные:
  52. $objPHPExcel->setActiveSheetIndex(0)
  53.             ->setCellValue('B3', $data)
  54.             ->setCellValue('C3', $contract)
  55.             ->setCellValue('D3', $type)
  56.             ->setCellValue('E3', $comments)
  57.             ->setCellValue('F3', $ip);
  58. $objPHPExcel->setActiveSheetIndex(0)
  59.             ->setCellValue('B4', $data)
  60.             ->setCellValue('C4', $contract)
  61.             ->setCellValue('D4', $type)
  62.             ->setCellValue('E4', $comments)
  63.             ->setCellValue('F4', $ip);
  64.             .       .        .
  65. $objPHPExcel->setActiveSheetIndex(0)
  66.             ->setCellValue('Bx', $data)
  67.             ->setCellValue('Cx', $contract)
  68.             ->setCellValue('Dx', $type)
  69.             ->setCellValue('Ex', $comments)
  70.             ->setCellValue('Fx', $ip);
  71.  
  72. // Rename sheet
  73. $objPHPExcel->getActiveSheet()->setTitle('Simple');
  74. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  75. $objPHPExcel->setActiveSheetIndex(0);
  76. // Redirect output to a client’s web browser (Excel5)
  77. header('Content-Type: application/vnd.ms-excel');
  78. header('Content-Disposition: attachment;filename="01simple.xls"');
  79. header('Cache-Control: max-age=0');
  80. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  81. $objWriter->save('php://output');
  82.  



Интересует, собственно, пример, как это можно сделать.
В интернете натыкался на похожую реализацию, но только с использованием 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):
скопировать код в буфер обмена
  1.   `id` int(11) NOT NULL AUTO_INCREMENT, -- уникальный идентификатор услуги
  2.   `s_name` varchar(100) NOT NULL DEFAULT '', -- короткое название услуги
  3.   `s_fullname` varchar(500) NOT NULL DEFAULT '', -- полное название услуги
  4.   `s_description` text NOT NULL, --  описание услуги
  5.   `s_tariff` varchar(200) NOT NULL DEFAULT '0', -- стоимость услуги (сохраняется id группы тарифов)
  6.   `s_tariffing` varchar(200) NOT NULL DEFAULT '0', -- тарификация услуги, где помесячная-1 или единоразовая-2
  7.   `s_info` text NOT NULL, -- информация об услуге
  8.   PRIMARY KEY (`id`)


Problems — список проблем

CODE (SQL):
скопировать код в буфер обмена
  1.   `id` int(11) NOT NULL AUTO_INCREMENT, -- уникальный идентификатор проблемы   
  2.   `date_reg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', -- дата регистрации (создания) проблемного билета
  3.   `date_start` varchar(20) NOT NULL DEFAULT '0', -- дата начала решения проблемы
  4.   `date_end` varchar(20) NOT NULL DEFAULT '0', --  дата решения проблемы
  5.   `responsible` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', -- id ответственного за решение проблемы
  6.   `status` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', -- статус проблемы
  7.   `priority` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', -- приоритет проблемы
  8.   `services` varchar(200) NOT NULL DEFAULT '0', --  id услуг, на которые заведена проблема
  9.   `equipment` varchar(200) NOT NULL DEFAULT '0', -- id оборудования, но которые заведены проблемы
  10.   `description` text NOT NULL, --  подробное описание проблемы
  11.   `solution` text NOT NULL, -- способ решения проблемыы
  12. -- это можно пока не вносить, так как еще не придумал как и что будет записываться. ..
  13.   `log_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', -- группа логов (тут я пока не решил, как логировать те или иные действия по "проблеме")
  14.   `log_rec` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', --  id записи лога (тут я пока не решил, как логировать те или иные действия по "проблеме")
  15.   PRIMARY KEY (`id`),
  16. -- вот эти записи мне посоветовали сделать, но внятно так и не сказали зачем ...
  17.   KEY `responsible` (`responsible`),
  18.   KEY `services` (`services`),
  19.   KEY `equipment` (`equipment`),
  20.   KEY `log_id` (`log_id`),
  21.   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


вот с этого момента поподробнее ...
Попробовал сделать так:

PHP:
скопировать код в буфер обмена
  1. $array = array($row["services"]);
  2. $service = implode(" тратата ", $array);
  3. echo $service;


и вместо 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:
скопировать код в буфер обмена
  1.  
  2.  
  3. $query = "SELECT * FROM problems LIMIT $start, $num_page";// Формируем запрос
  4. $result = mysql_query( $query );// Выполняем запрос
  5. if (!$result): die("Неудалось выполнить запрос<br /><h4>". mysql_error()) ."</h4>"; endif;
  6.  
  7. while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  {
  8.  
  9. $id = $row["id"];
  10. $description = $row["description"];
  11.  
  12. // вот тут я хз, правильно или нет ...
  13.  
  14. if (empty($row["equipments"])) {
  15. $equipments = "железки не указаны";
  16. } else {       
  17. $equip = $row["equipments"];
  18. $parentsm = explode(",", $equip);
  19. foreach ( $parentsm as $element ) {
  20. $result2 = mysql_query( "SELECT `s_name` FROM  `equipments` WHERE  `id` = '$element' LIMIT 0 , 30") or die ("Ошибка запроса". mysql_error());
  21. if ($row_r = mysql_fetch_array($result2, MYSQL_ASSOC)): $equipments[] =  "<a href=\"/home.php?go=equipments&id=". $element ."\">". $row_r["name"] ."</a>"; endif;
  22. }
  23.                         $equipments = implode(', ', $equipments );
  24.                 }
  25.  
  26.  
  27. //вывожу все что вышло ...
  28.  
  29. echo <<<HTML
  30. Номер: $id | Описание: $description | Оборудование: $equipments
  31. HTML;
  32.  
  33.  


Если в таблице, например 5 записей, то в браузере вижу это:

Номер: 1 | Описание: описалово | Оборудование: сервер,
Номер: 2 | Описание: описалово | Оборудование: сервер, роутер,
Номер: 3 | Описание: описалово | Оборудование: сервер, роутер, коммутатор
Номер: 4 | Описание: описалово | Оборудование: сервер, роутер, коммутатор, cisco
Номер: 5 | Описание: описалово | Оборудование: сервер, роутер, коммутатор, cisco, dlink, магистраль

а должно быть так:
Номер: 1 | Описание: описалово | Оборудование: сервер,
Номер: 2 | Описание: описалово | Оборудование: роутер,
Номер: 3 | Описание: описалово | Оборудование: коммутатор
Номер: 4 | Описание: описалово | Оборудование: cisco
Номер: 5 | Описание: описалово | Оборудование: dlink, магистраль (этот пример с несколькими железками)

I need help!!! ...

По факту там все намного сложнее, но чтобы вы не вникали, упростил все как мог.
Благодарен за любую помощь!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB