2011-02-28 41 views
9

Tôi đã thấy nhiều hướng dẫn, nhưng chúng quá khó hiểu, và để làm những gì tôi muốn, tôi không hiểu cách sử dụng các công cụ hiện có từ các hướng dẫn đó khiến họ làm việc theo cách họ muốn.Chèn vào MySQL từ PHP (jQuery/AJAX)

Tôi có một biểu mẫu rất đơn giản, có chứa hộp văn bản, nhãn và nút gửi. Khi người dùng nhập nội dung nào đó vào biểu mẫu, sau đó nhấp vào gửi, tôi muốn sử dụng php và ajax (với jquery) để chèn kết quả của biểu mẫu vào cơ sở dữ liệu mysql.

Ai đó có thể vui lòng cho tôi biết cách thức này có thể đạt được không? Chỉ cần một cái gì đó rất cơ bản là tất cả tôi là sau khi để tôi bắt đầu. Bất kỳ trợ giúp được đánh giá cao.

Cảm ơn bạn

+0

Theo như ý nghĩa của PHP, dữ liệu được gửi qua AJAX không thể phân biệt được với dữ liệu được gửi qua biểu mẫu thông thường. Nó chỉ là một cuộc gọi GET/POST. –

+0

@Lucifer lưu ý rằng tên miền chéo ajax rất phức tạp – kjy112

+0

Cảm ơn @Marc B, điều đó thực sự hữu ích. –

Trả lời

20

Hi ở đây chỉ là một ví dụ nhanh như thế nào người ta có thể làm điều đó:

HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
     <title>Quick JQuery Ajax Request</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

     <!-- include the jquery lib --> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
      var ajaxSubmit = function(formEl) { 
       // fetch where we want to submit the form to 
       var url = $(formEl).attr('action'); 

       // fetch the data for the form 
       var data = $(formEl).serializeArray(); 

       // setup the ajax request 
       $.ajax({ 
        url: url, 
        data: data, 
        dataType: 'json', 
        success: function() { 
         if(rsp.success) { 
          alert('form has been posted successfully'); 
         } 
        } 
       }); 

       // return false so the form does not actually 
       // submit to the page 
       return false; 
      } 
     </script> 

    </head> 
    <body> 

     <form method="post" action="process.php" 
       onSubmit="return ajaxSubmit(this);"> 
      Value: <input type="text" name="my_value" /> 
      <input type="submit" name="form_submit" value="Go" /> 
     </form> 

    </body> 
</html> 

Kịch bản process.php:

<?php 

function post($key) { 
    if (isset($_POST[$key])) 
     return $_POST[$key]; 
    return false; 
} 

// setup the database connect 
$cxn = mysql_connect('localhost', 'username_goes_here', 'password_goes_here'); 
if (!$cxn) 
    exit; 
mysql_select_db('your_database_name', $cxn); 

// check if we can get hold of the form field 
if (!post('my_value')) 
    exit; 

// let make sure we escape the data 
$val = mysql_real_escape_string(post('my_value'), $cxn); 

// lets setup our insert query 
$sql = sprintf("INSERT INTO %s (column_name_goes_here) VALUES '%s';", 
       'table_name_goes_here', 
       $val 
); 

// lets run our query 
$result = mysql_query($sql, $cxn); 

// setup our response "object" 
$resp = new stdClass(); 
$resp->success = false; 
if($result) { 
    $resp->success = true; 
} 

print json_encode($resp); 
?> 

Xin lưu ý rằng không ai trong số này đã được thử nghiệm. Tôi hy vọng nó sẽ giúp bạn.

+2

Oow! Cảm ơn đống, @ZeSimon. :) –

4

Phần jQuery thường khá đơn giản. Nó chỉ chuyển hướng hành động biểu mẫu thông thường = qua trình xử lý Javascript. $.post là dễ sử dụng và bạn chỉ cần .serialize() gói lên các giá trị hình thức hiện có thành một chuỗi:

<form id="example"> 
<input name="textbox" ...> 
<input type=submit name="submitbuttonname" value="submit" 
    onClick="$.post('save.php', $('form#example').serialize())"> 

Và đứng về phía PHP bạn chỉ nhận được nội dung thông qua $_POST và lưu nó vào cơ sở dữ liệu (sử dụng mysql_ cũ chức năng cũng sẽ có thể, chỉ cồng kềnh hơn):

$db = new PDO("mysql:..."); 

if ($_POST["submitbuttonname"]) { 

    $q = $db->prepare("INSERT INTO save (textbox, label) VALUES (?, ?)"; 
    $q->execute(array($_POST["textbox"], $_POST["label"])); 
+0

Bạn có nghiêm túc không? Điều đó cũng dễ dàng như chèn cách thông thường. Cảm ơn! :-D –

+0

@Lucifier: Có. jQuery biến nó thành một yêu cầu POST thông thường. Đó là lý do tại sao mọi người đều thích nó. – mario

+0

@Lucifier tôi tin rằng hỗ trợ PDO là> = php 5.1.0 đảm bảo máy chủ của bạn hỗ trợ nó. – kjy112

Các vấn đề liên quan