Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034

Переделать чуть код

20.05.2014, 00:23. Показов 761. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В интернете нашел вот этот небольшой код-
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
<form method="POST">
<input type="radio" name="go" value="1">Камень<br>
<input type="radio" name="go" value="2">Ножницы<br>
<input type="radio" name="go" value="3">Бумага<br>
<input type="submit" value="go">
</form>
<?php
$comp = rand(1,3);
$my = isset($_POST['go'])?$_POST['go']:0;
$name = array(1=>'Камень','Ножницы','Бумага');
if($my == 1 && $comp != 3 && $my != $comp) 
    echo "Вы выиграли, комп загадал $name[$comp]";
elseif($my == 2 && $comp != 1 && $my != $comp)
    echo "Вы выиграли, комп загадал $name[$comp]";
elseif($my == 3 && $comp != 2 && $my != $comp)
    echo "Вы выиграли, комп загадал $name[$comp]";
elseif($my == $comp) 
    echo "Ничья";
elseif($my == 0) 
    echo "Вы ничего не загадали";
else 
    echo "Вы проиграли комп загадал $name[$comp]";
?>
Но в нем есть недоделка- если я даже просто обновляю страницу то код работает так что игра работает как будто я нажал кнопку!
Можно ли как это исправить?

И что еще хотел узнать
PHP
1
2
$my = isset($_POST['go'])?$_POST['go']:0; //что значит (знак вопроса тут) ? и что такое :0
$name = array(1=>'Камень','Ножницы','Бумага'); //что это? 1=>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2014, 00:23
Ответы с готовыми решениями:

Php кэширование. Чуть переделать :-)
Пользуюсь кодом: &lt;?php // раздел настроек, которые вы можете менять $cachedir = $_SERVER.'/cache/'; $cachetime = 3600; ...

Разобрать и переделать код
Имеется php скрипт ддосера, только вот никак не пойму работает он ваще или нет, сколько он нагузки делает... &lt;?php $packets = 0; ...

не могу переделать код
как переделать этот код что бы он выводил название файлов не не страницу а в текстовый документ &lt;?php $dir = &quot;/tmp/&quot;; ...

9
8 / 8 / 9
Регистрация: 18.05.2014
Сообщений: 33
20.05.2014, 01:51
Код выполняется потому что при обновлении страницы выполняется отправка формы на сервер


PHP
1
$my = isset($_POST['go'])?$_POST['go']:0; //что значит (знак вопроса тут) ? и что такое :0
Это тернарный оператор, краткая запись условного
Для ясности я часто пишу его так

PHP
1
2
3
$my = isset($_POST['go'])
  ? $_POST['go']
  : 0; //что значит (знак вопроса тут) ? и что такое :0
Соответствует следующей конструкции
PHP
1
2
3
4
5
if (isset($_POST['go'])) {
    $my = $_POST['go']
} else {
    $my = 0;
}
А вообще, этот код можно сократить до
PHP
1
$my = $_POST['go'] ? : 0;

PHP
1
$name = array(1=>'Камень','Ножницы','Бумага'); //что это? 1=>
Это сокращенная запись, так определяется ключ массива, по которому можно обратиться к элементу массива, остальные элементы получают последовательные значения ключей, т.е. этот код можно переписать так

PHP
1
2
3
4
5
$name = array(
  1 => 'Камень',
  2 => 'Ножницы',
  3 => 'Бумага'
);
Если ключ не указать, то нумерация элементов массива будет с 0.
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.05.2014, 07:22
Цитата Сообщение от AlexOrphan Посмотреть сообщение
вообще, этот код можно сократить до
PHP
1
$my = $_POST['go'] ? : 0;
Такая конструкция выведет предупреждение, так как переменная не определена.
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Но в нем есть недоделка- если я даже просто обновляю страницу то код работает так что игра работает как будто я нажал кнопку!
В начале скрипта добавьте if (isset($_POST['go'])) { и весь php код выделите фигурными скобками. Тогда он будет выполняться только после нажатия на кнопку.

Добавлено через 6 минут
А вот чтобы защитить от повторной отправки данных при обновлении, тут посложнее... можно использовать сессии\куки\перенаправление...
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
21.05.2014, 12:22  [ТС]
AlexOrphan, pav1uxa,
Я так понял вот по этому коду:
PHP
1
$test= isset($_POST['test'])?:0;
что если переменная test по каким-то причинам еще не определена, то туда значение 0 ? или любая цифра что стоит после двоеточия так?

Добавлено через 38 минут
У меня вот получилась такая штука что код если написан так как ниже то он работает, правда ошибку выкидывает тока при первом заходе на страницу такую:

Notice: Undefined index: stav in Z:\home\test.ru\www\kamen\index.php on line 53
[Денвер: показать возможную причину ошибки]Предыдущая ваша ставка была


PHP
1
$stav= $_POST['stav'];
А если код делаю через isset() то код вобще неправильно работает, но ошибок зато непоказывает.
Так вот такой вопрос тогда, можно ли как отключить чтоб ошибку непоказывало?

Просто у меня так получилось то что у меня и форма и ее обработчик все в одном файле!
Если бы изначально код писал на раздельных файлах - то такой проблемы может быть и небыло бы.

Добавлено через 6 минут
А код что удалось написать вот:
Извеняюсь если немного криво написал, так это мне можно я начинающий еще!
Я создал таблицу и записываю туда некоторые параметры, ну там видно в коде что.

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
<?
include_once '../sys/inc/start.php';
include_once '../sys/inc/compress.php';
include_once '../sys/inc/sess.php';
include_once '../sys/inc/home.php';
include_once '../sys/inc/settings.php';
include_once '../sys/inc/db_connect.php';
include_once '../sys/inc/ipua.php';
include_once '../sys/inc/fnc.php';
include_once '../sys/inc/user.php';
 
only_reg();
 
$set['title']='Камень-ножницы-бумага'; // заголовок страницы
 
include_once '../sys/inc/thead.php';
title();
err();
aut();
//здесь начинается контент страницы 
 
//имя бд в переменную
$bd = $set['mysql_db_name'];
 
//правила игры в переменную
$prav = 'Правила игры<ul>
  <li>Камень побеждает ножницы («камень затупляет или ломает ножницы»)</li>
  <li>Ножницы побеждают бумагу («ножницы разрезают бумагу»)</li>
  <li>Бумага побеждает камень («бумага накрывает или заворачивает камень»)</li>
 
</ul>
<p>В случае победы ваша ставка умножается на два и начисляются монеты!<br>
При пройгрыше происходит обратное.</p>';
 
//количество сьигранных раз в эту игру всеми людьми
$result = mysql_query("SELECT MAX(id) as MAX_ID FROM statist_knb ",$db);
    /*Преобразовываем результат в массив*/
    $myrow = mysql_fetch_array($result);
    /*Выводим результат на экран*/
   // echo $myrow['MAX_ID'];
 
 
echo '<div class="nav1">';
echo "Здравствуйте $user[nick] у вас на счету $user[money] монет !<br>";
echo '</div>';
 
echo '<div class="nav2">';
echo $prav;
echo "Игра была съиграна всеми пользователями $myrow[MAX_ID] раз  <br>";
echo "Вы съграли $user[knb_stat] раз !<br>";
 
//определим какая ставка была и засунем переменную в isset()
$stav= $_POST['stav']; 
echo 'Предыдущая ваша ставка была '.$stav.'<br/>';
 
echo '</div>';
 
echo '<div class="nav1">';
 
//echo "Вы играли ... игр <br>";
 
//делаем условие играть или нет
if ($user['money'] < 1000){
echo "У вас осталось меньше $user[money] монет, игра невозможна<br/>";
echo '</div>';
}
else {
 
 
$comp = rand(1,3);
//echo 'Выпало случ число'.$comp.'<br/>';
 
$my = isset($_POST['play'])?$_POST['play']:0;
$name = array(1=>'Камень','Ножницы','Бумага');
if($my == 1 && $comp != 3 && $my != $comp) {
//  echo "Вы выиграли, комп загадал $name[$comp]<br/>";
    echo '<img src="kar1.jpg"  />'; 
    $tstav = $stav * 2;
    $sql = mysql_query("UPDATE `$bd`.`user` SET `money` = `money` + $tstav  WHERE `user`.`id` = $user[id];");
    $msg = '<font color ="red"><strong>Вы выйграли '.$tstav.' монет!</strong></font><br />';
    $msg2 = 'Вы выиграли, вы загадали '.$name[$my].' комп загадал '.$name[$comp].'<br/>';
    $fort = 'Выйграл';
    }
elseif($my == 2 && $comp != 1 && $my != $comp) {
//  echo "Вы выиграли, комп загадал $name[$comp]<br/>";
    echo '<img src="kar2.jpg" />';
    $tstav = $stav * 2;
    $sql = mysql_query("UPDATE `$bd`.`user` SET `money` = `money` + $tstav  WHERE `user`.`id` = $user[id];");
    $msg = '<font color ="red"><strong>Вы выйграли '.$tstav.' монет!</strong></font><br />'; 
    $msg2 = 'Ваша победа, вы загадали '.$name[$my].' комп загадал '.$name[$comp].'<br/>';
    $fort = 'Выйграл';
    }
elseif($my == 3 && $comp != 2 && $my != $comp) {
//  echo "Вы выиграли, комп загадал $name[$comp]<br/>";
    echo '<img src="kar3.jpg"  />';
    $tstav = $stav * 2;
    $sql = mysql_query("UPDATE `$bd`.`user` SET `money` = `money` + $tstav  WHERE `user`.`id` = $user[id];");
    $msg = '<font color ="red"><strong>Вы выйграли '.$tstav.' монет!</strong></font><br />';
    $msg2 = 'Вы выиграли, '.$name[$my].' комп загадал '.$name[$comp].'<br/>';
    $fort = 'Выйграл';
  } 
elseif($my == $comp) {
//  echo "Ничья<br/>";
    echo '<img src="kar4.jpg"  />';
    $tstav = 0;
    $msg = '<font color ="red"><strong>Ничья монеты не выйграны, попробуй еще разок!</strong></font><br />';
    $msg2 = 'Ничья, вы сказали '.$name[$my].' комп загадал '.$name[$comp].'<br/>';
    $fort = 'Ничья';
    }
elseif($my == 0) {
    echo '<img src="kar5.jpg"  />'; 
    $tstav = 0;
    $msg = '<font color ="red"><strong>Вы ничего незагадали, загадайте хоть что нибудь!</strong></font><br />';
    $msg2 = 'У вас ничего невыбрано, а комп выбрал выбрать '.$name[$comp].'<br/>';
    $fort = 'Невыбрано';
    }
else { 
//  echo "Вы проиграли комп загадал $name[$comp]<br/>";
    echo '<img src="kar6.jpg"  />';
    $tstav = $stav * 2;
    $sql = mysql_query("UPDATE `$bd`.`user` SET `money` = `money` - $tstav  WHERE `user`.`id` = $user[id];");
    $msg = '<font color ="red"><strong>Вы проиграли '.$tstav.' монет!</strong></font><br />';
    $msg2 = 'Вы проиграли, загадав '.$name[$my].' комп загадал '.$name[$comp].'<br/>';
    $fort = 'Проиграл';
    }
echo '</div>';
 
} 
echo '</div>'; //тут может и ненужен див
 
?> 
 
<div class="nav2">
<form method="POST">
  <label><input type="radio" name="play" value="1"> 
  Камень</label><br>
  <label><input type="radio" name="play" value="2">
  Ножницы</label><br>
  <label><input type="radio" name="play" value="3">
  Бумага</label><br>
  
  Ваша ставка
  <input type="radio" checked="checked" checked="checked" name="stav" value="5">
  5
   <input type="radio" name="stav" value="15">
  15
   <input type="radio" name="stav" value="20">
  20
   <input type="submit" value="play">
</form>
 
<?php 
 
//вывод сообщений о состоянии игры
echo '<div class="nav2">'.$msg2;
echo $msg.'</div>';
//echo $name[$my];
 
//стат юзера поменять имя таблы на потом переменную!
$sql = mysql_query("UPDATE `$bd`.`user` SET `knb_stat` = `knb_stat` + 1  WHERE `user`.`id` = $user[id];");
 
//учет статистики, добавляет новую строку в таблу statist_knb
//'".$tstav."' писать правильнее, иногда $tstav переменная несрабатывает...
//if ($my!=0){ 
$sql = mysql_query("INSERT INTO `$bd`.`statist_knb` (`id`, `id_user`, `nick`, `time`, `stavka`, `fortuna`, `navar`) VALUES (NULL, $user[id], '".$user['nick']."', NOW(), $stav, '".$fort."', '".$tstav."');");
//}
    
    
//здесь заканчивается контент страницы
include_once '../sys/inc/tfoot.php';
?>
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
21.05.2014, 12:30  [ТС]
А так чтоб примерно было понятно о чем речь вставлю картинку, и то что там выделено красным - это одна единственная ошибка во всей игре, которая возникнет тока в начале игры и затем пропадет.
Ну все равно хотелось бы ее исправить - если это возможно.
Миниатюры
Переделать чуть код  
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
21.05.2014, 12:45  [ТС]
Ну и вот сама таблица для полной ясности картины , которую мне удалось создать и чего-то в нее записывать и при чем правильно вроде как записывает!

Игру это я встраиваю в движок от соцки как вы уже поняли наверно ).
Миниатюры
Переделать чуть код  
0
8 / 8 / 9
Регистрация: 18.05.2014
Сообщений: 33
21.05.2014, 12:46
Этот код вообще неправильный
PHP
1
$test= isset($_POST['test'])?:0;
он означает если в $_POST['test'] есть значение, то $test = isset($_POST['test']) (т.е. не значение $_POST['test'], а значение функции isset($_POST['test'])), иначе переменной $test присвоить 0.




правильный
PHP
1
$test= isset($_POST['test'])? $_POST['test']) : 0;
он означает если в $_POST['test'] есть значение, то $test = $_POST['test'], иначе переменной $test присвоить 0.
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
21.05.2014, 17:19  [ТС]
AlexOrphan,
Аа понял. А скажи как избавиться от ошибки что я выделил красной рамкой, там мол типа тпкая ошибка что как я понял переменная $stav еше не получила значение, ну и это как бы правильно, я ведь тока зашел на страницу и неуспел нажать на радиокнопку чтоб она получила значение, (хотя она по умолчанию зачекена одна из них) ведь у меня и обработчик на этой же странице!

Или как придумать мож какой ход конем, что если в переменной ни чего нету, то там по умолчанию вставляется какое либо число! Кстати ты мне этот код дал, сча я его и опробую
0
13 / 13 / 7
Регистрация: 02.04.2014
Сообщений: 82
22.05.2014, 07:29
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
PHP
1
2
$stav= $_POST['stav']; 
echo 'Предыдущая ваша ставка была '.$stav.'<br/>';
Это меняем на:
PHP
1
2
3
4
5
6
if (isset($_POST['stav'])){
    $stav= $_POST['stav']; 
    echo 'Предыдущая ваша ставка была '.$stav.'<br/>';
} else {
    echo 'Первая игра!;
};
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
22.05.2014, 17:41  [ТС]
Цитата Сообщение от AlexOrphan Посмотреть сообщение
PHP
1
$test= isset($_POST['test'])? $_POST['test']) : 0;
Вот этот твой код помог! У меня сейчас ошибок нету вобще! Пускай и неважно код написан, зато он без ошибок работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2014, 17:41
Помогаю со студенческими работами здесь

Надо переделать код
в этом коде данные &quot;фамилия&quot; &quot;имя&quot; &quot;отчество&quot; берутся из файла. а надо сделать что бы они хранились в сессии &lt;!DOCTYPE html&gt; ...

Как правильно переделать код?
Приветствую всех. Имеется код. &lt;?php if(!empty($_SERVER) &amp;&amp; strtolower($_SERVER) == 'xmlhttprequest') { ...

переделать код delphi на php
Помогите пожалуйста переделать код делфи на php (хотя бы чать, потом я сам по аналогии). Или может в сети есть какие то конверторы. Если...

Переделать код для создания rar архива
Здравствуйте. Подскажите, возможно ли переделать данный код таким образом, чтобы архивы были не zip, а rar? $error =...

Синонимайзер ищет побуквенно:( Чуть подправить надо
Например в базе есть слово &quot;быстр&quot;, если ввести слово &quot;ыстр&quot; он выведет слово &quot;незамедлителен&quot;, а это синоним слова &quot;быстр&quot;,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru