Перейти к содержимому


Фотография
- - - - -

Генерация страниц средствами пхп


  • Пожалуйста, авторизуйтесь, чтобы ответить
13 ответов в этой теме

#1 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 05 November 2008 - 00:01

В сети встретил множество мнений на эту тему и ни одного нужного.
Ковырять готовые ЦМС не хочется. =(

Задача такая - есть шаблон вида:

<?php if($full == "true"){ ?>
<h1 style="margin-left:230px">Заголовок</h1>
<?php } else { ?>  
<h2 style="margin-left:230px">Заголовок</h2>
<?php } ?>  
<p style="margin-left:230px">
<table width="600" border="0" cellspacing="0">
  <tr>
	<td width="298"><div align="center"><a href="offers/bg/object_name/mainb.jpg" rel="lightbox"><img src="offers/bg/object_name/main.jpg" border="1" style="border-color:#0e7fc7;"/></a></div></td>
	<td width="298"><p>Краткое описание
<br />
<br />
<strong>Цена: 420 000 €</strong></p></td>
  </tr>
</table>
</p>
<?php if($full == "true"){ ?>	
<p style="margin-left:230px">
полное описание
</p>
Изображение
Изображение
Изображение
<?php } else { ?>  
<div style="text-align:right;"> 
<a href="index.php?m=offers/bg/object_name/index&h=46&full=true">Подробнее >></a>
</div>
<?php } ?>			
<hr>

На основе заполнения формы - скрипт должен заполнить шаблон и создать его в нужной папке! и саму папку (вида /offers/страна/тип/название/).
Offers - постоянная
Страна, тип - выбор чекбоксом
Название - переменная

+ загрузить и ресайзить произвольное количество изображений, дать им имена вида (1.jpg, 1b.jpg, 2.jpg, 2b.jpg ....) и сохранить в виде тумбнэйл+имг

А самое (для меня=) ) сложное это то, что надо добавить 2 строки в 2 массива внутри индекса (страницы контейнера внутрь которой и будет загружаться сгенереная)
1 строка -
"id", country, region, type, price, "path"
пример: array("Вилла1", 1, 1, 1 , 3000000, "offers/finland/villas/savonranta/index.php"),

2 строка простая - одномерный массив
"Заголовок",
но надо запоминать ее номер в массиве!!! и подставлять в строку <a href="index.php?m=offers/bg/object_name/index&h=X&full=true">Подробнее >></a>
где Х - это номер элемента в массиве.

Хотелось бы узнать Ваше мнение по этому поводу. Ответы желательно развернутые и с ссылками на источники =)))
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#2 Malder

Malder

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 1330 сообщений
0
Обычный
  • Пол:Мужчина

Опубликовано 05 November 2008 - 00:49

[del]
  • 0

#3 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 05 November 2008 - 21:09

На основе заполнения формы - скрипт должен заполнить шаблон и создать его в нужной папке! и саму папку (вида /offers/страна/тип/название/).
Offers - постоянная
Страна, тип - выбор чекбоксом
Название - переменная

mkdir('offers/'.$_POST['country'].'/'.$_POST['type'].'/'.$_POST['name'], 0644);

+ загрузить и ресайзить произвольное количество изображений, дать им имена вида (1.jpg, 1b.jpg, 2.jpg, 2b.jpg ....) и сохранить в виде тумбнэйл+имг

GD2 или imagemagick в помощь (Второе работает быстрее).
http://ru2.php.net/m...copyresized.php
http://ru2.php.net/m...ass.imagick.php

А самое (для меня=) ) сложное это то, что надо добавить 2 строки в 2 массива внутри индекса (страницы контейнера внутрь которой и будет загружаться сгенереная)
1 строка -
"id", country, region, type, price, "path"
пример: array("Вилла1", 1, 1, 1 , 3000000, "offers/finland/villas/savonranta/index.php"),

2 строка простая - одномерный массив
"Заголовок",
но надо запоминать ее номер в массиве!!! и подставлять в строку <a href="index.php?m=offers/bg/object_name/index&h=X&full=true">Подробнее >></a>
где Х - это номер элемента в массиве.

А зачем два массива?
Одного не хватит?
$some_array = array('id'=>$_POST['id'],'header'=>$_POST['header'],'country'=>$_POST['cntr'],'region'=>$_POST['reg']....);
Да и лучше это либо в базу(mysql,postgre(если записей очень много)) кинуть, а не класть в сгенерированную страницу.
  • 0

#4 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 10 November 2008 - 06:23

$some_array = array('id'=>$_POST['id'],'header'=>$_POST['header'],'country'=>$_POST['cntr'],'region'=>$_POST['reg']....);
Да и лучше это либо в базу(mysql,postgre(если записей очень много)) кинуть, а не класть в сгенерированную страницу.


Да массив решил переделать примерно так =)

И понял необходимость перехода на мускл.

Поэтому такой вопрос - кто нить делал или пользуется кросс платформенными базами? т.е. одна база лежит на хостинге и пользует мускл, а ее копия лежит локально и используется в аксцессе через драйвер odbc.
Как лучше сделать базу (нужна локальная и серверная)
данные по каждому из объектов такие:
1 - уникальный идентификатор (число 7 знаков)
2 - тип объекта ( слово до 16 знаков)
3 - страна (слово до 12 знаков)
4 - регион (--"--)
5 - № объекта
6 - цена
7 - описание
8 - изображения

пункты 7 и 8, как их хранить??? ссылками на внешние файлы? потому что серверная часть должна содержать теги форматирования, а локальная соответственно нет. Как сделать экспорт из базы, чтобы в конечный doc или xls встраивались внешние файлы?
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#5 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 10 November 2008 - 08:20

Да массив решил переделать примерно так =)

И понял необходимость перехода на мускл.

Поэтому такой вопрос - кто нить делал или пользуется кросс платформенными базами? т.е. одна база лежит на хостинге и пользует мускл, а ее копия лежит локально и используется в аксцессе через драйвер odbc.
Как лучше сделать базу (нужна локальная и серверная)
данные по каждому из объектов такие:
1 - уникальный идентификатор (число 7 знаков)
2 - тип объекта ( слово до 16 знаков)
3 - страна (слово до 12 знаков)
4 - регион (--"--)
5 - № объекта
6 - цена
7 - описание
8 - изображения

пункты 7 и 8, как их хранить??? ссылками на внешние файлы? потому что серверная часть должна содержать теги форматирования, а локальная соответственно нет. Как сделать экспорт из базы, чтобы в конечный doc или xls встраивались внешние файлы?

odbc: http://ru2.php.net/m...n/ref.uodbc.php
mysql: http://ru2.php.net/m.../book.mysql.php

1) int(7) - зачем, если есть # объекта?
2) varchar(16)
3) varchar(12)
4) varchar(5-6)?
5) int(10)
6) decimal(сколько-нужно-цыфер)
7) text или varchar(300)
8) Если картинок несколько, то лучше завести отдельную таблицу:
id: int(7)
image: зависит от размера картинки и может быть TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB.
Экспорт из базы лучше делать посредством какого-либо класса, предназначенного для такого или самому писать.
И не забудь про индексы в базе, будет работать быстрее.
  • 0

#6 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 10 November 2008 - 12:40

1) - в id закодирована почти вся инфо о объекте - это для визуального поиска им надо и для того чтобы клиент мог назвать просто номер объекта когда звонит или приходит.

оО, спасибо что подробно расписал - буду теперь изучать маны =)

И еще один момент - навряд ли я найду его в манах - описание в серверной версии должно содержать теги, а в локальной - нет. как это реализовать? или при перекидывании через одбц надо фильтр применять?

Если я все таки не смогу со всем этим сам разобраться сколько у тебя будет стоить сделать:

1 php код для отображения базы на сайте (там 4 строчки всего но все же =) )
2 создать саму базу с примером заполнения полей таблиц
3 и самое главное скрипты импорта и экспорта в .xls или .svc

или м.б такой вариант - web форма для импорта в базу (т.е мастер копия на сервере) и скрипт экспорта из базы в формат .scv (на приватной странице сотрудник выбирает объект который надо экспортировать, а сервер в качестве ответа отдает ссылку на сформированный .svc)
Ну или м.б. ты другой вариант работы с базой предложишь - главное чтобы с работой с базой справились секретари =)
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#7 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 11 November 2008 - 08:11

И еще один момент - навряд ли я найду его в манах - описание в серверной версии должно содержать теги, а в локальной - нет. как это реализовать? или при перекидывании через одбц надо фильтр применять?

Если я все таки не смогу со всем этим сам разобраться сколько у тебя будет стоить сделать:

1 php код для отображения базы на сайте (там 4 строчки всего но все же =) )
2 создать саму базу с примером заполнения полей таблиц
3 и самое главное скрипты импорта и экспорта в .xls или .svc

или м.б такой вариант - web форма для импорта в базу (т.е мастер копия на сервере) и скрипт экспорта из базы в формат .scv (на приватной странице сотрудник выбирает объект который надо экспортировать, а сервер в качестве ответа отдает ссылку на сформированный .svc)
Ну или м.б. ты другой вариант работы с базой предложишь - главное чтобы с работой с базой справились секретари =)

Так svc же это обычный файл с простым форматированием, если я не ошибаюсь (не путаем с csv?). Экспортируем базу и на лету, с помощью preg_replace('/<(.*)>/','',$file_str) и preg_replace('/</(.*)>/','',$file_str) вырезаем теги и посылаем файл пользователю.
А такой код будет стоить порядка 30$, если не будет сложных моментов.
  • 0

#8 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 11 November 2008 - 11:03

