2016-04-01 3 views
0

PHPでデータベースに値を保存したい。私はAJAXでPHP関数を呼び出します。ウェブサイトは、パラメータで呼び出された場合、私はdocument.ready()にチェックPHPでDBに値を格納する - JavaScriptからAjaxを呼び出す

temperatureと呼ばれる:

$(document).ready(function(){ 
    var data = 5; //gup('temperature', location.href); 
    if(data != undefined){ 
     var sendData = 'func=storeValue&value=' + data + '&datetime=' + getDateTime(); 
     $.ajax({ 
      data: sendData, 
      type: "POST", 
      url: "FunctionManager.php", 
      success: function(data){ 
       alert("Data Saved " + data); 
      }, 
      error: function(xhr){ 
       alert(xhr.responseText); 
      } 
     }) 
    } 
} 

私は渡されたパラメータで決定に従って機能を呼び出すためにPHPファイル「FunctionManager」を使用します。だから私はdatadatetimeを渡す。私のFunctionManagerは次のようになります:

<?php 
     include "$_SERVER[DOCUMENT_ROOT]/SQLCommunication.php"; 

     header('Content-Type: application/json'); 
     if(!isset($_GET['func']) && empty($_GET['func'])){ 
      exit(); 
     } 

     if($_POST['func'] === "readValue"){ 
      echo readValue(); 
     }elseif($_POST['func'] === "storeValue"){ 
      echo storeValue($_POST["value"], $_POST["datetime"]); 
     } 
    ?> 

私は最初に、どの関数が呼び出されているかを確認してから、パラメータで関数自体を呼び出します。私はパラメータでウェブサイトを呼び出した後、私のデータベースに新しい行があるので、これが動作することを知っています。しかし、フィールドdatetimevalueは常にゼロです。マイstoreValue - 機能がSQLCommunication.phpに位置し、このようになりますされています

function storeValue($val, $datetime){   
    $conn = establishConnection(); 
    if($conn->connect_error){ 
     die("Connection failed: ". $conn->connect_error); 
    } 

    //$datetime = date_default_timezone_get(); 
    //$datetime = '2016-01-04 00:18:00'; 

    $sql = "INSERT INTO tempvalues (datetime, value) VALUES ('$datetime', '$val')"; 
    $conn->query($sql); 
    $conn->close(); 
} 

これは私がtemperatureパラメータを読み込むために使用する機能です。

function gup(name, url) { 
    if (!url) url = location.href; 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(url).toString(); 
    return results == null ? null : results[1]; 
} 

あなたは私が作った間違い任意のアイデアを持っていますか? ありがとう

+0

datetimeのデータベースデータ型は何ですか? –

+0

これは 'datetime'です。 'value'のdatatpyeは' INT'です – binaryBigInt

+1

jqueryポストを実行すると、get変数を送信することはできません。 – Garytje

答えて

1

jqueryコードは次のようにする必要があります。ブラウザのコンソールを見ると、いくつかのエラーが表示されることがあります。 jqueryのは、次のようにする必要があります:

var date = new Date(); 
var year = date.getFullYear(); 
var month = date.getMonth() + 1; 
var day = date.getDate(); 
var hours = date.getHours(); 
var minutes = date.getMinutes(); 
var seconds = date.getSeconds(); 

newdate = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; 

$(document).ready(function(){ 
    var storeValue = 'storeValue'; 
    var data = gup('temperature', location.href);   
    if(data != undefined){ 
    yourData = 'func='+storeValue+'&value='+data+'&newdate='+newdate; 
     $.ajax({ 
      data: yourData, 
      type: "POST", 
      url: "FunctionManager.php, 
      success: function(data){ 
       alert("Data Saved " + data); 
      }, 
      error: function(xhr){ 
       alert(xhr.responseText); 
      } 
     }); 
    } 
}); 

print_r($_POST); 

    include "$_SERVER[DOCUMENT_ROOT]/SQLCommunication.php"; 

    header('Content-Type: application/json'); 
    if(!isset($_POST['func']) || empty($_POST['func'])){ 
     exit(); 
    }else{ 

$func = isset($_POST['func'])? $_POST['func']: 'storeValue'; 
$val = isset($_POST['value'])? $_POST['value']:''; 
$datetime = isset($_POST['newdate'])? $_POST['newdate']:''; 

if($func == 'readValue'){ 
     echo readValue(); 
}elseif($func == 'storeValue'){ 
     echo storeValue($val, $datetime); 
} 
} 

Functionmanager.php

では、あなたの日付フィールドでは、あなたのテーブルには、日時として設定するデータ型。これが役立つことを願っています。

+0

動作しません。今私のデータベースには何も得られません。コードを更新しました。 – binaryBigInt

+0

あなたのコンソールをチェックしましたか? –

+0

それは何も言わない。私は、インデックス 'func'が定義されていないが、それは一般的なPHPの警告ですPHPエラーを取得します。奇妙なことは、もし私が '$ _POST'の代わりに' $ _GET'を行うと、私はこれらの警告を受け取らないことと、データベースから最新の値を返す 'getData'関数が再び動作することです。だから、 '$ _POST'をつけるのが正しいかどうか分かりません – binaryBigInt

関連する問題