2013-05-30 16 views
8

W html Mam kilka przycisków, które są automatycznie tworzone dla każdego obiektu w bazie danych o określonym statusie. Każdy przycisk otrzymuje własny identyfikator.Funkcja JavaScript post i wywołanie skryptu php

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

Przycisk wywołuje funkcji JavaScript clickedbutton i nadaje mu numer przycisku i OrderID tego przycisku.

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

} 

ładunki tej funkcji w liczbie przyciskiem i sprawia, że ​​button0, button1 itp OrderID również pomyślnie przeszedł przez. Teraz w funkcji chcę wywołać zewnętrzny skrypt php, ale także orderid musi zostać przekazany do skryptu.

<?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(); 
?> 

Wiem o ochronie mysqli i wszystkim, poprawię to później. Teraz chcę się skupić na powyższym pytaniu, jak wywołać i przejść przez zmienną orderid do phpscript.

Odpowiedz

12

Będziesz musiał użyć AJAX.

Samo Javascript nie może osiągnąć skryptu php. Będziesz musiał złożyć wniosek, przekazać zmienną do PHP, ocenić ją i zwrócić wynik. Jeśli you'are jQuery wysyłając żądanie ajax jest dość prosta:

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

i skrypt php powinien otrzymać identyfikator zamówienia jak:

echo $_POST['orderid']; 

Wyjście powróci jako ciąg do funkcji sukcesu .

EDIT

Można również użyć skrótowym funkcje:

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

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

funkcji clickedbutton (buttonid, OrderID) { buttonid = "przycisk" + buttonid; $ .ajax ({ dane: 'OrderID =' + OrderID, url: 'statusupdate.php', sposób: 'POST', // lub GET success: function() { msg alert (msg); } }); } – DaViDa

+0

$ strSQL = "zestaw aktualizacji zamówień OrderStatus = 'W toku' gdzie OrderID = '" + $ _POST [' buttonid '] + "'"; – DaViDa

+0

Dzięki za pomoc wszystkim, myślę, że ją mam !!! – DaViDa

0

Za pomocą Ajax.

function clickedbutton(buttonid,orderid){ 

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

} 

W php otrzymasz go za pomocą $ _POST.

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

można spróbować jak to

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

i na stronie php

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

Edytuj

Jeśli chcesz załadować plik PHP bez odświeżania strony wtedy może spróbować, tak jak sugerowali znajomi ..

1

Zakładając, że nie chcesz korzystać z AJAX, można zrobić coś takiego w swojej funkcji clickedbutton:

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

, a następnie na twojej stronie.php

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

(zauważ kropki dołączyć ciągi)

0

Najprostszym sposobem jest zbudowanie ciąg kwerendy i dołączyć go do końca URL skryptu PHP.

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

    window.location.href = url + query 
} 

W skrypcie php można uzyskać dostęp do parametrów poprzez tak:

<?php 
echo $_GET['buttonid']; 
echo $_GET['orderid']; 
Powiązane problemy