как получить переменную javascript в php и добавить ее в базу данных - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужна помощь, я новичок в AJAX.Я пытаюсь создать хронометр, я хочу, чтобы, когда он нажимает на кнопку, он получает значение, прошедшее через ajax, и вставку в базу данных.Когда я выполняю код, он не имеет ошибок, но также не вставляется в базу данных.

 <?php

    $pdo = new PDO('mysql:host=localhost;dbname=jeu', 'root', '', array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES cp1256'
  ));
?>
<!doctype html>
  <html>
    <head>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
   </head>
      <body >
      <span id="mySpan" style="font-size: 80px;">20</span>
      <input id="arret" type="button" value="Arret">


    <script type="text/javascript">
    function decrementer() {
    if ( mySpan.innerHTML > 0 ) {
         mySpan.innerHTML-- ;
         setTimeout(decrementer, 1000);
         }
    }
    setTimeout(decrementer, 1000) ;
     var element = document.getElementById('arret');

        element.onclick = function() {
           var chrono=mySpan.innerHTML;
       $.ajax({
                        type: "GET",
                        data: {chrono : chrono},
                        success: function(data)
                        {
                            console.log(chrono);
                        }
                    });    
        };
    </script>
             <?php
     if(isset($_GET['chrono']))
    {
        $uid = $_GET['chrono'];
        echo($uid );
          $resultat = $pdo -> prepare("INSERT INTO ajaxtest (name) VALUES (:name)");
        $resultat  -> bindParam(':rep', $uid, PDO::PARAM_STR);

  if($resultat -> execute()){ 
   $id_insere = $pdo -> lastInsertId();
    }
    }
  ?>
  </body>
 </html>

1 Ответ

0 голосов
/ 12 декабря 2018

Я бы посоветовал вам разделить ваш php и html, а затем отправить данные на php с помощью ajax.

На вашем php вы связываете :rep, но вы используете заполнитель :name, поэтому вам нужно связать:name

$resultat  -> bindParam(':name', $uid, PDO::PARAM_STR);

html side.

<!doctype html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    </head>
    <body >
        <span id="mySpan" style="font-size: 80px;">20</span>
        <input id="arret" type="button" value="Arret">
        <script type="text/javascript">
            function decrementer() {
            if ( mySpan.innerHTML > 0 ) {
                 mySpan.innerHTML-- ;
                 setTimeout(decrementer, 1000);
                 }
            }
            setTimeout(decrementer, 1000) ;
             var element = document.getElementById('arret');

                element.onclick = function() {
                   var chrono=mySpan.innerHTML;
               $.ajax({
                    type : "POST",
                    url   : "somefile.php", //url to send data to
                    data: {chrono : chrono},
                    success: function(data)
                    {
                        console.log(data); //log data back
                    }
                });    
                };
        </script>
    </body>
</html>

somefile.php

<?php

$pdo = new PDO('mysql:host=localhost;dbname=jeu', 'root', '', array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES cp1256'
));


$uid = isset($_POST['chrono']) ? $_POST['chrono'] : null;

$resultat = $pdo->prepare("INSERT INTO ajaxtest (name) VALUES (:name)");
$resultat->bindParam(':name', $uid, PDO::PARAM_STR);

if ($resultat->execute()) {
    $id_insere = $pdo->lastInsertId();

    echo json_encode("data inserted success");
}

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