все точно - путаем с csv (в одном из манов говорилось что мускл хорошо конвертит именно в этот формат, да и описание всех скриптов мускл->exel сохраняют именно в цсв, но вроде там все просто http://ru.wikipedia.org/wiki/CSV - и он тоже обычный файл с простым форматированием, тока данные в таблице разделяются знаками препинания, но вот про возможность существования в них интегрированных изображений я нигде ничего не нашёл =()

Сегодня вообщем с шефом обрисуем еще раз ситуёвину и сяду писать ТЗ, а там, как напишу - уже с тобой окончательно по цене согласуем. ок?
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#9 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 11 November 2008 - 14:18

все точно - путаем с csv (в одном из манов говорилось что мускл хорошо конвертит именно в этот формат, да и описание всех скриптов мускл->exel сохраняют именно в цсв, но вроде там все просто http://ru.wikipedia.org/wiki/CSV - и он тоже обычный файл с простым форматированием, тока данные в таблице разделяются знаками препинания, но вот про возможность существования в них интегрированных изображений я нигде ничего не нашёл =()

Сегодня вообщем с шефом обрисуем еще раз ситуёвину и сяду писать ТЗ, а там, как напишу - уже с тобой окончательно по цене согласуем. ок?

CSV (от англ. Comma Separated Values — значения, разделённые запятыми) — это текстовый формат :) Соответсвенно, изображения никак туда не прикрепить. С XML та же проблема: Иерархическая структура XML подходит для описания практически любых типов документов, кроме аудио и видео мультимедийных потоков, растровых изображений, сетевых структур данных и двоичных данных;
Есть два способа решения: экспортировать файл и давать ссылки на экспорт картинок, либо пытаться конвертировать изображения в формат, который поймет excel или что там нужно.

P.S. это такое тонкое предложение о написании скрипта?
  • 0

#10 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 11 November 2008 - 14:48

Ну можно и отдельными файлами, хотя лучше бы это было в одном файле. а идеалом был бы .xls или .doc. Как стандарт бизнес-документооборота.
P.S. Да, конечно. ток сеня еще с шефом обсудим это. Потом я напишу техническое задание и уже по нему будем согласовывать с тобой окончательную цену =) ок?
потому что фраза "А такой код будет стоить порядка 30$, если не будет сложных моментов." мне очень понравилась =))
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#11 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 11 November 2008 - 15:42

Ну можно и отдельными файлами, хотя лучше бы это было в одном файле. а идеалом был бы .xls или .doc. Как стандарт бизнес-документооборота.
P.S. Да, конечно. ток сеня еще с шефом обсудим это. Потом я напишу техническое задание и уже по нему будем согласовывать с тобой окончательную цену =) ок?
потому что фраза "А такой код будет стоить порядка 30$, если не будет сложных моментов." мне очень понравилась =))

Если найду класс для работы с doc или xls, то это выполнимо, в ином случае - придётся искать альтернативное решение.
А чем фраза понравилась? Мне за скрипты примерно такой сложности такую цену и платят, бывает дороже конечно, но там уже "заумные" системы, типа движка порносайта с кешами.
  • 0

#12 PingwiN

PingwiN

    Super True Member

  • True Members
  • PipPipPipPipPip
  • 4936 сообщений
62
Хороший
  • Пол:Мужчина

Опубликовано 11 November 2008 - 15:52

просто в конторах обычно приходится оплачивать не только труд кодера, но и кормить менеджеров, секреташ и прочую шляпу, которая никак не улучшает качество кода =))
Лан, поеду, вечером в ЛС отпишусь
  • 0
С теми,кто знает себе цену,легче сойтись в цене

#13 *soulburner*

*soulburner*

    You have reached level cap

  • True Members
  • PipPipPipPipPip
  • 5619 сообщений
225
Очень хороший
  • Пол:Мужчина

Опубликовано 11 November 2008 - 16:07

с помощью preg_replace('/<(.*)>/','',$file_str) и preg_replace('/</(.*)>/','',$file_str) вырезаем теги и посылаем файл пользователю.


Такие регэкспы вырежут не только тэги, но и то, что между тэгами ;)

Правильно писать

preg_replace('/<(.*?)>/','',$file_str) и preg_replace('/<\/(.*?)>/','',$file_str)


PS: Кстати, если не найдешь класс для doc (наверное, не найдешь) - то посмотри RTF
  • 0

#14 лайт

лайт

    iddqd

  • True Members
  • PipPipPipPipPip
  • 3843 сообщений
9
Обычный
  • Пол:Мужчина

Опубликовано 11 November 2008 - 17:15

Такие регэкспы вырежут не только тэги, но и то, что между тэгами ;)

Правильно писать

preg_replace('/<(.*?)>/','',$file_str) и preg_replace('/<\/(.*?)>/','',$file_str)

Я не думал, когда писал. :lol: Утро было.
  • 0


Посетителей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных пользователей