Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Help! Помогите с кодом?
Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020 Откуда: Россия, Уфа
Помог: 1 раз(а)
Приветствую коллеги.
Создаю свой первый php c элементами css и html для наглядности (не стал выносить в файлы)
Решил создать мгновенное мини лото погружаясь в php.
Возникли проблемы с кодом, не знаю куда дальше двигаться, уперся в стену.
Кто подскажет что делать дальше?
Проблемы:
проверка ошибок - выводит ошибку даже если все условия по вводу символов верны
не знаю как подключить mt_rand и дальше делать вывод и сравнение
<label> Введите первое число от 0 до 10</label><input type="integer" maxlength="2" name="firstnum" id="firstnum" size="3" value="<?php echo $_SESSION["firstnum"] ?>"/>
<span class="error"><?=$error?></span>
<label> Введите второе число от 0 до 10</label><input type="integer" maxlength="2" name="secondnum" id="secondnum" size="3" value="<?php echo $_SESSION["secondnum"] ?>"/>
<span class="error"><?=$error?></span>
<label> Введите третье число от 0 до 10</label><input type="integer" maxlength="2" name="thirdnum" id="thirdnum" size="3" value="<?php echo $_SESSION["thirdnum"] ?>"/>
</form><!-- 1. как дальше подключить функцию mt_rand заставить выводить ее символы от 0 до 10 в случайном порядке после нажатия кнопки? 2. потом сравнить наши переменные, введенные пользователем 3. вовдить совпавшие числа и сообщение YOU WIN или YOU LOOSE, я так понимаю 2 и 3 пункты при помощи того же if-->
</div>
</body>
</html>
Vladimir Kheifets
Отправлено: 24 Марта, 2020 - 13:17:42
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
rasl89 пишет:
Приветствую коллеги.
Создаю свой первый php c элементами css и html для наглядности (не стал выносить в файлы)
Решил создать мгновенное мини лото погружаясь в php.
Возникли проблемы с кодом, не знаю куда дальше двигаться, уперся в стену.
Кто подскажет что делать дальше?
Проблемы:
проверка ошибок - выводит ошибку даже если все условия по вводу символов верны
не знаю как подключить mt_rand и дальше делать вывод и сравнение
<label> Введите первое число от 0 до 10</label><input type="integer" maxlength="2" name="firstnum" id="firstnum" size="3" value="<?php echo $_SESSION["firstnum"] ?>"/>
<span class="error"><?=$error?></span>
<label> Введите второе число от 0 до 10</label><input type="integer" maxlength="2" name="secondnum" id="secondnum" size="3" value="<?php echo $_SESSION["secondnum"] ?>"/>
<span class="error"><?=$error?></span>
<label> Введите третье число от 0 до 10</label><input type="integer" maxlength="2" name="thirdnum" id="thirdnum" size="3" value="<?php echo $_SESSION["thirdnum"] ?>"/>
</form><!-- 1. как дальше подключить функцию mt_rand заставить выводить ее символы от 0 до 10 в случайном порядке после нажатия кнопки? 2. потом сравнить наши переменные, введенные пользователем 3. вовдить совпавшие числа и сообщение YOU WIN или YOU LOOSE, я так понимаю 2 и 3 пункты при помощи того же if-->
</div>
</body>
</html>
Добрый день!
У меня нет, русской клавитуры, поэтому не могу подробно ответить на все Ваши вопросы.
Коротко, несколько советов по Вашему коду:
1. Используйте массивы и циклы.
2. Сессия в Вашем случае не нужна.
3. Не повторяйте одинаковые фрагменты кода
Например:
Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020 Откуда: Россия, Уфа
Помог: 1 раз(а)
Vladimir Kheifets пишет:
Добрый день!
У меня нет, русской клавитуры, поэтому не могу подробно ответить на все Ваши вопросы.
Коротко, несколько советов по Вашему коду:
1. Используйте массивы и циклы.
2. Сессия в Вашем случае не нужна.
3. Не повторяйте одинаковые фрагменты кода
Например:
Спойлер (Отобразить)
Посмотрите код, может пригодится.
Спойлер (Отобразить)
Удачи!
Спасибо большое за ответ.
Сессию я добавлял на случай ошибки, например ввел пользователь число больше 10, чтобы оно осталось и он видел свою ошибку.
В Вашей версии кода очень много для меня непонятного, постараюсь разобраться!
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
rasl89 пишет:
Vladimir Kheifets пишет:
Добрый день!
У меня нет, русской клавитуры, поэтому не могу подробно ответить на все Ваши вопросы.
Коротко, несколько советов по Вашему коду:
1. Используйте массивы и циклы.
2. Сессия в Вашем случае не нужна.
3. Не повторяйте одинаковые фрагменты кода
Например:
Спойлер (Отобразить)
Посмотрите код, может пригодится.
Спойлер (Отобразить)
Удачи!
Спасибо большое за ответ.
Сессию я добавлял на случай ошибки, например ввел пользователь число больше 10, чтобы оно осталось и он видел свою ошибку.
В Вашей версии кода очень много для меня непонятного, постараюсь разобраться!
Извините, не было возможности комментировать код.
То что, введено попадает в $_POST и в случае ошибки, например ввел пользователь число больше 10
Пишите, что не понятно. Разберёмся.
Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020 Откуда: Россия, Уфа
Помог: 1 раз(а)
Vladimir Kheifets пишет:
Извините, не было возможности комментировать код.
То что, введено попадает в $_POST и в случае ошибки, например ввел пользователь число больше 10
Пишите, что не понятно. Разберёмся.
Начал разбираться в Вашем варианте кода, это очень круто! Массивы и еще раз массивы.
Есть непонятные моменты, написал комментарии, можете взглянуть? Хотелось бы на 100% понять Вашу реализацию.
foreach($number_enas$i=>$name)//перебираем массив с присвоением к каждому элемнат массива переменной i, все это будет переменная name
{
$value=$_POST[$name];// создаем переменную value и объявляем метод POST для наше name
if(isset($_POST["send"]))//проверяем заполнено ли поле (отлично ли оно от NULL)
{
if(preg_match("/^(\d{1}|10)$/",$value))//тут не понятно, идет проверка нашего value по регулярным выражениям сначала строки, обычноый символ, одна цифра, один раз, или 10, конец строки
{
$msg="";//создаем переменную будушего сообщения
$inp_number[]=$value;// не понятно, что тут происходит? ЕСЛИ лишнего сивола нет, то ... берется каждое число, записывается в value как класс символов? а далее переходит в массив?
}
else
{
$error=true;// или будет выведена ошибка
$err_value=($value)?$value:"не введено";// не понятно, что тут происходит? проверка введен ил символ
$msg="<span>Ошибка: {$number_ru[$i]} число $err_value!</span>";// не понятно, что тут происходит?
}
}
echo"
<label>Введите {$number_ru[$i]} число от 0 до 10</label>
$msg<br>";//тут поазываем форму или если нужно текст ошибки
}
if(!$error AND is_array($inp_number))//если ошибка фолс и проверям переменную на массив
{
$YOU_WIN=true;
$win_number[]=$rand_number;// не понятно, что тут происходит? создаем переменную число, которое будет сравниваться с рандомным? числа из win_number запишутся в массив $inp_number?
{
do
{
$rand_number=mt_rand(0,10);//сраниваем массив чисел с рандомными, если совпало то выиграл - $YOU_WIN = true
}
while(in_array($rand_number,$win_number));// проверяем есть ли в масиве win_number символы из rand_number
$win_number[]=$rand_number;// сравнение
if($rand_number!=$number)// если число из массива не равно рандомным, тот проигрыш $YOU_WIN=false
{
$YOU_WIN=false;
}
}
echo"<div>Выграли числа: ",implode(", ",$win_number),"<br>";//выводим строкой массив выигрышных чисел
echo"Вы ввели числа: ",implode(", ",$inp_number),"<br>";// выводим строкой массив введенных чисел
echo"Вы ",($YOU_WIN)?"выграли":"прoиграли</div>";// как тут определяет выиграли или проиграли по переменой $YOU_WIN?
}
?>
Vladimir Kheifets
Отправлено: 25 Марта, 2020 - 20:28:20
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
rasl89 пишет:
Vladimir Kheifets пишет:
Извините, не было возможности комментировать код.
То что, введено попадает в $_POST и в случае ошибки, например ввел пользователь число больше 10
Пишите, что не понятно. Разберёмся.
Начал разбираться в Вашем варианте кода, это очень круто! Массивы и еще раз массивы.
Есть непонятные моменты, написал комментарии, можете взглянуть? Хотелось бы на 100% понять Вашу реализацию.
Выграли числа: 4, 1, 8
Вы ввели числа: 1, 2, 3
Вы прoиграли
лишних запятых я не вижу и trim здесь не нужен.
Языковая конструкция языка PHP echo выводит несколько аргументв разделённые символом запятая перенос строки не добавляется.
ЗДЕСЬ:
echo "<div>Выграли числа: ",implode(", ",$win_number),"<br>";
1 аргумент:
"<div>Выграли числа: "
2 аргумент:
implode(", ",$win_number)
3 аргумент:
"<br>"
функции implode — объединяет элементы массива в строку (2 аргумент),
Разделяя элементы массива зпятыми с пробелом ", "
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
rasl89 пишет:
Vladimir Kheifets пишет:
так выглядит результ:
Цитата:
Выграли числа: 4, 1, 8
Вы ввели числа: 1, 2, 3
Вы прoиграли
лишних запятых я не вижу и trim здесь не нужен.
Странно, у меня выводит:
Цитата:
Выграли числа: , 1, 2, 9
Вы ввели числа: 3, 4, 2
Вы прoиграли
Добрый день!
Проверил код, из Вашего поста от 25 Марта, 2020 - 20:22:44, который Вы проверяте.
Вы вставляли комментарии в мой код и его изменили.
В моём коде
$win_number[]=$rand_number;// не понятно, что тут происходит? создаем переменную число, которое будет сравниваться с рандомным? числа из win_number запишутся в массив $inp_number?
{
foreach($inp_number as $number) видимо, есть иначе вообще бы код выдавал фотальную ошибку.
Ваша ошибка в
$win_number[]=$rand_number;// не понятно, что тут происходит?
В оригинале $win_number=[]; создаёт пустой массив, в Вашем исправленном в $win_number[]=$rand_number создается массив и заносится пустой 0 элемент т.к. переменная $rand_number здесь не определена.
Поэтому implode сливает в строку пустой 0 элемент с запятой, которую Вы увидели в результате.
Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020 Откуда: Россия, Уфа
Помог: 1 раз(а)
Vladimir Kheifets пишет:
В оригинале $win_number=[]; создаёт пустой массив, в Вашем исправленном в $win_number[]=$rand_number создается массив и заносится пустой 0 элемент т.к. переменная $rand_number здесь не определена.
Поэтому implode сливает в строку пустой 0 элемент с запятой, которую Вы увидели в результате.
но тогда код не запускается и указывает на ошибку
Цитата:
Parse error: syntax error, unexpected
именно в эту строку с
Цитата:
$win_number=[];
Vladimir Kheifets
Отправлено: 28 Марта, 2020 - 19:58:20
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
rasl89 пишет:
Vladimir Kheifets пишет:
В оригинале $win_number=[]; создаёт пустой массив, в Вашем исправленном в $win_number[]=$rand_number создается массив и заносится пустой 0 элемент т.к. переменная $rand_number здесь не определена.
Поэтому implode сливает в строку пустой 0 элемент с запятой, которую Вы увидели в результате.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.