За последние 24 часа нас посетили 22367 программистов и 1139 роботов. Сейчас ищут 656 программистов ...

Help! Помогите с кодом?

Тема в разделе "PHP для новичков", создана пользователем rasl89, 22 мар 2020.

Метки:
  1. rasl89

    rasl89 Новичок

    С нами с:
    22 мар 2020
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Россия, Уфа
    Приветствую коллеги.
    Создаю свой первый php c элементами css и html для наглядности (не стал выносить в файлы)
    Решил создать мгновенное мини лото погружаясь в php.
    Возникли проблемы с кодом, не знаю куда дальше двигаться, уперся в стену.
    Кто подскажет что делать дальше?
    Проблемы:
    1. проверка ошибок - выводит ошибку даже если все условия по вводу символов верны
    2. не знаю как подключить mt_rand и дальше делать вывод и сравнение
    Дополнительно свои комменты прописал в коде.
    Код (Text):
    1. <?php
    2. session_start ();  
    3. if(isset ($_POST["send"])){
    4.         $firstnum = htmlspecialchars ($_POST["firstnum"]);
    5.         $secondnum = htmlspecialchars ($_POST["secondnum"]);
    6.         $thirdnum = htmlspecialchars ($_POST["thirdnum"]);
    7.         $_SESSION["firstnum"] = $firstnum;
    8.         $_SESSION["secondnum"] = $secondnum;
    9.         $_SESSION["thirdnum"] = $thirdnum;
    10.         $error = ""; //проблема с проверкой выполения условий, при вводе цифр от 0 до 10, ошибку показывает даже если цифра введена верно
    11.         $error_1 = false;
    12.         if ($firstnum == "" || $firstnum > 10) {
    13.             $error = "Введите число от 0 до 10";
    14.             $error_1 = true;
    15.                 }
    16.         if ($secondnum == "" || $secondnum > 10) {
    17.             $error = "Введите число от 0 до 10";
    18.             $error_1 = true;
    19.                 }
    20.         if ($thirdnum == "" || $thirdnum > 10) {
    21.             $error = "Введите число от 0 до 10";
    22.             $error_1 = true;
    23.                 }
    24.    
    25.     // как тут завершить код? в случвае если все условия выполнены, нажать на кнопку и вывести сообщение о выигрыше или проигрыше
    26.         if (!$error_1) {
    27.             header();
    28.             exit;
    29.         }
    30. }
    31. ?>
    32.  
    33. <!doctype html>
    34. <html>
    35. <head>
    36. <meta charset="utf-8">
    37. <title>Онлайн лото 3 из 10</title>
    38.    
    39. <meta charset="utf-8">
    40. </head>
    41.     <style>
    42.  
    43.         .error {
    44.         color: red;
    45.         }
    46.        
    47.         #firstnum {
    48.     width: 15px;
    49.     padding: 5px;
    50.     background: #f0f0f0;
    51.         }
    52.        
    53.         #secondnum {
    54.     width: 15px;
    55.     padding: 5px;
    56.     background: #f0f0f0;  
    57.         }
    58.        
    59.         #thirdnum {
    60.     width: 15px;
    61.     padding: 5px;
    62.     background: #f0f0f0;          
    63.         }
    64.        
    65.         #lototable {
    66.     background-color: #CAC6C6;
    67.     height: 200px;
    68.     width: 230px;
    69.     margin: auto;
    70.         }
    71.        
    72.         #nameloto {
    73.     height: 50px;
    74.     width: 230px;
    75.     margin: auto;      
    76.         }
    77.        
    78.     </style>
    79. <body>
    80.     <div id="nameloto">
    81.         <h2>Онлайн лото 3 из 10</h2>
    82.     </div>
    83.     <div id="lototable">
    84.         <form name="lotonum" action="" method="post">
    85.         <label> Введите первое число от 0 до 10</label> <br />
    86.         <input type="text" maxlength="2" name="firstnum" id="firstnum" size="3" value="<?php echo $_SESSION["firstnum"] ?>"/>
    87.             <span class="error"> <?=$error?></span>
    88.             <br />
    89.         <label> Введите второе число от 0 до 10</label> <br />
    90.         <input type="text" maxlength="2" name="secondnum" id="secondnum" size="3" value="<?php echo $_SESSION["secondnum"] ?>"/>
    91.             <span class="error"> <?=$error?></span>
    92.             <br />
    93.         <label> Введите третье число от 0 до 10</label> <br />
    94.         <input type="text" maxlength="2" name="thirdnum" id="thirdnum" size="3" value="<?php echo $_SESSION["thirdnum"] ?>"/>
    95.             <span class="error"> <?=$error?></span>
    96.             <br /><br />
    97.         <input type="submit" name="send" value="Хочу выиграть!" />
    98.         </form><br />
    99.         <!-- 1. как дальше подключить функцию mt_rand заставить выводить ее символы от 0 до 10 в случайном порядке после нажатия кнопки? 2. потом сравнить наши переменные, введенные пользователем  3. вовдить совпавшие числа и сообщение YOU WIN или YOU LOOSE, я так понимаю 2 и 3 пункты при  помощи того же if  -->
    100.     </div>
    101. </body>
    102. </html>
     
  2. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Из $_POST приходят строковые значения, а вы их сравниваете с целыми числами. Пользуйтесь var_dump()

    В таких случаях помогает метод утки: садите рядом с экраном какого-нибудь маскота (уточку, пингвина, фото гуру кода) и начинайте обьяснять ему на пальцах что именно вы хотите и как вы собираетесь это делать. В течении рассказа вы наверняка набредёте на правильные вопросы и соответственно найдёте правильные ответы.

    Мне лично помогала фраза наставника : "{$username}, (мат)! Это же элементарно!". Я действительно верил что всё гораздо проще чем я думал и в следствии оно действительно таким являлось.
     
    Valick нравится это.
  3. rasl89

    rasl89 Новичок

    С нами с:
    22 мар 2020
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Россия, Уфа
    если бы у меня был рядом гуру, я бы сюда не писал
    этот раздел для новичков в моем представлении и рассчитан на помощь
    я и хочу разобраться как дальше должен выглядеть код
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    попробуй от обратного: если условия провалились, т.к. твоя переменная $error истинна, выведи сообщение и заверши работу - die();
    если die() не сработал, то будет выполнено то, что написано после него. помести там вывод результата.
     
  5. rasl89

    rasl89 Новичок

    С нами с:
    22 мар 2020
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Россия, Уфа
    хорошо, это попробую, а что скажете дальше? касательно mt_rand и его внедрения?
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вам надо делать в конце POST-обработчика только редирект, но на разные адреса, зависящие от ситуации. Сначала, в зависимости от наличия/отсутствия ошибки, делаете разветвление на /error/тут_id_ошибки (целевая помимо сообщения об ошибке может содержать исходную форму) и /success/..., потом в ветке success в зависимости от результатов mt_rand и введенных значений добавляете к целевому адресу id результата.
    --- Добавлено ---
    Например, если без усложнения для сохранения результата:
    /success/тут_кол-во_угаданных_чисел (0, 1, 2 или 3).
    --- Добавлено ---
    И результаты выводите уже на целевых страницах.
     
    #6 miketomlin, 24 мар 2020
    Последнее редактирование: 24 мар 2020