Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
1

Генератор результатов футбольных матчей

02.12.2016, 06:56. Просмотров 7664. Ответов 43
Метки нет (Все метки)

Здравствуйте, хочу попросить помощи в написание/ресурсов/советов одного интересующего меня php кода (Таком себе упрощенному генераторе футбольных матчей)
Сам я неплохо разбираюсь в html, css и веб графике, но php пока весьма трудный для меня. Перейду непосредственно к делу. За помощь, готов помочь в графике
Мне нужен код, чтобы я его залил на хост и он отображался следующим образом:
Простая страничка с регистрацией и формой входа(логин, пароль), после авторизации появляются ячейки (Возможно чат для зарегистрированных пользователей, но это абсолютно не обязательно), который подлежат заполнению:
Эмблема и Название команды --- Эмблема и Название команды (Выбор уже из существующих вариантов)
1 показатель --- 1 показатель
2 показатель --- 2 показатель
3 показатель --- 3 показатель
4 показатель --- 4 показатель
5 показатель --- 5 показатель
6 показатель --- 6 показатель
7 показатель --- 7 показатель
Начать генерацию

Как должна происходить генерация? (Определение победителя по голам)
- Есть 7 показателей (которые я ввожу сам, без всяких баз данных)
- Должен быть небольшой процент того, что даже если одна из команд сильнее, то она может проиграть, то есть такая себе рандомность, но процент должен быть не большим
- Результат должен выводиться в голах (Очень важно)

После чего сам результат должен быть опубликован на отдельной страничке, вместе с эмблемами, названием команд и результатом самого матча.

Что касается оформления, то тут я справлюсь, а вот структурно это всё написать, не в силах. Это не коммерческий проект, просто с друзьями любим, проводить различного рода карьеры по футболу и хочется свою закрытую комнатку. Простите, если где-то наглею. Понимаю, что можно постепенно освоить этот язык и не отнимать чье-то время, но надеюсь найти энтузиастов и отзывчивых людей.

P.S. Со временем обязательно выучу язык
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2016, 06:56
Ответы с готовыми решениями:

Генератор футбольных матчей
Здравствуйте создал сайт на ucoz'е собираюсь из него делать on-line футбольного менеджера вот...

генератор матчей
Вобщем я не силен в програмирование, но мне надо сделать одно делj: Генератор Матчей: жилательно...

Написать программу результатов матчей футбольных команд (Используя контейнер map)
Помогите пожалуйста, никогда не имела дела с контейнерами((( Задание: футбольные команды (через...

БД футбольных матчей
В MS Access создана БД, в которой хранятся результаты проведенных матчей. Матч проводится путем...

43
Заблокирован
02.12.2016, 08:32 2
Интересная задача,сделал из любви к программированию

16 команд взял из инета,и рандом из 16 вариантов голов

4 пункта выбора

Тебе код или ссылку?
0
Миниатюры
Генератор результатов футбольных матчей  
Заблокирован
02.12.2016, 08:45 3
Покурил подумал,наверно и то и другое

Дам и код и ссылку:

PHP
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
 <?
 //проверка пароля
if($del_slovo3=='Генерация') {   setcookie ("del_slovo3", $del_slovo3, time() + 60*60*24*2); } else  if(isset($_COOKIE['del_slovo3']))  { echo '<br>считалось='.$del_slovo3; } ?>
 
 
 <? if($del_slovo3<>'Генерация') { ?>
 <br><br><br><br><br><br><br><br>
 <center>
<FORM method=post action="futbol.php">
<input type="text" name="del_slovo3" class=button size=90% maxlength=10 value='Пароль - "Генерация"'>
  </form>
    </center>                       <? } 
                           
 
 if($del_slovo3=='Генерация') {
 
//проверка пароля
?>
 
 
 
 
 
 
 
 
 
 
<center>
<br>
 
<table width=80%><tr><td class=td_center width=100%><center>
 
 
<br>
<strong><font size=4>Генерация результатов футбольного матча</font></strong>
<br>
<font size=2>В генерации прописаны 16 футбольных команд и 16 вариантов забитых голов</font>   
    <br><br>
<form  name="formtext" method='post' action=futbol.php>
    
&nbsp;&nbsp;<input type='submit' class="button" value='                   Обновить окно                    '>
</form>
 
 
</td></tr></table>
 
 
 
 
 
 
<table width=80%>
    
    <tr>
    
  <td class=td_center width=25% ><center><font size=4><strong><br>Амкар Пермь<br><br></strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>ЦСКА Моска</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Динамо Москва</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Краснодар</strong></font></center></td>
 
</tr>
 
    <tr>
    
  <td class=td_center width=25% ><center><font size=4><strong><br>Кубань<br><br></strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Локомотив Москва</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Ростов</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Урал</strong></font></center></td>
 
</tr>
    <tr>
    
  <td class=td_center width=25% ><center><font size=4><strong><br>Рубин Казань<br><br></strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Уфа</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Арсенал</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Спартак Москва</strong></font></center></td>
 
</tr>
    <tr>
    
  <td class=td_center width=25% ><center><font size=4><strong><br>Мордовия<br><br></strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Терек Грозный</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Торпедо</strong></font></center></td>
<td class=td_center width=25% ><center><font size=4><strong>Зенит С.-Петербург</strong></font></center></td>
 
</tr>
 
</table>
 
 
 
<table width=80%><tr><td class=td_center width=50% align=center><centerl>
<br>
 
<font size=2><em>Выберите из 16 команд и из 16 возможных голов</em></font>
<br>
<br><form  name="formtext" method='post' action=futbol.php?res=ok>
 
 
<select  class="button" size="1" name='variant1'>
    <option class="button" value='A1'>Амкар Пермь</option>
    <option class="button" value='A2'>ЦСКА Москва</option>
 <option  class="button" value='A3'>Динамо Москва</option>
    <option class="button" value='A4'>Краснодар</option>
 <option  class="button" value='A5'>Кубань</option>
 <option  class="button" value='A6'>Локомотив Моква</option>
 <option  class="button" value='A7'>Ростов</option>
 <option  class="button" value='A8'>Урал</option>
 <option  class="button" value='A9'>Рубин Казань</option>
 <option  class="button" value='A10'>Уфа</option>
 <option  class="button" value='A11'>Арсенал</option>
 <option  class="button" value='A12'>Спартак Москва</option>
 <option  class="button" value='A13'>Мордовия</option>
 <option  class="button" value='A14'>Терек Грозный</option>
 <option  class="button" value='A15'>Торпедо</option>
 <option  class="button" value='A16'>Зенит С.-Петербург</option>
  </select>
 
<select  class="button" size="1" name='variant2'>
    <option class="button" value='A1'>Амкар Пермь</option>
    <option class="button" value='A2'>ЦСКА Москва</option>
 <option  class="button" value='A3'>Динамо Москва</option>
    <option class="button" value='A4'>Краснодар</option>
 <option  class="button" value='A5'>Кубань</option>
 <option  class="button" value='A6'>Локомотив Моква</option>
 <option  class="button" value='A7'>Ростов</option>
 <option  class="button" value='A8'>Урал</option>
 <option  class="button" value='A9'>Рубин Казань</option>
 <option  class="button" value='A10'>Уфа</option>
 <option  class="button" value='A11'>Арсенал</option>
 <option  class="button" value='A12'>Спартак Москва</option>
 <option  class="button" value='A13'>Мордовия</option>
 <option  class="button" value='A14'>Терек Грозный</option>
 <option  class="button" value='A15'>Торпедо</option>
 <option  class="button" value='A16'>Зенит С.-Петербург</option>
  </select>
<br><br>
<select  class="button" size="1" name='goly1'>
    <option class="button" value='B1'>1 гол</option>
    <option class="button" value='B2'>2 гола</option>
 <option  class="button" value='B3'>3 гола</option>
    <option class="button" value='B4'>4 гола</option>
 <option  class="button" value='B5'>5 голов</option>
 <option  class="button" value='B6'>6 голов</option>
 <option  class="button" value='B7'>7 голов</option>
 <option  class="button" value='B8'>8 голов</option>
 <option  class="button" value='B9'>9 голов</option>
 <option  class="button" value='B10'>10 голов</option>
 <option  class="button" value='B11'>11 голов</option>
 <option  class="button" value='B12'>12 голов</option>
 <option  class="button" value='B13'>13 голов</option>
 <option  class="button" value='B14'>14 голов</option>
 <option  class="button" value='B15'>15 голов</option>
 <option  class="button" value='B16'>16 голов</option>
  </select>
 
<select  class="button" size="1" name='goly2'>
    <option class="button" value='B1'>1 гол</option>
    <option class="button" value='B2'>2 гола</option>
 <option  class="button" value='B3'>3 гола</option>
    <option class="button" value='B4'>4 гола</option>
 <option  class="button" value='B5'>5 голов</option>
 <option  class="button" value='B6'>6 голов</option>
 <option  class="button" value='B7'>7 голов</option>
 <option  class="button" value='B8'>8 голов</option>
 <option  class="button" value='B9'>9 голов</option>
 <option  class="button" value='B10'>10 голов</option>
 <option  class="button" value='B11'>11 голов</option>
 <option  class="button" value='B12'>12 голов</option>
 <option  class="button" value='B13'>13 голов</option>
 <option  class="button" value='B14'>14 голов</option>
 <option  class="button" value='B15'>15 голов</option>
 <option  class="button" value='B16'>16 голов</option>
  </select>
 
<br><br>
 &nbsp;&nbsp;<input type='submit' class="button" value='            Запустить генерацию            '>
</form>
 
</td></tr></table>
 
 
 
 
 
 
 
<table width=80%><tr><td class=td_center width=100%><center>
 
<br>
<br><br>
  
   
   <?
   
   if($res=='ok') {
       
       
       if($variant1=='A1') { $komanda='Амкар Пермь'; }
       if($variant1=='A2') { $komanda='ЦСКА Москва'; }
       if($variant1=='A3') { $komanda='Динамо Москва'; }
       if($variant1=='A4') { $komanda='Краснодар'; }
       if($variant1=='A5') { $komanda='Кубань'; }
       if($variant1=='A6') { $komanda='Локомотив Москва'; }
       if($variant1=='A7') { $komanda='Ростов'; }
       if($variant1=='A8') { $komanda='Урал'; }
       if($variant1=='A9') { $komanda='Рубин Казань'; }
       if($variant1=='A10') { $komanda='Уфа'; }
       if($variant1=='A11') { $komanda='Арсенал'; }
       if($variant1=='A12') { $komanda='Спартак Москва'; }
       if($variant1=='A13') { $komanda='Мордовия'; }
       if($variant1=='A14') { $komanda='Терек Грозный'; }
       if($variant1=='A15') { $komanda='Торпедо'; }
       if($variant1=='A16') { $komanda='Зенит С.-Петербург'; }
       
        if($variant2=='A1') { $komanda2='Амкар Пермь'; }
       if($variant2=='A2') { $komanda2='ЦСКА Моска'; }
       if($variant2=='A3') { $komanda2='Динамо Москва'; }
       if($variant2=='A4') { $komanda2='Краснодар'; }
       if($variant2=='A5') { $komanda2='Кубань'; }
       if($variant2=='A6') { $komanda2='Локомотив Москва'; }
       if($variant2=='A7') { $komanda2='Ростов'; }
       if($variant2=='A8') { $komanda2='Урал'; }
       if($variant2=='A9') { $komanda2='Рубин Казань'; }
       if($variant2=='A10') { $komanda2='Уфа'; }
       if($variant2=='A11') { $komanda2='Арсенал'; }
       if($variant2=='A12') { $komanda2='Спартак Москва'; }
       if($variant2=='A13') { $komanda2='Мордовия'; }
       if($variant2=='A14') { $komanda2='Терек Грозный'; }
       if($variant2=='A15') { $komanda2='Торпедо'; }
       if($variant2=='A16') { $komanda2='Зенит С.-Петербург'; }
       
       if($goly1=='B1') { $gol_random='1'; }
       if($goly1=='B2') { $gol_random='2'; }
       if($goly1=='B3') { $gol_random='3'; }
       if($goly1=='B4') { $gol_random='4'; }
       if($goly1=='B5') { $gol_random='5'; }
       if($goly1=='B6') { $gol_random='6'; }
       if($goly1=='B7') { $gol_random='7'; }
       if($goly1=='B8') { $gol_random='8'; }
       if($goly1=='B9') { $gol_random='9'; }
       if($goly1=='B10') { $gol_random='10'; }
       if($goly1=='B11') { $gol_random='11'; }
       if($goly1=='B12') { $gol_random='12'; }
       if($goly1=='B13') { $gol_random='13'; }
       if($goly1=='B14') { $gol_random='14'; }
       if($goly1=='B15') { $gol_random='15'; }
       if($goly1=='B16') { $gol_random='16'; }
       
         if($goly2=='B1') { $gol_random2='1'; }
       if($goly2=='B2') { $gol_random2='2'; }
       if($goly2=='B3') { $gol_random2='3'; }
       if($goly2=='B4') { $gol_random2='4'; }
       if($goly2=='B5') { $gol_random2='5'; }
       if($goly2=='B6') { $gol_random2='6'; }
       if($goly2=='B7') { $gol_random2='7'; }
       if($goly2=='B8') { $gol_random2='8'; }
       if($goly2=='B9') { $gol_random2='9'; }
       if($goly2=='B10') { $gol_random2='10'; }
       if($goly2=='B11') { $gol_random2='11'; }
       if($goly2=='B12') { $gol_random2='12'; }
       if($goly2=='B13') { $gol_random2='13'; }
       if($goly2=='B14') { $gol_random2='14'; }
       if($goly2=='B15') { $gol_random2='15'; }
       if($goly2=='B16') { $gol_random2='16'; }
       
       
       echo '<br>Команда 1 - '.$komanda;
       echo '&nbsp;&nbsp;&nbsp;Команда 2 - '.$komanda2;
  
       echo '<br>Рандом из '.$gol_random.' голов';
       echo '&nbsp;&nbsp;&nbsp;Рандом из '.$gol_random2.' голов';
  
  
   echo '<br><br><font size=4><strong>Генерация матча между "'.$komanda.'" и "'.$komanda2.'"</strong></font>';
   
   
   
   $gol_result1=rand(0,$gol_random);
   $gol_result2=rand(0,$gol_random2);
   
   
   echo '<br><br><font size=2><em>Результат '.$gol_result1.'&nbsp;&nbsp;-&nbsp;&nbsp;'.$gol_result2.'</em></font>';
   
      }
   
  
   ?>
   
   <br><br><br><br><br><br><br><br><br><br>
</td></tr></table>
 
</center>
 
 
 
 
 
 
 
 
 
</font>
 
 
 
<?
// конец дел слово
 }
// конец дел слово
?>
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</center>
</td></tr></table>
futbol.php
0
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
02.12.2016, 08:48  [ТС] 4
Ух ты, красивенько. Но я чуть другое имел ввиду, допустим эти 7 показателей это характеристики команды: скорость, удар, пас, техника, защита, физика и сыгранность(и чтобы я показатели сам записывал). И по этим критериям решаются забитые и пропущенные голы. Или я уже чересчур трудное спрашиваю?
0
Заблокирован
02.12.2016, 10:48 5
Zloben, можно сделать...

че должно быть в вариантах "скорость,удар,пас"...?

7 характеристик * 7 параметров ... это прописывать ~50 пунктов только на хтмл

ну например напиши буквами эти 7*7 вариантов,че там должно быть

1.Скорость = 20 км\ч? ))
2.40 км\ч? )
3.

1.Удар = че?
2.
3.

Я не увлекаюсь футболом,эти взаимосвязи просто надо будет перемножать на php ,
то есть если все 7 характеристик = 1 параметр - то значит команда проиграет и забьет 0 голов,просто перемножать буду

А если у команды выберешь 7 характеристик самые сильные = 7 вариант - то команда выиграет

там простая функция ваще...

Добавлено через 14 минут
Zloben,Покурил подумал...

Может ниче умного не указывать и просто писать "Скорость=1","Удар=2","Пас=3" ?

Но с другой стороны,надо как то обозначить,типа "Сила удара=Оценка 7","Ловкость паса=Оценка 4"

Мне эти варианты надо,а программировать на пхп там ваще строчек 10 потом
0
1648 / 988 / 369
Регистрация: 13.06.2013
Сообщений: 3,395
02.12.2016, 11:43 6
Ocrex, код будет в несколько раз короче если использовать массивы и циклы.
А также вместо промежуточных ключей типа B1
HTML5
1
<option class="button" value='B1'>1 гол</option>
можно передать сразу нужное значение
HTML5
1
<option class="button" value='1'>1 гол</option>
0
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
02.12.2016, 12:18  [ТС] 7
Я не знаю как там при подсчёте, но должно быть примерно так:
1 Команда - 2 Команда, потом я начинаю вводить характеристики команд. Максимальный уровень каждого показателя 1100 балов, теперь как пример:
ФК Арсенал - ФК Динамо
Скорость: 836-765
Удар: 905-843
Пас: 456-884
Техника: 567-863
Защита: 658-635
Физика: 782-659
Сыгранность: 300-600

Начать генерацию (Должен быть небольшой процент случайного результата, чтобы даже слабая команда могла редко выиграть у сильной)

После чего должен появится счёт:
Там ФК Арсенал 2-3 ФК Динамо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16818 / 6696 / 880
Регистрация: 12.06.2012
Сообщений: 19,968
02.12.2016, 14:32 8
Кликните здесь для просмотра всего текста
Цитата Сообщение от Ocrex Посмотреть сообщение
PHP
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
       if($variant1=='A1') { $komanda='Амкар Пермь'; }
       if($variant1=='A2') { $komanda='ЦСКА Москва'; }
       if($variant1=='A3') { $komanda='Динамо Москва'; }
       if($variant1=='A4') { $komanda='Краснодар'; }
       if($variant1=='A5') { $komanda='Кубань'; }
       if($variant1=='A6') { $komanda='Локомотив Москва'; }
       if($variant1=='A7') { $komanda='Ростов'; }
       if($variant1=='A8') { $komanda='Урал'; }
       if($variant1=='A9') { $komanda='Рубин Казань'; }
       if($variant1=='A10') { $komanda='Уфа'; }
       if($variant1=='A11') { $komanda='Арсенал'; }
       if($variant1=='A12') { $komanda='Спартак Москва'; }
       if($variant1=='A13') { $komanda='Мордовия'; }
       if($variant1=='A14') { $komanda='Терек Грозный'; }
       if($variant1=='A15') { $komanda='Торпедо'; }
       if($variant1=='A16') { $komanda='Зенит С.-Петербург'; }
       
        if($variant2=='A1') { $komanda2='Амкар Пермь'; }
       if($variant2=='A2') { $komanda2='ЦСКА Моска'; }
       if($variant2=='A3') { $komanda2='Динамо Москва'; }
       if($variant2=='A4') { $komanda2='Краснодар'; }
       if($variant2=='A5') { $komanda2='Кубань'; }
       if($variant2=='A6') { $komanda2='Локомотив Москва'; }
       if($variant2=='A7') { $komanda2='Ростов'; }
       if($variant2=='A8') { $komanda2='Урал'; }
       if($variant2=='A9') { $komanda2='Рубин Казань'; }
       if($variant2=='A10') { $komanda2='Уфа'; }
       if($variant2=='A11') { $komanda2='Арсенал'; }
       if($variant2=='A12') { $komanda2='Спартак Москва'; }
       if($variant2=='A13') { $komanda2='Мордовия'; }
       if($variant2=='A14') { $komanda2='Терек Грозный'; }
       if($variant2=='A15') { $komanda2='Торпедо'; }
       if($variant2=='A16') { $komanda2='Зенит С.-Петербург'; }
       
       if($goly1=='B1') { $gol_random='1'; }
       if($goly1=='B2') { $gol_random='2'; }
       if($goly1=='B3') { $gol_random='3'; }
       if($goly1=='B4') { $gol_random='4'; }
       if($goly1=='B5') { $gol_random='5'; }
       if($goly1=='B6') { $gol_random='6'; }
       if($goly1=='B7') { $gol_random='7'; }
       if($goly1=='B8') { $gol_random='8'; }
       if($goly1=='B9') { $gol_random='9'; }
       if($goly1=='B10') { $gol_random='10'; }
       if($goly1=='B11') { $gol_random='11'; }
       if($goly1=='B12') { $gol_random='12'; }
       if($goly1=='B13') { $gol_random='13'; }
       if($goly1=='B14') { $gol_random='14'; }
       if($goly1=='B15') { $gol_random='15'; }
       if($goly1=='B16') { $gol_random='16'; }
       
         if($goly2=='B1') { $gol_random2='1'; }
       if($goly2=='B2') { $gol_random2='2'; }
       if($goly2=='B3') { $gol_random2='3'; }
       if($goly2=='B4') { $gol_random2='4'; }
       if($goly2=='B5') { $gol_random2='5'; }
       if($goly2=='B6') { $gol_random2='6'; }
       if($goly2=='B7') { $gol_random2='7'; }
       if($goly2=='B8') { $gol_random2='8'; }
       if($goly2=='B9') { $gol_random2='9'; }
       if($goly2=='B10') { $gol_random2='10'; }
       if($goly2=='B11') { $gol_random2='11'; }
       if($goly2=='B12') { $gol_random2='12'; }
       if($goly2=='B13') { $gol_random2='13'; }
       if($goly2=='B14') { $gol_random2='14'; }
       if($goly2=='B15') { $gol_random2='15'; }
       if($goly2=='B16') { $gol_random2='16'; }
ужас какой..
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$teams = array(
    'Амкар Пермь',
    'ЦСКА Москва',
    'Динамо Москва',
    'Краснодар',
    'Кубань',
    'Локомотив Москва',
    'Ростов',
    'Урал',
    'Рубин Казань',
    'Уфа',
    'Арсенал',
    'Спартак Москва',
    'Мордовия',
    'Терек Грозный',
    'Торпедо',
    'Зенит С.-Петербург'
);
...
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<table width=80%>
    <tr>
        <?php $i = 0; $last = count($teams) - 1; foreach($teams as $team) :?>
            <td class=td_center width=25% ><center><font size=4><strong><br><?php echo $team; ?><br><br></strong></font></center></td>
            <?php if($i < $last && ++$i % 4 === 0):?>
                </tr>
                <tr>
            <?php endif;?>
        <?php endforeach;?> 
    </tr>
</table>
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<select  class="button" size="1" name='goals[variant1]'>
    <?php foreach($teams as $k => $team):?>
        <option value="<?php echo $k;?>"><?php echo $team;?></option>
    <?php endforeach;?>
</select>
...
<select  class="button" size="1" name='goals[variant2]'>
    <?php foreach($teams as $k => $team):?>
        <option value="<?php echo $k;?>"><?php echo $team;?></option>
    <?php endforeach;?>
</select>
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$goalsCnt = 16;
?>
 
<select  class="button" size="1" name='goals[goly]'>
    <?php for($i = 1; $i <= $goalsCnt; ++$i):?>
        <option class="button" value='<?php echo $i;?>'><?php echo $i;?></option>
    <?php endfor;?>
</select>
....
<select  class="button" size="1" name='goals[goly2]'>
    <?php for($i = 1; $i <= $goalsCnt; ++$i):?>
        <option class="button" value='<?php echo $i;?>'><?php echo $i;?></option>
    <?php endfor;?>
</select>
...
PHP
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
if(isset($_POST['goals']) && is_array($_POST['goals']))
{
    $data = array_map('intval', $_POST['goals']);
    if(isset($data['variant1'], $data['variant2'], $data['goly'], $data['goly2']))
    {
        if(!isset($teams[$data['variant1']]) || !isset($teams[$data['variant2']]))
        {
            //wrong team!
            $errors[] = 'Wrong team';
        }
        else
        {
            //ok
            $teamOne = $teams[$data['variant1']];
            $teamTwo = $teams[$data['variant2']];
        }
        
        if(($data['goly'] < 1 || $data['goly'] > $goalsCnt) ||
            ($data['goly2'] < 1 || $data['goly2'] > $goalsCnt)
        )
        {
            //wrong goal interval
            $errors[] = 'Wrong goal count';
        }
        else
        {
            //ok
        }
    }
    else
    {
        //error
        $errors[] = 'Fields are empty';
    }
}

Цитата Сообщение от Zloben Посмотреть сообщение
потом я начинаю вводить характеристики команд
вы сначала пропишите алгоритм влияния этих характеристик на конечный результат. Пока можно предложить только самый явный вариант: это когда одна команда по всем характеристикам слабее другой. И в этом случае, с учетом процента случайного результата, можно сделать как-то так
PHP
1
2
$percent = 10;
$strongIsLose = !mt_rand(0, $percent);
по остальному алгоритм составить невозможно, т.к. не описаны правила: к примеру, у одной команды атака 70, у другой 50, а защита у первой 10, а у второй 60. Кто должен выиграть с бОльшей вероятностью?
0
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
02.12.2016, 15:46  [ТС] 9
А если сделать так:

Техника , Скорость и Удар отвечают за атаку
Пас, Защита и Физика отвечают за защиту
Сыгранность в целом влияет на все характеристики.

Теперь на примере
ФК Арсенал - ФК Динамо
Скорость: 36-65
Удар: 95-43
Техника: 67-63

Пас: 56-84
Защита: 58-35
Физика: 82-59

Сыгранность: 30-60

Максимальная сила Атаки/Защиты = 300. Максимальная сыгранность = 100.
Атака (Скорость + Удар + Техника) Арсенала 198 - 171 Атака (Скорость + Удар + Техника) Динамо
Защита (Защита + Физика + Пас) Арсенала 196 - 178 Защита (Защита + Физика + Пас) Динамо
Сыгранность Арсенала 30-60 Сыгранность Динамо

Теперь подробнее
Допустим сначала считаем сколько забьет Арсенал (Атака 198+30%( от атаки - это сыгранность)=257,4 против защиты Динамо 178+60%=284, по разнице у Арсенала -26.6 Соответственно Арсенал по силе не должен забить, если конечно не сыграет роль % случая везения.
Теперь также считаем в другую сторону Динамо Атака 171+60%=273,6 против защиты Арсенала 196+30%=254,8, по разнице у Динамо +18,8 и соответственно Динамо с большей долей вероятности должно забить.

Реально вообще так?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16818 / 6696 / 880
Регистрация: 12.06.2012
Сообщений: 19,968
02.12.2016, 18:15 10
Лучший ответ Сообщение было отмечено Zloben как решение

Решение


PHP
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
<?php
trait ItIsMagicLol
{
    public function __call($method, $args)
    {
        if(!preg_match('~^(set|get)([_a-z0-9]+)$~', strtolower($method), $m))
            throw new Exception('AAAA, WTF method!?');
        $propName = $m[2];
        if (!property_exists($this, $propName))
            throw new Exception('AAAA, WTF property!?');
        if($m[1] == 'get')
        {
            if($args)
                throw new Exception('AAAA, WTF property args!?');
            return $this->getValue($propName);
        }
        if(count($args) !== 1)
            throw new Exception('AAAA, WTF method args!?');
        $this->$propName = $args[0];
        return $this;
    }
    private function getValue($propName) {
        $value = $this->$propName;
        return $value ? $value : 'Property "' . $propName . '" is empty';
    }
}
trait TeamInfo
{
    protected $name;
    protected $logo;
}
trait TeamSpecifics
{
    protected $technic;
    protected $speed;
    protected $shoot;
    protected $pass;
    protected $protection;
    protected $physics;
    protected $teamwork;
    
    public function getTotalAttack()
    {
        $attack = $this->getSpeed() + $this->getShoot() + $this->getTechnic();
        return $attack + ($attack / 100 * $this->getTeamwork());
    }
    public function getTotalProtection()
    {
        $protection = $this->getProtection() + $this->getPhysics() + $this->getPass();
        return $protection + ($protection / 100 * $this->getTeamwork());
    }
}
class Team
{
    use ItIsMagicLol, TeamInfo, TeamSpecifics;
    
    protected $lucky = false;
    
    public function __construct($name = null, $logo = null)
    {
        isset($name) && $this->setName($name);
        isset($logo) && $this->setLogo($logo);
    }
    public function dumpInfo()
    {
        echo str_repeat('-', 30), PHP_EOL;
        foreach($this as $k => $v)
            echo $k, ' => ', $v, PHP_EOL;
        echo str_repeat('-', 30), PHP_EOL;
    }
    public function setLucky($percent)
    {
        $this->lucky = (bool) mt_rand(0, $percent);
    }
}
class Calculate
{
    use ItIsMagicLol;
    
    protected $resultOne = 0;
    protected $resultTwo = 0;
    
    public function __construct(Team $one, Team $two, $maxGoals = 16)
    {
        return $this->calculateResult($one, $two, $maxGoals);
    }
    
    public function calculateResult(Team $one, Team $two, $maxGoals = 16)
    {
        $attackOne = $one->getTotalAttack() - $two->getTotalProtection();
        $attackTwo = $two->getTotalAttack() - $one->getTotalProtection();
        
        //clear values
        $this->resultOne = $this->resultTwo = 0;
            
        if($attackOne > 0 || $one->getLucky())
            $this->resultOne = mt_rand(0, $maxGoals);
        if($attackTwo > 0 || $two->getLucky())
            $this->resultTwo = mt_rand(0, $maxGoals);
    }
    public function getResult($format = '%d:%d') {
        return sprintf($format, $this->resultOne, $this->resultTwo);
    }
}
 
$one = new Team('ФК Арсенал');
$one->setSpeed(36)
    ->setShoot(95)
    ->setTechnic(67)
    ->setPass(56)
    ->setProtection(58)
    ->setPhysics(82)
    ->setTeamwork(30);
 
$two = new Team('ФК Динамо');
$two->setSpeed(65)
    ->setShoot(43)
    ->setTechnic(63)
    ->setPass(84)
    ->setProtection(35)
    ->setPhysics(59)
    ->setTeamwork(60);
 
echo $one->getName(), ' - ', $two->getName(), PHP_EOL;
$result = new Calculate($one, $two, 5);
echo $result->getResult(), PHP_EOL;
http://sandbox.onlinephpfuncti... 0ab51f1e3d
1
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
02.12.2016, 18:50  [ТС] 11
Круто, спасибо большое. Есть пару вопросиков.
Как сделать так, чтобы эти характеристики вводились мною не в код, а в графу как заполнение (как здесь дополнительное время http://pesway.ru/newbase/generator/generator.php)?
Можно как-то графически преобразовать скрипт, в таблицу с фоном каким-то, чтобы я потом в фш уже помудрил что-то?
И можно ли % рандома сделать менее использованным, а то по тесту уж очень сильно различаются результаты?

Огромное спасибо вам! С меня "+" и в ближайшие время символически вас финансово отблагодарю. Сейчас просто с финансами туго)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16818 / 6696 / 880
Регистрация: 12.06.2012
Сообщений: 19,968
02.12.2016, 20:21 12
Цитата Сообщение от Zloben Посмотреть сообщение
Как сделать так, чтобы эти характеристики вводились мною не в код, а в графу как заполнение
все методы а-ля
Цитата Сообщение от KOPOJI Посмотреть сообщение
setSpeed(36)
позволяют устанавливать значения для свойств. Откуда берется это изначально классу не важно - можно сделать как я, забить "жестко", можно передавать данные, введенные в форму. Попробуйте сами, если не получится, то потом как-нибудь я дополню..
Цитата Сообщение от Zloben Посмотреть сообщение
Можно как-то графически преобразовать скрипт, в таблицу с фоном каким-то, чтобы я потом в фш уже помудрил что-то?
скрипт графически преобразовывать не надо. Вывод можно сформировать в любом виде - здесь он идет только на последних трех строчках и немного в методе dumpInfo, но это так, на скорую руку, для себя..
Цитата Сообщение от Zloben Посмотреть сообщение
можно ли % рандома сделать менее использованным
можно.. Можно использовать rand вместо mt_rand, можно по другому.. Например, можно "кешировать" часть результатов. Навскидку, как-то так, например:
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
88
89
90
91
92
93
94
95
96
97
98
99
100
    public function calculateResult(Team $one, Team $two, $maxGoals = 16)
    {
        $attackOne = $one->getTotalAttack() - $two->getTotalProtection();
        $attackTwo = $two->getTotalAttack() - $one->getTotalProtection();
        
        //clear values
        $this->resultOne = $this->resultTwo = 0;
            
        if($attackOne > 0 || $one->getLucky())
            $this->resultOne = mt_rand(0, $maxGoals);
        if($attackTwo > 0 || $two->getLucky())
            $this->resultTwo = mt_rand(0, $maxGoals);
    }
PHP
88
89
90
91
92
93
94
95
96
97
98
99
100
    public function calculateResult(Team $one, Team $two, $maxGoals = 16)
    {
        $attackOne = $one->getTotalAttack() - $two->getTotalProtection();
        $attackTwo = $two->getTotalAttack() - $one->getTotalProtection();
        
        //don't clear values
        //$this->resultOne = $this->resultTwo = 0;
        
        if($attackOne > 0 || $one->getLucky())
            $this->resultOne = mt_rand(0, 1) ? $this->resultOne : mt_rand(0, $maxGoals);
        if($attackTwo > 0 || $two->getLucky())
            $this->resultTwo = mt_rand(0, 1) ? $this->resultTwo : mt_rand(0, $maxGoals);
    }
это примерно на 50 % добавит "повторов". Можно процент рандомности увеличить - чем больше второе число в первой mt_rand на строках 96 и 98, тем больше вероятность того, что количество забитых голов не изменится..

З.Ы. Не проверял
0
Заблокирован
02.12.2016, 21:21 13
Zloben, Сделал,простенькая задачка

есть 7 характеристик,и в каждой 16 параметров

если выбрать максимальные характеристики - то команда выиграет со счетом 15

с минимальными характеристиками - забьет 0 голов

надо еще результат привести в целое число

главные строки эти:
$gol_result1=$max/70-1;
$gol_result2=$max2/70-1;

можно поменять цифры

под показать не дает,много символов = 24 000,
так что вот файл .тхт: futbol1.txt

вот ссылка на страницу: futbol1.php, по умолчанию нажми "начать генерацию",и с минимальными характеристиками будет счет 0 - 0
0
Миниатюры
Генератор результатов футбольных матчей   Генератор результатов футбольных матчей  
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16818 / 6696 / 880
Регистрация: 12.06.2012
Сообщений: 19,968
03.12.2016, 01:23 14
classes.php
Кликните здесь для просмотра всего текста
PHP
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
<?php
 
trait ItIsMagicLol
{
    public function __call($method, $args)
    {
        if(!preg_match('~^(set|get)([A-Z])([_A-Za-z0-9]*)$~', $method, $m))
            throw new Exception('AAAA, WTF method!?');
        $propName = strtolower($m[2]) . $m[3];
        if (!property_exists($this, $propName))
            throw new Exception('AAAA, WTF property!?');
        if($m[1] == 'get')
        {
            if($args)
                throw new Exception('AAAA, WTF property args!?');
            return $this->getValue($propName);
        }
        if(count($args) !== 1)
            throw new Exception('AAAA, WTF method args!?');
        $this->$propName = $args[0];
        return $this;
    }
    private function getValue($propName)
    {
        $value = $this->$propName;
        return $value ? $value : 'Property "' . $propName . '" is empty';
    }
    public function setValues(array $data)
    {
        foreach($data as $k => $v)
            $this->{'set' . ucfirst($k)}($v);
    }
}
 
trait TeamInfo
{
    protected $name;
    protected $logo;
}
 
trait TeamSpecifics
{
    protected $technic;
    protected $speed;
    protected $shoot;
    protected $pass;
    protected $protection;
    protected $physics;
    protected $teamwork;
 
    public function getTotalAttack()
    {
        $attack = $this->getSpeed() + $this->getShoot() + $this->getTechnic();
        return $attack + ($attack / 100 * $this->getTeamwork());
    }
    public function getTotalProtection()
    {
        $protection = $this->getProtection() + $this->getPhysics() + $this->getPass();
        return $protection + ($protection / 100 * $this->getTeamwork());
    }
}
 
class Team
{
    protected $lucky = false;
    protected $maxgoals = MAX_GOALS_CNT;
 
    use ItIsMagicLol, TeamInfo, TeamSpecifics;
 
    public function __construct($name = null, $logo = null)
    {
        isset($name) && $this->setName($name);
        isset($logo) && $this->setLogo($logo);
    }
    public function dumpInfo()
    {
        echo str_repeat('-', 30), PHP_EOL;
        foreach($this as $k => $v)
            echo $k, ' => ', (is_bool($v) ? ($v ? 'Y' : 'N') : $v), PHP_EOL;
        echo str_repeat('-', 30), PHP_EOL;
    }
    public function setLucky($percent)
    {
        $this->lucky = (bool) mt_rand(0, $percent);
    }
}
 
class Calculate
{
    use ItIsMagicLol;
 
    protected $resultOne = 0;
    protected $resultTwo = 0;
 
    public function __construct(Team $one, Team $two)
    {
        return $this->calculateResult($one, $two);
    }
 
    public function calculateResult(Team $one, Team $two)
    {
        $attackOne = $one->getTotalAttack() - $two->getTotalProtection();
        $attackTwo = $two->getTotalAttack() - $one->getTotalProtection();
 
        //don't clear values
        //$this->resultOne = $this->resultTwo = 0;
 
        if($attackOne > 0 || $one->getLucky())
            $this->resultOne = rand(0, 1) ? $this->resultOne : rand(0, $one->getMaxgoals());
        if($attackTwo > 0 || $two->getLucky())
            $this->resultTwo = rand(0, 1) ? $this->resultTwo : rand(0, $two->getMaxgoals());
    }
    public function getResult($format = '%d:%d')
    {
        return sprintf($format, $this->resultOne, $this->resultTwo);
    }
    public function getResultFirst()
    {
        return (int) $this->resultOne;
    }
    public function getResultSecond()
    {
        return (int) $this->resultTwo;
    }
}

config.php
Кликните здесь для просмотра всего текста
PHP
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
<?php
$teams = array(
    'Амкар Пермь',
    'ЦСКА Москва',
    'Динамо Москва',
    'Краснодар',
    'Кубань',
    'Локомотив Москва',
    'Ростов',
    'Урал',
    'Рубин Казань',
    'Уфа',
    'Арсенал',
    'Спартак Москва',
    'Мордовия',
    'Терек Грозный',
    'Торпедо',
    'Зенит С.-Петербург'
);
 
$props = array(
    'technic' => 'Техника',
    'speed' => 'Скорость',
    'shoot' => 'Удар',
    'pass' => 'Пас',
    'protection' => 'Защита',
    'physics' => 'Физика',
    'teamwork' => 'Сыгранность',
);
 
defined('MAX_LEVEL') or define('MAX_LEVEL', 1100);
defined('MAX_GOALS_CNT') or define('MAX_GOALS_CNT', 16);
 
$formTeams = array(
    'teamOne' => 'Команда 1',
    'teamTwo' => 'Команда 2',
);

result.php
Кликните здесь для просмотра всего текста
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
<?php
 
require_once './classes.php';
 
$errors = array();
 
$i = 0;
foreach($formTeams as $team => $label)
{
    if(!isset($_POST[$team]) || !is_array($_POST[$team]))
    {
        $erros[] = 'Wrong data (' . $label . ')';
        break;
    }
    $data[$i] = array_map('intval', $_POST[$team]);
 
    if(!isset($data[$i]['name'], $teams[$data[$i]['name']]))
    {
        //wrong team!
        $errors[] = 'Wrong team (' . $label . ')';
        break;
    }
    //....
    ++$i;
}
 
if(count($data) !== 2)
    $errors[] = 'Wrong team count';
 
if($data[0]['name'] == $data[1]['name'])
{
    $errors[] = 'The team can not play with herself';
}
 
if(!empty($errors))
{
    echo '<div class="error">', join('<br>', $errors), '</div>';
}
else
{
    //first team
    $first = new Team($teams[$data[0]['name']]);
    $first->setLucky(2);
    foreach($data[0] as $prop => $value)
        if($prop != 'name') //name set from $teams
            $first->{'set' . ucfirst($prop)}($value);
 
    //second team
    $second = new Team($teams[$data[1]['name']]);
    $second->setLucky(10);
    foreach($data[1] as $prop => $value)
        if($prop != 'name') //name set from $teams
            $second->{'set' . ucfirst($prop)}($value);
 
    //echo '<pre>';
    //$first->dumpInfo();
    //$second->dumpInfo();
    //echo '</pre>';
 
 
    $result = new Calculate($first, $second);
 
    ?>
    <div class="success">
        Результаты матча между "<?php echo $first->getName();?>" и "<?php echo $second->getName();?>":<br>
        Итоговый счет: <b><?php echo $result->getResultFirst();?> - <?php echo $result->getResultSecond();?></b>
    </div>
    <?php
}

index.php
Кликните здесь для просмотра всего текста
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Football?</title>
    <link href="./styles.css" rel="stylesheet" type="text/css" media="all">
</head>
<body>
 
    <?php require_once './config.php'; ?>
 
    <div class="container">
        <table width=100%>
            <tr>
                <?php $i = 0; $last = count($teams) - 1; foreach($teams as $team) :?>
                    <td class=td_center width=25% ><center><font size=4><strong><br><?php echo $team; ?><br><br></strong></font></center></td>
                    <?php if($i < $last && ++$i % 4 === 0):?>
                        </tr>
                        <tr>
                    <?php endif;?>
                <?php endforeach;?>
            </tr>
        </table>
        <form method="post">
            <?php foreach($formTeams as $teamName => $teamLabel):?>
                <fieldset>
                    <legend><?php echo $teamLabel;?></legend>
                    <div class="row">
                        <div class="name">Команда:</div>
                        <div class="value">
                            <select  class="button" size="1" name='<?php echo $teamName;?>[name]'>
                                <?php foreach($teams as $k => $team):?>
                                    <option value="<?php echo $k;?>"<?php if(isset($_POST[$teamName]['name']) && $_POST[$teamName]['name'] == $k){?> selected<?}?>><?php echo $team;?></option>
                                <?php endforeach;?>
                            </select>
                        </div>
                    </div>
 
                    <?php foreach($props as $name => $label) : ?>
                        <div class="row">
                            <div class="name"><?php echo $label; ?>:</div>
                            <div class="value">
                                <input type="number" name="<?php echo $teamName;?>[<?php echo $name;?>]" min="0" max="<?php echo $maxLevel;?>"
                                    value="<?php echo (int) (isset($_POST[$teamName][$name]) ? $_POST[$teamName][$name] : $maxLevel / 2); ?>">
                            </div>
                        </div>
                    <?php endforeach; ?>
 
                    <div class="row">
                        <div class="name">Максимальное количество голов:</div>
                        <div class="value">
                            <select  class="button" size="1" name='<?php echo $teamName;?>[maxgoals]'>
                                <?php for($i = 1; $i <= MAX_GOALS_CNT; ++$i):?>
                                    <option class="button" value='<?php echo $i;?>'<?php if(isset($_POST[$teamName]['maxgoals']) && $_POST[$teamName]['maxgoals'] == $i){?> selected<?}?>>
                                        <?php echo $i;?>
                                    </option>
                                <?php endfor;?>
                            </select>
                        </div>
                    </div>
                </fieldset>
            <?php endforeach;?>
            <br>
            <input type="submit" value="Начать генерацию">
        </form>
 
        <?php if(empty($_POST)) :?>
            Заполните поля необходимыми значениями и нажмите кнопку "Начать генерацию"
        <?php else:
            require_once './result.php';
        endif; ?>
 
    </div>
</body>
</html>

styles.css
Кликните здесь для просмотра всего текста
CSS
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
.container {
    text-align: center;
    color: #555;
}
fieldset {
    width: 20%;
    display: inline-block;
    text-align: justify;
}
legend {
    text-align: center;
    font-weight: bold;
    color: green;
    text-transform: uppercase;
    font-size: 1.2em;
}
.row {
    clear: both;
}
.name, .value {
    display: inline-block;
}
.name {
    float: left;
    margin-top: 3%;
}
.value {
    float: right;
}
input, select {
    padding: 5px;
    margin: 5px;
}
select, input[type="submit"] {
    cursor: pointer;
}
.success, .error {
    font-size: 18px;
}
.success b {
    font-weight: bold;
    color: green;
}
.success {
    color: #333;
}
.error {
    color: red;
}

Сохраняете файлы с таким же названием, как написано, все в одной папке. Запускаете index.php
Стили поправите сами, я по мелочам только вид поправил, все это выглядит в таком виде
Генератор результатов футбольных матчей
0
Заблокирован
03.12.2016, 01:53 15
KOPOJI, Зачёт,я только потом обратил внимание,что он написал "буду сам вводить названия команд"...

Я удалил эти названия из инета,и сделал поля ввода


Потом записываю результат в файл itogi.db ,и потом считываю тут же

Еще файл "итоги.дб" считывается на главной странице index.php и там же чат,как просил автор темы

Я только потом заметил,что ему надо показывать результаты на отдельной странице

Zloben, хочешь качай архив,не хочешь пускай висит страница,может потом че допишу...

KOPOJI,он писал не знает php ,вряд ли разберется с установкой кода на свой сайт

Прикольная задача,классно было заниматься этим )
0
Миниатюры
Генератор результатов футбольных матчей  
Заблокирован
03.12.2016, 02:09 16
KOPOJI, прикольно )) , и тебе и мне надо доделать пример

у нас наоборот,у меня нет ввода цифр характеристик ,а у тебя нет ввода названий команд))

я отдохну и допишу ввод цицр,версию 4 туда выложу

вот:
Я сразу начинаю анализировать:
1.Если в твои поля ввода ввести не цифры а буквы
2.Если ввести отрицательное число
3.Если ввести сразу цифру 245 000

4.Если поле вода пустое

Стоит защита?
0
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
03.12.2016, 02:38  [ТС] 17
Ух ты, ребята, это именно то, что я хотел, просто шикарно, спасибо вам большое. Честно говоря не ожидал, что кто-то поможет)
Вы только подскажите что именно мне устанавливать? Я так понял генератор у вас один, только оформление разное.
Мне по сути залить надо всё на хост, я так понял.

Добавлено через 20 минут
И ещё вопросик, а как сделать закрытый доступ к этой странице, чтобы допустим только с паролем можно было зайти. Очень легкую авторизацию.

Если у меня возникнут ещё идёи как усовершенствовать, можно будет вас попросить. Или я уже чертовски надоел вам?)

Добавлено через 2 минуты
Если быть точнее, то закрытый доступ к страничке генерации, а вот чтобы результаты могли видеть и другие.
0
Заблокирован
03.12.2016, 02:46 18
Zloben, мои страницы генерации под паролем,пароль там открыто написан и хранится дня на 4,через сессии "куки"

Так что мои страницы генерации имеют пароль,тебе просто надо в коде стереть со страницы futbol2.php пароль озвученный,и потом переписать в двух местах пароль,какой тебе надо

мой архив должен заработать автоматом на хостинге с php ,попробуй разархивировать папку и потом запустить страницу
futbol/index.php

и чат вроде прописан без указателей на мой домен,должен тоже заработать сразу

и в итоге,я не буду прописывать поля ввода на 1100 .... моих 16 пунктов достаточно...но можно переделать так: пункт 1 - 100 , пункт 4 - 400 ,пункт 11 - 1100

Добавлено через 1 минуту
Цитата Сообщение от Zloben Посмотреть сообщение
Добавлено через 2 минуты
Если быть точнее, то закрытый доступ к страничке генерации, а вот чтобы результаты могли видеть и другие.
у меня это сделано ... просто отредактируй пароль на странице futbol2.php
0
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 39
03.12.2016, 02:54  [ТС] 19
Хорошо, спасибо) Я буду дома в воскресенье и обязательно займусь установкой, если что напишу)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16818 / 6696 / 880
Регистрация: 12.06.2012
Сообщений: 19,968
03.12.2016, 12:25 20
Цитата Сообщение от Ocrex Посмотреть сообщение
а у тебя нет ввода названий команд
это поправить просто. Заменить select на input. Так код в итоге даже сократится..
index.php
Кликните здесь для просмотра всего текста
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Football?</title>
    <link href="./styles.css" rel="stylesheet" type="text/css" media="all">
</head>
<body>
 
    <?php require_once './config.php'; ?>
 
    <div class="container">
        <form method="post">
            <?php foreach($formTeams as $teamName => $teamLabel):?>
                <fieldset>
                    <legend><?php echo $teamLabel;?></legend>
                    <div class="row">
                        <div class="name">Команда:</div>
                        <div class="value">
                            <input type="text" name='<?php echo $teamName;?>[name]' value="<?php echo isset($_POST[$teamName]['name']) ? htmlspecialchars($_POST[$teamName]['name']) : '';?>">
                        </div>
                    </div>
 
                    <?php foreach($props as $name => $label) : ?>
                        <div class="row">
                            <div class="name"><?php echo $label; ?>:</div>
                            <div class="value">
                                <input type="number" name="<?php echo $teamName;?>[<?php echo $name;?>]" min="0" max="<?php echo MAX_LEVEL;?>"
                                    value="<?php echo (int) (isset($_POST[$teamName][$name]) ? $_POST[$teamName][$name] : MAX_LEVEL / 2)?>">
                            </div>
                        </div>
                    <?php endforeach; ?>
 
                    <div class="row">
                        <div class="name">Максимальное количество голов:</div>
                        <div class="value">
                            <select  class="button" size="1" name='<?php echo $teamName;?>[maxgoals]'>
                                <?php for($i = 1; $i <= MAX_GOALS_CNT; ++$i):?>
                                    <option class="button" value='<?php echo $i;?>'<?php if(isset($_POST[$teamName]['maxgoals']) && $_POST[$teamName]['maxgoals'] == $i){?> selected<?}?>>
                                        <?php echo $i;?>
                                    </option>
                                <?php endfor;?>
                            </select>
                        </div>
                    </div>
                </fieldset>
            <?php endforeach;?>
            <br>
            <input type="submit" value="Начать генерацию">
        </form>
 
        <?php if(empty($_POST)) :?>
            Заполните поля необходимыми значениями и нажмите кнопку "Начать генерацию"
        <?php else:
            require_once './result.php';
        endif; ?>
 
    </div>
</body>
</html>

config.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
$props = array(
    'technic' => 'Техника',
    'speed' => 'Скорость',
    'shoot' => 'Удар',
    'pass' => 'Пас',
    'protection' => 'Защита',
    'physics' => 'Физика',
    'teamwork' => 'Сыгранность',
);
 
defined('MAX_LEVEL') or define('MAX_LEVEL', 1100);
defined('MAX_GOALS_CNT') or define('MAX_GOALS_CNT', 16);
 
$formTeams = array(
    'teamOne' => 'Команда 1',
    'teamTwo' => 'Команда 2',
);

result.php
Кликните здесь для просмотра всего текста
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
<?php
 
require_once './classes.php';
 
$errors = array();
 
$i = 0;
foreach($formTeams as $team => $label)
{
    if(!isset($_POST[$team]) || !is_array($_POST[$team]))
    {
        $erros[] = 'Wrong data (' . $label . ')';
        break;
    }
    $data[$i] = array_map('intval', $_POST[$team]);
 
    if(!empty($_POST[$team]['name']))
    {
        $data[$i]['name'] = $_POST[$team]['name'];
    }
    else
    {
        //wrong team!
        $errors[] = 'Wrong team (' . $label . ')';
        break;
    }
    //....
    ++$i;
}
 
if(count($data) !== 2)
    $errors[] = 'Wrong team count';
 
if($data[0]['name'] == $data[1]['name'])
{
    $errors[] = 'The team can not play with herself';
}
 
if(!empty($errors))
{
    echo '<div class="error">', join('<br>', $errors), '</div>';
}
else
{
    //first team
    $first = new Team();
    $first->setLucky(2);
    foreach($data[0] as $prop => $value)
        $first->{'set' . ucfirst($prop)}($value);
 
    //second team
    $second = new Team();
    $second->setLucky(10);
    foreach($data[1] as $prop => $value)
        $second->{'set' . ucfirst($prop)}($value);
 
    //echo '<pre>';
    //$first->dumpInfo();
    //$second->dumpInfo();
    //echo '</pre>';
 
 
    $result = new Calculate($first, $second);
 
    ?>
    <div class="success">
        Результаты матча между "<?php echo $first->getName();?>" и "<?php echo $second->getName();?>":<br>
        Итоговый счет: <b><?php echo $result->getResultFirst();?> - <?php echo $result->getResultSecond();?></b>
    </div>
    <?php
}

Цитата Сообщение от Ocrex Посмотреть сообщение
1.Если в твои поля ввода ввести не цифры а буквы
2.Если ввести отрицательное число
3.Если ввести сразу цифру 245 000
4.Если поле вода пустое
1) Проверки я писал лишь по-минимуму, в файле result.php на 27 строке комментарий с троеточием стоит не просто так
2) ТС говорил, что это нужно ему для своих - а своим можно по рукам надавать за попытки "взлома"
3) Можете попробовать. Без изменения кода html в браузере (или скриптом и т.п.) у вас это не получится: все числовые поля с типом number, заданы min и max, указано начальное значение. А также можно добавить атрибут required к полям.
4) Все эти проверки можно также описать в классах, например, так, если по-простому:
Кликните здесь для просмотра всего текста
PHP
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
trait ItIsMagicLol
{
    private $rules = array(
        'technic' => array('required', 'numeric', 'specific'),
        'speed' => array('required', 'numeric', 'specific'),
        'shoot' => array('required', 'numeric', 'specific'),
        'pass' => array('required', 'numeric', 'specific'),
        'protection' => array('required', 'numeric', 'specific'),
        'physics' => array('required', 'numeric', 'specific'),
        'teamwork' => array('required', 'numeric', 'specific'),
    );
 
    public function __call($method, $args)
    {
        if(!preg_match('~^(set|get)([A-Z])([_A-Za-z0-9]*)$~', $method, $m))
            throw new Exception('AAAA, WTF method!?');
        $propName = strtolower($m[2]) . $m[3];
        if (!property_exists($this, $propName))
            throw new Exception('AAAA, WTF property!?');
        if($m[1] == 'get')
        {
            if($args)
                throw new Exception('AAAA, WTF property args!?');
            return $this->getValue($propName);
        }
        if(count($args) !== 1)
            throw new Exception('AAAA, WTF method args!?');
 
        if(true !== ($check = $this->validate($propName, $args[0]))
            throw new Exception(join('<br>', $check));
 
        $this->$propName = $args[0];
 
        return $this;
    }
    private function validate($name, $value)
    {
        if(!isset($this->rules[$name]))
            throw new Exception('AAAA, WTF property!?');
        $errors = array();
        foreach($this->rules[$name] as $rule)
        {
            switch($rule)
            {
                case 'required':
                    if(trim($value) === '')
                        $errros[] = 'property ' . $name . ' is required';
                case 'numeric':
                    if(!is_numeric($value))
                        $errros[] = 'property ' . $name . ' is not numeric';
                case 'specific':
                    if($value < 0 || $value > MAX_LEVEL)
                        $errros[] = 'property ' . $name . ' must be between 0 and ' . MAX_LEVEL;
            }
        }
        return empty($errors) ? true : $errors;
    }
    private function getValue($propName)
    {
        $value = $this->$propName;
        return $value ? $value : 'Property "' . $propName . '" is empty';
    }
    public function setValues(array $data)
    {
        foreach($data as $k => $v)
            $this->{'set' . ucfirst($k)}($v);
    }
}


Или же написать валидаторы, по типу такого:
Кликните здесь для просмотра всего текста
PHP
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?php
namespace Validators;
 
class ValidatorException extends \Exception
{
    public function __construct($message = 'Error of validate', $code = null, \Exception $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }
}
 
 
interface IValidator
{
    public function validate();
    public function isValid();
    public function getError();
}
 
interface IRequiredValidator
{
    const DEFAULT_MESSAGE = 'Заполните поле {attribute}.';
}
 
interface IFormatValidator
{
    CONST WRONG_VALUE_MSG = 'Неверный формат {attribute}.';
}
 
interface ILengthValidator
{
    CONST SMALL_LENGTH_MSG = 'Слишком маленькая длина {attribute}.';
    CONST BIG_LENGTH_MSG = 'Слишком большая длина {attribute}.';
}
 
abstract class Validator implements IValidator, IRequiredValidator
{
    const DEFAULT_CHARSET = 'UTF-8';
 
    protected $hasError = false;
    protected $_value;
    protected $_additional = array();
 
    public function __construct($value, array $additional = array())
    {
        $this->_value = $value;
        $this->_additional = $additional;
 
        $this->onBeforeValidate();
    }
 
    protected function onBeforeValidate()
    {
        $this->hasError = !is_scalar($this->_value);
    }
 
    public function isValid()
    {
        return !$this->hasError;
    }
 
    public function getError($tag = '{attribute}')
    {
        if($this->isValid())
            return null;
 
        return preg_replace(
            '~' . preg_quote($tag) . '~ui',
            $this->_value,
            (isset($this->_additional['message']) ? $this->_additional['message'] : self::DEFAULT_MESSAGE)
        );
    }
}
 
class RequiredValidator extends Validator
{
 
    public function validate()
    {
        $this->hasError = $this->hasError || trim($this->_value) === '';
 
        return $this->isValid();
    }
}
 
class PhoneValidator extends Validator implements IFormatValidator
{
    public function validate()
    {
        $this->hasError = $this->hasError || !preg_match('~^\\s*?(?:(?:\\+?\\s*?7)|(?:\\s*?8\\s*?))?(?:\\s*?-?\\s*?)?(?:\\(\\d{3}\\)|\\d{3})(?:\\s*?-?\\s*?)?\\d{3}(?:\\s*?-?\\s*?)?\\d{2}(?:\\s*?-?\\s*?)?\\d{2}$~', $this->_value);
 
        return $this->isValid();
    }
 
    public function getError($tag = '{attribute}')
    {
        if($this->isValid())
            return null;
 
        return preg_replace(
            '~' . preg_quote($tag) . '~ui',
            $this->_value,
            (isset($this->_additional['message']) ? $this->_additional['message'] : self::WRONG_VALUE_MSG)
        );
    }
}
 
class EmailValidator extends Validator implements IFormatValidator
{
    public function validate()
    {
        $this->hasError = $this->hasError || !filter_var($this->_value, FILTER_VALIDATE_EMAIL);
 
        return $this->isValid();
    }
 
    public function getError($tag = '{attribute}')
    {
        if($this->isValid())
            return null;
 
        return preg_replace(
            '~' . preg_quote($tag) . '~ui',
            $this->_value,
            (isset($this->_additional['message']) ? $this->_additional['message'] : self::WRONG_VALUE_MSG)
        );
    }
}
 
class LengthValidator extends Validator implements ILengthValidator
{
    private $isLess = false;
 
    private $isMore = false;
 
    public function validate()
    {
        if(!$this->hasError)
        {
            if (isset($this->_additional['min']))
                $this->isLess = mb_strlen($this->_value, self::DEFAULT_CHARSET) >= $this->_additional['min'];
            if (isset($this->_additional['max']))
                $this->isMore = mb_strlen($this->_value, self::DEFAULT_CHARSET) <= $this->_additional['max'];
        }
 
        $this->hasError = $this->isLess || $this
 
        return $this->isValid();
    }
 
    public function getError($tag = '{attribute}')
    {
        if($this->isValid())
            return null;
 
        return preg_replace(
            '~' . preg_quote($tag) . '~ui',
            $this->_value,
            (isset($this->_additional['message']) ? $this->_additional['message'] : self::SMALL_LENGTH_MSG)
        );
    }
}

Цитата Сообщение от Zloben Посмотреть сообщение
Я так понял генератор у вас один, только оформление разное
Нет, код совершенно различный, и алгоритм непосредственно генерации тоже различается.
Цитата Сообщение от Zloben Посмотреть сообщение
И ещё вопросик, а как сделать закрытый доступ к этой странице, чтобы допустим только с паролем можно было зайти. Очень легкую авторизацию.
как вариант, через .htpasswd (в инете полно примеров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2016, 12:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

бд футбольных матчей
как в этом месте (которое выделил) сделать так чтобы в &quot;Команду1&quot; и &quot;Команду2&quot; попадали разные...

Результаты футбольных матчей.
Даны два массива из 20 однозначных чисел. В первом из них записано количество мячей, забитых...

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

Расписание матчей футбольных команд
Пишу маленькую игрушку. Вроде футбольная... В общем дается массив с именами (или первичными...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.