Сообщение функции Javascript и вызов PHP скрипт

В html у меня есть несколько кнопок, которые автоматически создаются для каждого объекта в базе данных с определенным статусом. Каждая кнопка получает свой собственный идентификатор.

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

Кнопка вызывает функцию javascript clickedbutton и дает ей номер кнопки и номер заказа этой кнопки.

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

}

Эта функция загружает номер кнопки и делает ее кнопкой 0, кнопкой1 и т.д. Последовательный заказ также успешно проходит. Теперь в функции я хочу вызвать внешний php script, но также orderid должен быть передан в script.

<?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.

Ответ 1

ОБНОВЛЕНИЕ 2018

Да, я все еще жив. Вы можете использовать API fetch вместо jQuery. Он широко поддерживается, кроме (угадайте, кто?...) 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-скрипт должен получить идентификатор заказа, например:

echo $_POST['orderid'];

Вывод вернется в виде строки в функцию успеха.

EDIT

Вы также можете использовать сокращенные функции:

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

// or eventually $.post instead of $.get

Ответ 2

Используя 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. Не принимайте этот совет как написано.

Ответ 3

Предполагая, что вы не хотите использовать AJAX, вы можете сделать что-то подобное в своей функции clickedbutton:

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

а затем на странице page.php

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

(обратите внимание на точки, чтобы присоединиться к строкам)

Ответ 4

вы можете попробовать как это

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'])."'";

Edit

Если вы хотите загрузить файл php без обновления страницы, вы можете попробовать, как предложили другие друзья.

Ответ 5

Самый простой способ - построить строку запроса и прикрепить ее к концу php script url.

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

    window.location.href = url + query
}

В php script вы можете получить доступ к параметрам следующим образом:

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