Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура php обработчиков 
:(
    Опции темы
Artemon
Дата 7.10.2011, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Какая структура обычно делается у страницы с php кодом ?

например с начала идет hpp код в котором производится обработка нажатых кнопок, потом генерируется html или еще как-то ?

К примеру я написал вот такой код, и хъотелбы узнать насколько его структура корректна и принятоли вообще так писать в php:
Код

<?php

include './db.php';
include './payments_engine.php';
include './encoding.php';

$debug = true;
$PricePerItem = 100;    // Цена за одну копию программы

on_load_page($btnNext, $ItemsCount, $inputEmail, $inputFIO, $PricePerItem);
//header( getContentEncodingString() );
?>
<html>
<head>
<!--<meta <?php echo getContentEncodingString1() ?> />-->
</head>
<body>
<form metod="post">
    <Table>
        <tr>
            <td>Приобретаемый продукт:</td>
            <td>LMControl</td>
        </tr>
        <tr>
            <td>Количество:</td>
            <td>
                <input name="ItemsCount" value=<?php if (!isset($ItemsCount))$ItemsCount = 1; echo $ItemsCount;?>>
            </td>
        </tr>
        <tr>
            <td>Цена:</td>
            <td><?php echo $ItemsCount*$PricePerItem; ?></td>
        </tr>
        <tr>
            <td>
                <input name="btnRecalc" type="submit" value="Пересчитать"/>                
            </td>
            <td></td>
        </tr>        
        <tr>
            <td>Email</td>
            <td>
                <input name="inputEmail" />
            </td>
        </tr>
        <tr>
            <td>ФИО</td>
            <td>
                <input name="inputFIO" />
            </td>
        </tr>        
        <tr>
        <td>
            <input name="btnNext" type="submit" value="Перейти к оплате"/>
        </td>
        <td></td>
        </tr>
    </Table>                
</form>    

<?

function show_debug_message($is_debug, $msg)
{
    if($is_debug)
        echo $msg;
}

function on_load_page($btnNext, $ItemsCount, $inputEmail, $inputFIO, $PricePerItem)
{
    if (isset($btnNext))
    {
    
    if( !validate_fields($inputEmail, $inputFIO) )
        {
        echo "Не заполнены все поля";
        return;
        }
    
    $db = connect_to_db();
   
    if(!$db)
        {
        echo "1 Ошибка при подключении к БД. Повторите попытку позже.";
        show_debug_message($debug, mysql_error($db));
        exit();
        }
   
    $sql = insert_new_payment($db, $ItemsCount, $ItemsCount*$PricePerItem);
    
    if(!$sql)
        {
        echo "БД не доступна. Повторите попытку позже.\n";
        show_debug_message($debug, mysql_error($db));
        exit();
        }
     
    $OrderNumber = get_last_payment_number($db);
   
    disconnect_from_db($db);
    
    $Sum = $ItemsCount*$PricePerItem;
    
    if(!$Sum)
      {
      echo "Ошибка в расчетах";
      exit();
      }
    
    header("Location: /payments/pay_finish.php?ItemsCount=$ItemsCount&OrderNumber=$OrderNumber&Sum=$Sum");
    exit();
    }
}

function validate_fields($inputEmail, $inputFIO)
{    
    if(empty($inputEmail) || empty($inputFIO))
        return false;
    
    return true;
}

?>
</body>

</html>


Добавлено через 2 минуты и 28 секунд
И еще можно как-то разделить html и php код ?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
bars80080
Дата 7.10.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Artemon @  7.10.2011,  13:54 Найти цитируемый пост)
И еще можно как-то разделить html и php код ? 

можно.

к примеру, можно закинуть весь хтмл в отдельный файл, а затем подключать,
либо сделать чистый хтмл, который считывать в переменную когда надо и echo $html;
любые вставки значений в нём можно делать разными способами. к примеру:


Код

 <tr>
            <td>Количество:</td>
            <td>
                <input name="ItemsCount" value="{KOL}" />
            </td>
        </tr>
        <tr>
            <td>Цена:</td>
            <td>{PRICE}</td>
        </tr>



а затем обрабатывать:

Код

$a = array('{KOL}','{PRICE}');
$b = array($kolichestvo, $price);
$html = str_replace($a, $b, $html);







Цитата(Artemon @  7.10.2011,  13:54 Найти цитируемый пост)
Какая структура обычно делается у страницы с php кодом ?

например с начала идет hpp код в котором производится обработка нажатых кнопок, потом генерируется html или еще как-то ?

структура делается такая, какая отвечает условиям задачи. интересно, что здесь важным оказываются не частные требования к скрипту, а общие проблемы. к примеру, вы сталкиваетесь с проблемой, что после отсылки формы на сайт, клиент может нажать кнопку F5 и произойдёт повторная отправка формы. чтобы избежать этого, окажется, что надо совершить по завершению приёма данных перенаправление клиента на другую страницу, а это кардинально меняет всю структуру.
но этому можно научиться только сталкиваясь с этими проблемами
PM MAIL WWW   Вверх
$дмитрий
Дата 7.10.2011, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

К примеру я написал вот такой код, и хъотелбы узнать насколько его структура корректна и принятоли вообще так писать в php:

Я бы порекомендовал такую файловую структуру

Цитата

/config.php(конфиг)
/lib/ - папка с функционалом
/lib/index.php(здесь подключаем config.php, function.php, db.php и т.д.)
/lib/function.php(сюда переносим все функции)
/lib/db.php

/header.php(здесь подключаем функционал одной строчкой /lib/index.php + html)
/index.php(здесь подключаем header.php, footer.php и html)
/footer.php(html)

PM MAIL   Вверх
Absinthe
Дата 7.10.2011, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

/header.php(здесь подключаем функционал одной строчкой /lib/index.php + html)
/index.php(здесь подключаем header.php, footer.php и html)
/footer.php(html)
 Кстати да. Никогда так не делай.
PM MAIL   Вверх
$дмитрий
Дата 8.10.2011, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Absinthe, чем плох такой вариант?
PM MAIL   Вверх
Absinthe
Дата 8.10.2011, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



$дмитрий, это лучше, чем предложено автором темы, но я пореомендовал бы шаблонизатор.
PM MAIL   Вверх
Muerto
Дата 9.10.2011, 17:45 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



почитай про mvc, скачай какой нить фреймворк из более крупных посмотри на структуру...


--------------------
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 10.10.2011, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



может пригодится.. я тут писал как сделать простой сайт. 
http://gd.fipuche.ru/index.php?option=com_...6&Itemid=15
там в принципе попытался наглядно показать как организована структура. Некоторые со мной не согласятся, но как вариант ;)


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Absinthe
Дата 10.10.2011, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

Некоторые со мной не согласятся
 Там без индусов не обошлось:
 
Код

/** Названия страниц **/
// Заголовок главной страницы
DEFINE('_TITLE_MAIN','Главная страница');
// Заголовок страници О компании
DEFINE('_TITLE_COMPANY','О компании');
// Заголовок страницы Новости
DEFINE('_TITLE_NEWS','Новости');
// Заголовок страницы Вопрос-ответ
DEFINE('_TITLE_FAQ','Часто задаваемые вопросы');
// Заголовок страницы Контактная информация
DEFINE('_TITLE_NEWS','Контактная информация');

Ну и связанный с этим код.

Остальное нормально впринципе.
PM MAIL   Вверх
Gold Dragon
Дата 10.10.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Absinthe @  10.10.2011,  15:21 Найти цитируемый пост)
Там без индусов не обошлось:
это что?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Absinthe
Дата 10.10.2011, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Gold Dragon, а, не заметил, что ты автор smile
PM MAIL   Вверх
$дмитрий
Дата 10.10.2011, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Давно взял за правило файлы css и js объединять в одну папку jc, потому как суммарно таких файлов не много, а в продакшине после "склейки" остается не более 3-4, соответственно для 3 файлов выделять 2 папки это жирно  smile
А папку images переименовываю в простое i и все вытекающие из этого плюсы

Что касается шаблонизаторов. В классических шаблонизаторах мне не нравятся как пишутся сами шаблоны, поясняю:
Код

<tr>
            <td>Цена:</td>
            <td>{PRICE}</td>
        </tr>

Вроде бы на вид и красиво и удобно, не правда ли?
Но в реальных проектах нам требуется что-то больше чем str_replace: условия, циклы и т.д.
Код

{FOREACH AAA AS BBB}
<tr>
            <td>Цена:</td>
            <td>{IF PRICE}
{PRICE}
{/FI}
</td>
        </tr>
{/FOREACH AAA AS BBB}

Посмотрев на этот бардак, я задаю себе вопрос: нафига мне php если нужно дополнительно использовать тормозной/функционально ограниченный/не очевидный подъязык?

Очевидно лучшим решением будет использовать прямую подстановку
Код

<tr>
            <td>Цена:</td>
            <td><?=$nPrice?></td>
        </tr>

И работает быстрее, с функциональностью порядок, и все преимущества чистого php

Справедливости ради скажу что есть задачи в которых подход классических шаблонизаторов оправдан.


PM MAIL   Вверх
Absinthe
Дата 10.10.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

И работает быстрее, с функциональностью порядок, и все преимущества чистого php
 Не факт - можешь поиметь тормоза при наследовании шаблонов, т.к. php этого не умеет и придется выкручиваться.
PM MAIL   Вверх
Gold Dragon
Дата 10.10.2011, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата($дмитрий @  10.10.2011,  18:21 Найти цитируемый пост)
А папку images переименовываю в простое i и все вытекающие из этого плюсы
а в чём плюсы?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
$дмитрий
Дата 10.10.2011, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Gold Dragon, 
Какие плюсы мы имеем при сокращенном названии директорий:
- снижаем трафик
- уменьшаем время загрузки страницы
- страница индексируется быстрее
- при разработке меньше времени тратится для ввод символов
- код компактнее и значит более читаем
И все эти плюсы получены простым переименованием  smile 
Соотношения трудозатрат к полученному результату несоизмеримы!

Если уж и поддерживать общую стилистику написания директорий наряду с полным названием /images/ мы будем иметь /javascript/, /cascading_style_sheets/
Однако разработчики понимают что это полный бред и пишут сокращения по первой букве /js/ и /css/, так давай сокращать и images
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0608 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.