Как ВСТАВИТЬ select / option из html, а также ВСТАВИТЬ переменную из array_rand в таблицу SQL

0

Я пытаюсь создать простую игру Rock, Paper, Scissors. Я использую стек XAMPP. Я успешно извлек пользовательский выбор камней, бумаги или ножниц и вставил их в таблицу. Я также успешно создал случайный "выбор от противника" с помощью array_rand, но я не могу вставить эту переменную/целое в таблицу ALSO в одно и то же время. Я смог в один момент вставить "выбор оппонентов", но никогда не с выбором пользователей, всегда один или другой. И, я полагаю, что я бы конвертировал оба варианта в целые числа, а затем использовал if/else для определения победителя каждой игры, но, как я ее протестировал, он не всегда дает правильный ответ. Я думаю, что есть, вероятно, какой-то ненужный код, такой как var_dump, который у меня есть, поэтому я вижу, что я успешно преобразовал выбор в целые числа, чтобы я мог сравнивать варианты, чтобы логически определить победителя, например. Спасибо за любую помощь.

<html> 

<body>

    <p> Make your move! Choose:</p> 
    <p> Paper, Rock, or Scissors</p> 
        <form action="rps.php" method="post" id="playform">


            <select name="playermove" id="quantity"> 
                <option value="1" selected="selected">Rock</option> 
                <option value="2">Paper</option> 
                <option value="3">Scissors</option> 
            </select> 
        </form>

        <button type="submit" form="playform" value="submit">1, 2, 3....GO!
 </button>
</body> 
</html> 
<?php
require 'connection.php';

$conn    = Connect();
$pmove   = $conn->real_escape_string($_POST['playermove']);
$omove   = $conn->(['oppmove']);


$query   = "INSERT into rpstwo.tb_rps2 (playermove) VALUES ('" . $pmove . 
"')";

$success = $conn->query($query); 

if (!$success) {
    die("Couldn't enter data: ".$conn->error);
}

$yourvar = intval($pmove);
echo "You chose: " . $yourvar . "<br>";
var_dump($yourvar);
echo "<br>";

    $oppdecision = array('rock', 'paper', 'scissors');
    $oppresult = array_rand($oppdecision, 1);
    echo "Your opponent chose: " . $oppresult . "<br>";
    $oppsmove = $oppdecision[$oppresult];
    echo $oppsmove . "<br>";

    $oppvar = intval($oppresult);

    var_dump($oppvar);


    $sql   = "INSERT into rpstwo.tb_rps2 (oppmove) VALUES ('" . $omove . 
 "')";
    $success = $conn->query($sql); 

     if ($yourvar = 1 & $oppvar = 0) {
        echo '<br>' . "you tie";
    } elseif ($yourvar = 1 & $oppvar = 1) {
        echo '<br>' . "you lose";
    }  elseif ($yourvar = 1 & $oppvar = 2) {
         echo '<br>' . "you win";
    }  else {
        echo '<br>' . "Good game!";
    } 

$conn->close();
?>
  • 0
    Пожалуйста, отметьте соответствующим образом. MySQL и SQL-сервер сильно отличаются по синтаксису.
  • 0
    Извините, Слоан Трашер, я работал над множеством разных вариаций, которые я перепутал.
Теги:

1 ответ

0

Приведенный ниже код фиксирует ваше сообщение в БД. Он не устанавливает проблем с возможностями WIN/LOSE/DRAW. Вы также должны знать, что ваш код помещает целое число для playermove и текста (камень, бумага, ножницы) для перемещения противника. У вас есть два оператора Insert, которые будут создавать две отдельные строки для каждой игры.

$pmove   = $_POST['playermove'];

$yourvar = intval($pmove);
echo "You chose: " . $yourvar . "<br>";
echo "<br>";

$oppdecision = array('rock', 'paper', 'scissors');
$oppresult = array_rand($oppdecision, 1);
echo "Your opponent chose: " . $oppresult . "<br>";
$oppsmove = $oppdecision[$oppresult];
echo $oppsmove . "<br>";

$oppvar = intval($oppresult);


$sql   = "INSERT into tb_rps2 (oppmove,playermove) VALUES ('$oppresult','$pmove')";
$success = $conn->query($sql); 

 if ($yourvar = 1 & $oppvar = 0) {
    echo '<br>' . "you tie";
} elseif ($yourvar = 1 & $oppvar = 1) {
    echo '<br>' . "you lose";
}  elseif ($yourvar = 1 & $oppvar = 2) {
     echo '<br>' . "you win";
}  else {
    echo '<br>' . "Good game!";
} 

$conn->close();
  • 0
    Обновлен ответ, так что INSERT отправляет только целые числа.
  • 0
    Да, это работает, спасибо, Билли. Итак, я вижу, что вы удалили "real_escape_string" из "$ pmove = $ _POST ['playermove'];". И объединил два оператора в одно, удалил имя базы данных «rpstwo» и просто оставил имя таблицы «tb_rps2» в «$ sql =» INSERT в ЗНАЧЕНИЯ tb_rps2 (oppmove, playermove) ('$ oppresult', '$ pmove') " ;». Есть ли одна конкретная вещь, которая исправила реальную проблему, а другие изменения были просто для очистки кода? Или все изменения были необходимы для решения проблемы? Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню