2012-04-24 54 views
7

Tôi đang cố gắng xây dựng một ứng dụng di động với PhoneGap và jQuery Mobile. Trong ứng dụng của tôi, tôi có một trang mà là một liên kết đến tập tin PHP cập nhật MYSQL và hướng đến trang tiếp theo. Nhưng với PhoneGap tôi cần phải có tất cả các tập tin PHP trên máy chủ bên ngoài vì vậy tôi không thể giải pháp hiện tại của tôi trên ứng dụng này.Cập nhật MYSQL với jQuery/AJAX

Đây là PHP mà tôi sử dụng để cập nhật MYSQL

<?php 

$var = @$_GET['id'] ; 

$con = mysql_connect("localhost","username","abc123"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("database", $con); 

mysql_query("UPDATE table SET condition=true 
WHERE ID= \"$var\" "); 

header('Location: http://1.2.3.4/test'); 

mysql_close($con); 
?> 

Vậy làm thế nào tôi có thể chạy PHP này khi người dùng nhấp vào một nút? Với jQuery/AJAX tôi giả sử?

+0

bạn có thể gửi một số mã nơi bạn gọi trang php này trong ứng dụng. – vikky

+1

Điều này dễ bị tiêm 'SQL'. Không bao giờ chèn dữ liệu do người dùng cung cấp trực tiếp vào truy vấn mà không cần thoát chúng. – Quassnoi

Trả lời

8

Cho phép nói mã PHP ở trên có trong tệp, update.php. Sau đó, bạn có thể sử dụng mã sau -

<head> 
<script src="jquery.js"></script> 
<script> 
    function UpdateRecord(id) 
    { 
     jQuery.ajax({ 
     type: "POST", 
     url: "update.php", 
     data: 'id='+id, 
     cache: false, 
     success: function(response) 
     { 
     alert("Record successfully updated"); 
     } 
    }); 
} 
</script> 
</head> 
<body> 
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);"> 
</body> 

Chỉ cần chuyển một id hợp lệ trong chức năng UpdateRecord. Đặt mã PHP của bạn trong tập tin update.php. Chỉ cần được ở một khía cạnh an toàn hơn, trong mã PHP của bạn thay $var = @$_GET['id'] ; với $var = @$_POST['id'] ; và kiểm tra xem các công trình này cho bạn

+0

làm cách nào để tôi cần thay đổi mã này để làm cho nó hoạt động? Bây giờ nó không làm bất cứ điều gì .. – user1323294

+0

Có ít nhất là cập nhật các hồ sơ? – skos

+0

Khi tôi nhấp vào nút, nó không làm gì cả. – user1323294

1

nói rằng nút của bạn có id clickme bạn ràng buộc trình xử lý sự kiện trên đó như sau, tôi sử dụng công cụ chọn để tránh trường hợp mã được thực thi khi nút không tồn tại trên trang. liên kết trình xử lý click

$(document).on("click","#clickme",function(){ 
    $.ajax({ 

     type:"POST", //GET - update query should be POST 
     url: my_endpoint.php, //your php end point 
     data: {jsonKey1:jsonValue1}, 
     success: function(data){ //if success 
      //do necessary things with data 
     } 

    }) 
}); 

Đây có phải là những gì bạn đang tìm kiếm không?

+0

Dường như nó không hoạt động – user1323294

0

Do something chức năng thành công của bạn

success: function(response) 
    { 
     window.location = response; 
    } 

và bạn html nên chứa

Và trong php làm điều gì đó như thế này

mysql_query('blah blah'); 
mysql_close($con); 

echo "http://1.2.3.4/test"; 
2
<head> 
<script src="jquery.js"></script> 
<script> 
    function UpdateRecord(id) 
    { 
     jQuery.ajax({ 
     type: "POST", 
     data: 'id='+id,  // <-- put on top 
     url: "update.php", 
     cache: false, 
     success: function(response) 
     { 
     alert("Record successfully updated"); 
     } 
    }); 
} 
</script> 
</head> 
<body> 
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(1);"> 
</body> 

Th mã OSE đề xuất bởi Sachyn Kosare làm việc, điều duy nhất là dòng data: 'id='+id có được trên đầu trang của url: "update.php"

Và, bạn có thể sử dụng $var = $_POST['id']; cho PHP của bạn.