Отправьте некоторые данные в базу данных mysql в определенных полях через window.prompt (код работает неправильно) - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь отправить некоторые данные на сервер, на котором работает MySQL. Я запускаю следующий код, но консоль не показывает мне никаких ошибок. Не могли бы вы взглянуть и сказать мне, если вы видите что-то не так? Любая помощь будет признательна, потому что я не могу найти аналогичные рекомендации вокруг ..

То, что я хочу, чтобы мой код делал так: Я хочу, чтобы пользователь через window.prompt дал 4 значения, которые будут храниться в переменных: user_id, book_id, game_id, site_id. Тогда эти 4 значения должны быть сохранены в моей базе данных ...

index.html

    <html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <script>
    function save3()
    {
    $("#user_id").val(prompt("Give the UserId:"))
    $("#book_id").val(prompt("Give the BookId:"))
    $("#game_id").val(prompt("Give the GameId:"))
    $("#site_id").val(prompt("Give the SiteId:"))
    }
   </script>

</head>
  <body>

<p align="center">example</p>
<table align="center" width="730">
<tr>
<td align="center">
<div>
  <table class="blueTable" style="float: left">
    <thead>
<tr>
 <th colspan="1"><u>Menu</u></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="button" value="New" id="new" onclick="new1()" class="button12"/></td></tr>
<tr>
<td><input type="button" value="Load" id="load" onclick="load2()" class="button12"/></td></tr>
<tr>
<td><form name="SaveGame" id="SaveGame" method="post" action="http://127.0.0.1/PHP/mine2.php" enctype="multipart/form-data">
<input type="submit" value="Save" id="save" onclick="save3()" class="button12"/>
<input type="hidden" name="user_id" id="user_id" >
<input type="hidden" name="book_id" id="book_id" >
<input type="hidden" name="game_id" id="game_id" >
<input type="hidden" name="site_id" id="site_id" >
</form>
 <script>
        $("#SaveGame").submit(function(e) {


    var form = $(this);
    var url = form.attr('action');

        $.ajax({
               type: "POST",
               url: url,
               data: form.serialize(), // serializes the form's elements.
               success: function(data)
               {
                   alert("The game has been saved!"); // show response from the php script.
               }
             });

        e.preventDefault(); // avoid to execute the actual submit of the form.
    });
    </script>
</body>
</html>

mine2.php

    <?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("127.0.0.1", "root", "", "mysql3");
// Check connection
if($link === false) {
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

$user_id =$_POST['user_id'];
$book_id =$_POST['book_id'];
$game_id =$_POST['game_id'];
$site_id =$_POST['site_id'];

if (mysql_query("INSERT INTO `components` (`user_id`, `book_id`, `game_id`, `site_id`) VALUES ('".$user_id."','".$book_id."','".$game_id."', '".$site_id."',)"))

// Attempt insert query execution
//$sql = "INSERT INTO components (user_id, book_id, game_id, site_id) VALUES ('6', '6', '6', '6')";
//if(mysqli_query($link, $sql)){
//} else{
//}

// Close connection
mysqli_close($link);
?>

Ребята, также я нашел этот вопрос: JS Prompt to PHP Variable Должен ли я использовать что-то оттуда?

1 Ответ

0 голосов
/ 30 августа 2018

Вам необходимо добавить в форму информацию, которую вы получаете из подсказок. Лучше всего использовать скрытые вводы типа:

<input type="hidden" name="user_id" id="user_id" >

и в вашу функцию save3 ()

$("#user_id").val(prompt("Give the UserId:"))

То же самое для других переменных.

Кроме того, вам необходимо подтвердить свой код PHP. Я видел несколько ошибок. Попробуйте использовать это:

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = new mysqli("127.0.0.1", "root", "", "mysql3");

// Check connection
if($link->connect_errno) {
   die("ERROR: Could not connect. " . $link->connect_error);
}

$user_id =$_POST['user_id'];
$book_id =$_POST['book_id'];
$game_id =$_POST['game_id'];
$site_id =$_POST['site_id'];

if ($result = $link->query("INSERT INTO `components` (`user_id`, `book_id`, `game_id`, `site_id`) VALUES ('$user_id','$book_id','$game_id', '$site_id')") == true)
  echo json_encode($result);
else {
  echo "Error";
}

// Attempt insert query execution
//$sql = "INSERT INTO components (user_id, book_id, game_id, site_id) VALUES ('6', '6', '6', '6')";
//if(mysqli_query($link, $sql)){
//} else{
//}

// Close connection
$link->close();
?>

Методы mysqli_connect и mysql_query устарели, вместо этого я предлагаю использовать новую mysqli ().

И проверьте ваш оператор INSERT, у вас есть синтаксическая ошибка.

Дайте мне знать, если это работает для вас, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...