Добрый день! Я совсем зеленый, пожалуйста, посоветуйте, как решить задачку. Задача: юзер загадывает число; программа угадывает. Идея задачи именно в том, чтобы использовать скрытые поля для сохранения данных; другие варианты не подходят (в книжке до них не дошел). Проблема: Программа не дописана, застрял на следующем косяке - программа не сохраняет с скрытых (сделал их открытыми для отладки) полях данные массива; в итоге, каждый следующий запуск к числу приписывается 50 вначале. Код (Text): <? $guess = array(); print "Is your number "; if (empty($guess)){ $guess[0] = 50; print $guess[0]; } if ($choice === big){ print $guess[1]=($guess[0] / 2); } elseif ($choice === small) { print $guess[1]=($guess[0] + 25); } elseif ($choice === gotIt) { print "YOU WON!"; } print "?<br><br>"; print<<<HERE <form action="17.php" method = "post"> <input type = "radio" name = "choice" value = "big">My number is bigger, dude!<br> <input type = "radio" name = "choice" value = "small">My number is smaller, muuuch smaller, mate!<br> <input type = "radio" name = "choice" value = "gotIt">YOU GOT IT! IT CANNOT BE!! :D<br><br> <input type = "submit" value = "tell him!"> </form> HERE; print "<br><br>"; var_dump($guess); print "<br><br>"; print<<<HERE <form action="17.php" method = "post"> <input type = "text" name = "guess[0]" value = "$guess[0]"> <input type = "text" name = "guess[1]" value = "$guess[1]"> <input type = "text" name = "guess[2]" value = "$guess[2]"> <input type = "text" name = "choice" value = "$choice"> </form> HERE; ?> Подскажите, пожалуйста, в чем дело Стрим, как я это все сочинял:
Апдейт: оказалось, что вроде как в поля нельзя передавать значения массива вот так вот просто.. Надо делать это через echo: Код (Text): <input type = 'text' name = 'guess[1]' value = '<? echo $guess[1]; ?>'> Но все равно так же шляпа: https://hastebin.com/ijitefevek.bash
Не пойму задачи, по идее все просто, передаешь значения из инпута (или куда там юзер число загадывает) через POST в обработчик, где что-то типа Код (Text): $number = $_POST['number']; $rand = rand(1,10000); if($rand>$number){echo} elseif($rand<$number){echo} else {угадал}
1 час 8 минута, да это капец --- Добавлено --- в 1 час 10 минут пукан начинает гореть --- Добавлено --- крч говнокодер --- Добавлено --- у тебя уже здесь ошибка PHP: if ($choice === big){ тут PHP: } elseif ($choice === small) { и тут PHP: } elseif ($choice === gotIt) {
Спасибо за ответ. Да, есть другие варианты решения задачи; я выбрал довольно-таки дурацкий. Но тут уже спортивный интерес, хочется, чтобы заработало с массивами, которые хранят значения в скрытых формах Вот такой вот мазохизм.. Есть у кого-нибудь есть идеи в чем проблема?
2Dimon2x, суть задачи - сделать это через скрытые поля Странная штука: https://hastebin.com/qeromofusa.bash В нижних полях все сохраняется, сверху нет: --- Добавлено --- Так, есть подвижка. Я не указал переменные; а из форм они не генерируются оказываются ( https://php.ru/manual/reserved.variables.post.html ). Так что сначала пишем Код (Text): $choice = $_POST['choice']; и с массивом по аналогии
Мытарства продолжаются.... https://hastebin.com/vomasuvere.xml Плз подскажите, почему не фурычит это: Код (Text): } elseif ($choice == 'small') { print $guess[2]=($guess[0] + 25);
Оказалось, что у меня не показываются NOTICE ошибки; для этого вначале кода ставим: error_reporting(E_ALL); ini_set('display_errors', '1'); Стало ясно, что формы ничего толком не передают, Notice: Undefined index: $guess in C:\OpenServer\domains\localhost\php\17.php on line 6 Notice: Undefined index: $choice in C:\OpenServer\domains\localhost\php\17.php on line 7 Is your number 50? Сразу стало легче.. Основной косяк был с $guess = $_POST['$guess']; Надо вот так: $guess = $_POST['guess']; В общем, вот что получилось: https://hastebin.com/dedoqixahu.http Мораль: Не пытайтесь бежать впереди паровоза... Но тут еще косяк книги, домашнее задание было сразу после главы про массивы, но при этом его нужно было делать без этих самых массивов. Так что выбирайте хорошие книжки )