С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107

Правильное составление кода

16.05.2014, 22:25. Показов 773. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня есть определенный вопрос. В данный момент я пишу сайт, на котором пользователь выполняет определенные действия. И в зависимости от этих действий некоторая часть страница не должна показываться, а должна показываться другая часть. И у меня получается каша в коде. Так вот, вопрос такой, как правильно все это дело составлять? Может быть части написать в отдельных файлах и подгружать их include-ом, в зависимости от условий? Или как-то иначе?
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<div id = 'wrapper'>
 
    <?php
        include 'menu.php';
    ?>
    
    <div id = 'main_block'>
                
        <h1>Дуэли</h1>
        
        <?php
            if (!$_SESSION['user']) {
                echo "<h2>Пожалуйста авторизуйтесь</h2>";
                return false;
            };
            
            if ($battles[$user] == $user) {
                            
                echo "<h2>Ваша заявка</h1>";
                
                echo "<table>";
                    echo "<tr><th>Время</th><th>Уровень</th><th>Ставка</th><th>Ход</th><th>Раса</th><th>Действие</th></tr>";
                    echo "<tr>";
                        foreach($battles[$user] as $key => $val) {
                            if($val != $user) {
                                echo "<td>";
                                    if ($key == 'id') {
                                        
                                        echo "<form class = 'cancel' method = 'post' action = 'requests.php'>";
                                        echo "<input name = 'action' type='hidden' value='duel_cancel'></input>";
                                        echo "<input name = 'id' type='hidden' value='" . $val . "'></input>";
                                        echo "<input type='submit' value='O'>";
                                        echo "</form>";
                                    }
                                    else {
                                        echo date_check($val, '');
                                    };
                                echo "</td>";
                            };
                        };
                    echo "</tr>";
                echo "</table>";
                
                echo "<!--";
            }
        ?>
        
        <form id = 'create_battle' method = 'post' action = 'requests.php'>
            <table id = 'create_battle'>
                <tr>
                    <th>
                        Имя
                        <select name = 'name_defender' id = 'name_defender'>
                            <option value = 'enemy_no'>Нет</option>
                            <?php
                                for ($i=0; $i<count($players); $i=$i+3) {
                                    echo "<option value = 'enemy_" . 
                                        $players[$i] . 
                                        "'>" . 
                                        $players[$i] . 
                                        "[" . 
                                        $players[$i+1] . 
                                        "]</option>";
                                };
                            ?>
                        </select>
                    </th>
                    <th>
                        Ставка
                        <select name = 'money' id = 'money'>
                            <option value = 'money_0'>Опыт</option>
                            <option value = 'money_100' selected>100</option>
                            <option value = 'money_300'> 300</option>
                            <option value = 'money_500'>500</option>
                            <option value = 'money_1000'>1000</option>
                        </select>
                    </th>
                    <th>
                        Время
                        <select name = 'move_length' id = 'move_length'>
                            <option value = '1-m'>1 минута</option>
                            <option value = '3-m' selected>3 минуты</option>
                            <option value = '5-m'>5 минут</option>
                        </select>
                    </th>
                    <th>
                        <input type = 'submit' value = 'Создать'></input>
                    </th>
                </tr>
                
            </table>
        </form>
            
        <?php
            if (!$_SESSION['user']) {
                echo "-->";
            }
        ?>
            <h2>Заявки всех игроков</h2>
        
            <table id = 'battles_table'>
                <tr>
                    <th>Время</th>
                    <th>Уровень</th>
                    <th>Ставка</th>
                    <th>Ход</th>
                    <th>Имя</th>
                    <th>Раса</th>
                    <th>Действие</th>
                </tr>
                <?php
                
                    foreach($battles as $key => $val) {
                        echo "<tr>";
                        foreach($val as $key => $val) {
                            if ($key == 'id') {
                                echo "<td>";
                                    echo "<form method = 'post' action = 'requests.php'>";
                                    echo "<input type='hidden' value='" . $val . "'></input>";
                                    echo "<input type='submit' value='A'>";
                                    echo "</form>";
                                echo "</td>";
                            }
                            else {
                                echo "<td>" . date_check($val, '') . "</td>";
                            };
                        };
                        echo "</tr>";
                    };
                
                ?>
                
            </table>
        </form>
        
        
    </div>
 
</div>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2014, 22:25
Ответы с готовыми решениями:

Правильное разделение кода
Привет. Решил написать небольшой проект высокой нагруженности. На данный момент я отделяю код от шаблона. То есть есть 2 файла...

Правильное составление парсера с регулярками
Всем привет! Я задумался написать парсер и нашел в сети образец именно того, что мне нужно, но как оказалось он и как пример сейчас не...

Составление кода php для запроса mysql
У меня есть запрос: UPDATE `u954626759_dbhv`.`dbhv` SET `name` = '111', `year` = '111', `status` = 'Не смотрел' WHERE `dbhv`.`id`...

4
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
17.05.2014, 13:03
тут много разных вариантов, рассмотрим часть из них:
1. Использования шаблонизатора
2. Использование php как шаблонизатора
3. Всё в одном

1. Шаблонизатор создали для того, чтобы дизайнер и программист меньше пересекались в коде, это очень удобно если работаешь в большой команде, примеры файлов использующих шаблонизатор Smarty:

file.php:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
require_once('smarty/Smarty.class.php');
$smarty = new Smarty();     
$smarty->template_dir = 'templates';
$smarty->compile_dir  = 'templates_c';      
 
$smarty->assign('word', 'Hello world!!!');     
 
$smarty->display('file.tpl');
?>
файл с дизайном file.tpl:
HTML5
1
2
3
4
5
6
7
8
<html>
<head>
<title>Мой первый сайт</title>
</head>
<body>
{$word}
</body>
</html>
Плюсы:
-Просто
-Красиво
Минусы:
-нужно выучить синтаксис Smarty
-шаблонизатор заметно замедляет код

2. Использование php как шаблонизатора.
Тут еще попроще:
file.php:
PHP
1
2
3
4
<?php
$word='Hello world';
include_once 'file.tpl';
?>
file.tpl:
HTML5
1
2
3
4
5
6
7
8
<html>
<head>
<title>Мой первый сайт</title>
</head>
<body>
<?=$word?>
</body>
</html>
<?=$word?> - это тоже самое что и <?php echo $word; ?>
Плюсы:
-Тоже довольно понятно
-Минимум потерь в скорости работы
Минусы:
-Нужно чуть больше писать и подобные конструкции немного усложняют чтение:
PHP
1
2
3
4
5
6
7
<? if($a!=1){ ?>
МНОГО HTML КОДА
<? }elseif($=1){ ?>
МНОГО HTML КОДА
<? }else{ ?>
МНОГО HTML КОДА
<? } ?>
3. Всё в одном, тут что и во втором варианте, но без инклуда:
file.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$word='Hello world';
?>
 
<html>
<head>
<title>Мой первый сайт</title>
</head>
<body>
<?=$word?>
</body>
</html>
Плюсы:
-не надо разрываться на 2 файла
-еще капельку быстрее работает
Минусы как и в пункте 2

Я лично пока пользуюсь 3 вариантом т.к. файлы пока не сильно объемные, позже перееду на 2-ой вариант, и надо будет всего вставить инклуд и разделить текст на 2 файла, а это дело 2 минут.
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
17.05.2014, 13:40  [ТС]
Спасибо. Я пока тоже останавливаюсь на втором варианте с конструкцией
PHP
1
2
3
4
5
6
7
<? if($a!=1){ ?>
МНОГО HTML КОДА
<? }elseif($=1){ ?>
МНОГО HTML КОДА
<? }else{ ?>
МНОГО HTML КОДА
<? } ?>
А если инклудом придется подключать много файлов - это не будет сильно затратно по скорости?
0
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
17.05.2014, 13:45
ну блин, скорость измеряется в милисекундах, каждый инклуд это 0,1-1 милисекунда, если у тебя сайт с посещаемостью >100 пользователей в секунду то это затратно.
p.s. я по поводу скорости параноик)
1
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
17.05.2014, 16:04  [ТС]
Ясно, будем пытаться комбинировать) Спасибо за помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2014, 16:04
Помогаю со студенческими работами здесь

Правильное составление функции
Помогите разобраться с функцией) простые я более менее понял ) а вот с более сложными проблема, вот код , тут меняется только кол-во...

Правильное составление запроса к БД
Добрый день! Передо мной стал такой вопрос. Есть две таблицы course и course_section. В первой есть поле id, name, a во второй id,...

Правильное составление резюме
Всем привет! Хочу найти работу разработчика на c# Вот думаю, надо ли в резюме указывать ссылка на гитхаб? если да то какие проекты...

Правильное составление объявлений
Эффективное объявление в Бегуне будет же настолько эффективно в Я.д ?

Правильное составление программы
Здравствуйте, форумчане! Представляю вашему вниманию свою первую программулину на gpss...я ее вроде решил, но не пойму правильно ли?=) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru