2013-05-30 24 views
8

html'de Veritabanındaki her nesne için belirli bir durumla otomatik olarak yapılan birkaç düğme var. Her düğme kendi kimliğini alır.Javascript işlevini çağırın ve php komut dosyasını arayın

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

düğmesi javascript fonksiyonu clickedbutton çağırır ve ona düğmeye numarası ile o düğmeye orderid verir.

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

} 

Bu fonksiyon düğmesi sayısında yükler ve orderid da başarıyla geçirilir, button1 vb bunu Button0 yapar. Şimdi fonksiyonda harici bir php betiğini çağırmak istiyorum, fakat orderid de betiğe aktarılmalıdır.

<?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 korumasını biliyorum ve hepsini daha sonra ayarlayacağım. Şimdi yukarıdaki soruya odaklanmak istiyorum, orderid değişkenini phpscript'e nasıl çağırırım ve ileteceğim. Ajax'ı kullanarak

cevap

12

AJAX'ı kullanmanız gerekecek. Yalnızca bir php betiğine ulaşılamıyor. Bir talepte bulunmanız, değişkeni PHP'ye iletmeniz, değerlendirmeniz ve sonuç vermeniz gerekiyor. you'are bir ajax isteği göndererek jQuery kullanılıyorsa oldukça basittir:

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

ve benzeri sipariş kimliği almalısınız php komut:

echo $_POST['orderid']; 

çıkış başarı işleve bir dize olarak döndürür .

DÜZENLEME

Ayrıca steno işlevleri kullanabilirsiniz: Eğer clickedbutton işlevinde böyle bir şey yapabiliriz, AJAX kullanmak istemiyorsanız size varsayarsak

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

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

fonksiyon clickedbutton (buttonid, orderid) { buttonid = "button" + buttonid; $ .ajax ({ veriler: 'orderid =' + orderid, url: 'statusupdate.php', yöntemi: 'POST', // veya başarı GET: function (msg) { alert (msg); } }); } – DaViDa

+0

$ strSQL = "siparişleri güncelle OrderStatus = 'In Progress' Burada OrderID = '" + $ _POST [' buttonid '] + "'"; – DaViDa

+0

Yardım ettiğim herkes için teşekkürler. – DaViDa

0

.

function clickedbutton(buttonid,orderid){ 

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

} 

PHP'de $ _POST ile elde edersiniz.

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

size sonra sayfa yenileme olmadan php dosyasını yüklemek istiyorsanız

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

Edit

bu

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

gibi ve php sayfasında deneyebilirsiniz Arkadaşlarının önerdiği gibi deneyebilir ..

1

:

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

ve ardından sayfanızda.php

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

0

kolay yolu bir sorgu dizesi oluşturmak ve php komut dosyasının url sonuna ekleyin etmektir (dizeleri katılmak için noktaları dikkat edin). Böyle aracılığıyla parametrelere erişebilir php komut dosyasında

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

    window.location.href = url + query 
} 

:

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