web-dev-qa-db-ja.com

JavaScript関数の投稿とPHPスクリプトの呼び出し

Htmlには、特定のステータスを持つデータベース内の各オブジェクトに対して自動的に作成されるいくつかのボタンがあります。各ボタンは独自のIDを取得します。

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>';

ボタンはjavascript関数clickedbuttonを呼び出し、ボタンの番号とそのボタンの注文IDを提供します。

function clickedbutton(buttonid,orderid){
buttonid = "button" + buttonid;

}

この関数は、ボタンの番号をロードし、button0、button1などにします。orderidも正常にパススルーされます。ここで、関数内で外部phpスクリプトを呼び出しますが、orderidもスクリプトに渡す必要があります。

<?php
    //connect to database
    include_once('mysql_connect.php');

    // Select database
    mysql_select_db("test") or die(mysql_error());

    // SQL query
    $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + orderid + "'";

    mysql_close();
?>

Mysqliの保護とすべてについて知っています。後で調整します。ここで、上の質問、変数orderidを呼び出してphpscriptに渡す方法に焦点を当てたいと思います。

10
DaViDa

EDIT 2018

ええ、私はまだ生きています。 fetchの代わりにjQuery AP​​Iを使用できます。 (guess who?...)IE 11以下ではありませんが、そのためのポリフィルがあります。最新のコーディングをお楽しみください。

フェッチAPIのサポート

古い回答

AJAXを使用する必要があります。

Javascriptだけではphpスクリプトに到達できません。リクエストを作成し、変数をPHPに渡して評価し、結果を返す必要があります。 jQueryを使用している場合、 ajax リクエストを送信するのは非常に簡単です。

$.ajax({
    data: 'orderid=' + your_order_id,
    url: 'url_where_php_is_located.php',
    method: 'POST', // or GET
    success: function(msg) {
        alert(msg);
    }
});

phpスクリプトは次のような注文IDを取得する必要があります。

echo $_POST['orderid'];

出力は、成功関数に文字列として返されます。

[〜#〜] edit [〜#〜]

速記機能も使用できます。

$.get('target_url', { key: 'value1', key2: 'value2' }).done(function(data) {
    alert(data);
});

// or eventually $.post instead of $.get
20
Savas Vedova

AJAXを使用したくない場合、clickedbutton関数で次のようなことができます。

window.location.replace('path/to/page.php?orderid=' + orderid);

そして、あなたのpage.phpで

"...where OrderID = '" . $_GET('orderid') . "'";

(文字列を結合するドットに注意してください)

1
Jesús Carrera

Ajaxを使用する。

function clickedbutton(buttonid,orderid){

    $.post("page.php", { buttonid: buttonid })
    .done(function(data) {
        alert("Data Loaded: " + data);
    });

}

Phpでは、$ _ POSTで取得します。

//[..] previous php code
$strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'";
//[..] rest of php code

SQLインジェクションに注意してください。書かれているようにこのアドバイスを受け入れないでください。

1
Ivo Pereira

最も簡単な方法は、クエリ文字列を作成し、それをphpスクリプトのURLの末尾に添付することです。

function clickedbutton(buttonid,orderid){
    var url = 'script.php?';
    var query = 'buttonid=' + buttonid + '&orderid=' + orderid;

    window.location.href = url + query
}

Phpスクリプトでは、次のようにしてパラメーターにアクセスできます。

<?php
echo $_GET['buttonid'];
echo $_GET['orderid'];
0
HarryFink

あなたはこのように試すことができます

var url = myurl +'?id=' + orderid;
window.location.href = url;

とPHPページで

 $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '".mysql_real_escape_string($_GET['id'])."'";

編集

ページを更新せずにphpファイルをロードする場合は、仲間の友人が提案したとおりに試すことができます。

0
sAnS