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に渡す方法に焦点を当てたいと思います。
EDIT 2018
ええ、私はまだ生きています。 fetch
の代わりにjQuery
APIを使用できます。 (guess who?...)IE 11以下ではありませんが、そのためのポリフィルがあります。最新のコーディングをお楽しみください。
古い回答
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
AJAXを使用したくない場合、clickedbutton
関数で次のようなことができます。
window.location.replace('path/to/page.php?orderid=' + orderid);
そして、あなたのpage.phpで
"...where OrderID = '" . $_GET('orderid') . "'";
(文字列を結合するドットに注意してください)
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インジェクションに注意してください。書かれているようにこのアドバイスを受け入れないでください。
最も簡単な方法は、クエリ文字列を作成し、それを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'];
あなたはこのように試すことができます
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ファイルをロードする場合は、仲間の友人が提案したとおりに試すことができます。