Задание из книги для начинающих

Фанат

oncle terrible
Команда форума
на сервере register_globals = on с постом все в порядке
НЕТ, не в порядке.
если ты думаешь, что register_globals - это просто лишняя бирюлька, которую разработчики навесили на пхп, чтобы программистам не скучно было, ты ОЧЕНЬ СИЛЬНО ЗАБЛУЖДАЕШЬСЯ.

если ты думаешь, что про $_POST я тебе сказал от нечего делать, ты тоже ошибаешься.

постарайся не считать свои представления о преграммировании самыми правильными и попробуй иногда прислушиваться к тому, что тебе говорят.
КАК я генерирую число каждый раз я и сам не понял..
пожалуйста.
вот как ты его генерируешь:
$gen = rand (1,100);

-~{}~ 04.04.06 21:03:

судя по всему, я правильно понял причину проблем, когда написал её вот здесь
http://phpclub.ru/talk/showthread.php?postid=597535#post597535
но никто не обратил внимания.
 

holyman

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

Фанат

oncle terrible
Команда форума
правда не понимаешь?
ты не понимаешь, что если запустить программу, в которой написана строчка $gen = rand (1,100);, то эта строчка исполнится? если два раза программу запустить - два раза исполнится. 10 раз запустить - 10 раз исполнится?
ты дейсьвительно не понимаешь именно это? или что-то другое?
 

holyman

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

Фанат

oncle terrible
Команда форума
я пишу в нормальном тоне.
постарайся отвлечься от моего тона, и обрати внимание на свой. На то, что ты сам пишешь. Это будет гораздо полезнее, поверь мне.
потому, что мои ответы базируются ИСКЛЮЧИТЕЛЬНО на том, что ты сам мне написал. Ну вот раз сам написал - так потом не обижайся.
Если ты спрашиваешь, почему данная строка запускается каждый раз - что я, по-твоему должен тебе ответить?

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

теперь к делу.
что мешает тебе поставить простую проверку с помощью оператора if()? Если из формы пришло значение поля gen, то не выполнять эту строчку кода?

-~{}~ 04.04.06 23:43:

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

holyman

Новичок
почему генерация происходит каждый раз я не понимаю - следует читать как "почему генерация происходит каждый раз ЗАНОВО я не понимаю ". Приношу за это извинения. Сейчас опробую с иф. Честно говоря, я ни капли не пытаюсь вас унизить задеть либо еще что. Я просто прошу помощи. Еще раз приношу извинения за неправильно сформулированные мысли.
 

Фанат

oncle terrible
Команда форума
я тоже не пытаюсь вас унизить и задеть.
поэтому предлагаю оставить тему тона и перейти к решению более насущных задач.

Тебе надо проверять, в первый раз ты выдаёшь форму, или тебе уже её присылали.
для этого тебе нужна переменная $_POST['gen'].
Заметь - не $gen, которая у тебя получается из генерации, а $_POST['gen'] - которая совсем другая. Которая пришла из формы. И к которой надо обращаться через $_POST именно для того, чтобы не путать переменные.
А с register_globals = on у тебя они как раз путаются. Поэтому register_globals = on - это значит не "всё в порядке", а необорот - всё в беспорядке.
а в порядке всё, когда оно лежит строго по своим массивам.
 

holyman

Новичок
Если из формы пришло значение поля - какой командой дать программе понять, что значение в поле введено, если оно пустой, я писал if(empty($abc)) а если наоборот, что $abc имеет значение?
 

Фанат

oncle terrible
Команда форума
запись if(empty($abc)) - это сокращённая запись выражения
if(empty($abc)==TRUE)
теперь ты можешь написать выражение, которое тебе нужно?
 

Фанат

oncle terrible
Команда форума
можно написать ещё короче
if(!empty($abc))

а можно - вообще не менять запись, поскольку у тебя всё равно должны быть действия и на тот, и на другой случай.
то есть тебе нужно
if(empty($abc)) {
делаешь то, что нужно, когнда поля нету
} else {
вот здесь пишем код, для случая, когда поле есть.
}
 

holyman

Новичок
<h2> Guess the number </h2><br>
<h3> Enter Your Variant</h3><form method = "post">
<input type = "text"
name = "number"
value = "">
<input type = "submit"
value = "Try To Guess">
<?
if (empty($_POST['gen']))
{
$gen = rand (1,10);
print <<<A
<input type="hidden" name="gen" value="$gen">
A;
} else
{ print <<<B
<input type="hidden" name="gen" value="$gen">
B;

if ($_POST['number'] == $_POST['gen'])
{
print <<<C
<h2>You have guessed</h2><br>
<a href="asd.php"> Try once more </a>
C;
} else if($_POST['number'] < $_POST['gen']){
print "<br><h2>It is a bit less</h2>";
} else if($_POST['number'] > $_POST['gen']){
print "<br><h2>It is a bit more</h2>";
}
}
?>

Все так, все классно. Только вот сосчитать попытки интересно как?
 

Фанат

oncle terrible
Команда форума
интересно.
не забыл ли ты, с чего начался этот топик?
судя по этому коду - забыл.

-~{}~ 05.04.06 00:30:

перечитай условие задачи, что ли?

-~{}~ 05.04.06 00:33:

if($number < $gen)
что писал я про $_POST, что не писал - разницы никакой.
как тон мой обсуждать - это ты можешь.
а чтобы сделать по-человечески - тут надо на колени, наверное, перед тобой встать?

-~{}~ 05.04.06 00:37:

очень рекомендую поставить в начале скрипта
error_reporting(E_ALL);
и обращать внимание на все сообщения об ошибках, которые начнут появляться.
 

holyman

Новичок
код изменил, все работает.
2 Фанат:
код не имеет смысла, если нет понятия, итак, что я понял: сначала я генерирую число и записываю его в скрытую зону, при чем генерация идет только в том случае, если запись туда еще не производилась. Затем идет сравнивание переменных из двух форм, первая - та что была создана после генерации числа, вторая - введенное число.
Одно не ясно - как попытки-то считать?
 

baev

‹°°¬•
Команда форума
holyman, Вы исходный код своих html-страниц посмотрите.

Потом на свой php-код.
 

holyman

Новичок
незнание в написании этой игры вызвало неумение пользоваться $_POST[''] о которой в книге упомянуто 1 раз. Задание это на 149 странице, а упоминание на 58. Обидно, что из-за этого вышел весь сырбор. Еще более обидно то, что написано в предисловье:
Специалисты http://phpclub.ru испытывают определенные сомнения по поводу работы всех оригинальных кодов (в частности из-за опции register_globals = off), и поэтому приглашают читателей данной книги на свой сайт, где будет открыт форум для обсуждения этой и других книг по PHP. :) и с пхп я дружу всего 3 дня
 

baev

‹°°¬•
Команда форума
holyman, ну и к чему теперь мой предыдущий пост относится?..

Одно не ясно - как попытки-то считать?
Почти так же:
PHP:
 if (empty($_POST['popytka']))
...то ставим её равной 1, иначе — увеличиваем на единицу.
 
Сверху