2013-05-30 9 views
8

In HTML habe ich mehrere Schaltflächen, die automatisch für jedes Objekt in der Datenbank mit einem bestimmten Status erstellt werden. Jeder Button erhält eine eigene ID.Javascript Funktion Post und Anruf PHP-Skript

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

Die Schaltfläche ruft die JavaScript-Funktion clickedbutton und gibt ihm die Nummer der Taste und die orderid dieser Taste.

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

} 

Diese Funktion lädt in der Anzahl der Taste und macht es Button0, button1 etc. Das orderid auch durch erfolgreich geführt wird. Jetzt in der Funktion möchte ich ein externes PHP-Skript aufrufen, aber auch orderid muss an das Skript übergeben werden.

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

Ich weiß über den mysqli Schutz und alle, ich werde das später anpassen. Nun möchte ich mich auf die obige Frage konzentrieren, wie ich die Variable orderid zum phpscript aufrufen und übergeben kann.

Antwort

12

Sie müssen AJAX verwenden.

Javascript allein kann kein PHP-Skript erreichen. Sie müssen eine Anfrage stellen, die Variable an PHP übergeben, sie auswerten und ein Ergebnis zurückgeben. Wenn you'are jQuery mit einem ajax Anfrage zu senden ist ziemlich einfach:

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

und PHP-Skript sollte die Reihenfolge ID erhalten wie:

echo $_POST['orderid']; 

Der Ausgang wird als String in die Erfolgsfunktion zurückkehren .

EDIT

Sie können auch die Kurzschreibweise Funktionen nutzen:

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

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

Funktion clickedbutton (buttonid, orderid) { buttonid = "Taste" + buttonid; $ Schnipsel ({ Daten: 'orderid =' + orderid, url: 'statusupdate.php', Methode: 'POST', // oder GET Erfolg: function (msg) { alert (msg); } }); } – DaViDa

+0

$ strSQL = "Bestellungen aktualisieren OrderStatus = 'In Progress' wobei OrderID = '" + $ _POST [' buttonid '] + "'"; – DaViDa

+0

Danke für die Hilfe jeder, ich denke, ich habe es !!! – DaViDa

0

Mit Ajax.

function clickedbutton(buttonid,orderid){ 

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

} 

In PHP erhalten Sie es mit $ _POST.

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

Sie können wie versuchen, diese

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

und in PHP-Seite

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

bearbeiten

Wenn Sie die PHP-Datei ohne Seitenaktualisierung Sie laden möchten, dann kann versuchen, wie Freunde empfohlen ..

1

Sie Angenommen, wollen nicht AJAX verwenden, können Sie in Ihrer Funktion clickedbutton so etwas tun:

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

und dann auf Ihrer Seite.php

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

(beachten Sie die Punkte Strings zu verbinden)

0

Der einfachste Weg ist es, eine Abfrage-String zu bauen und es bis zum Ende der URL des PHP-Skript anhängen.

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

    window.location.href = url + query 
} 

Im PHP-Skript Sie die Parameter über wie folgt zugreifen können:

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