2011-09-03 74 views
0

寫入MYSQL數據庫與感謝精靈斯騰伯格(我不能讓您的解決方案的工作,對不起),我想我在正確的方向前進,但我無法寫PHP到MySQL數據庫。AJAX POST陣列 - 用PHP

的原貼:jQuery AJAX POST to mysql table for dynamic table data- Am I doing this in anything like the right way?

首先,在我的網頁動態表格的形式有多個用戶輸入數據,和我使用這個jQuery的功能和AJAX調用發送到PHP文件。我在這裏正確創建多維數組嗎? Firebug顯示dataString具有我想要的所有數據,但POST參數和源只是說dataString。此外報警功能顯示的數據都在那裏:

編輯:與感謝Jancha和安德魯,我已經改變了AJAX後的數據源。數據庫正在寫入,但只有BLANK數據被寫入,與表中的條目數相同。螢火蟲控制檯顯示所有數據,因爲它應該在帖子中看起來。我只是不知道如何構建PHP循環。

jQuery(function() { 
    jQuery(".button1").click(function() { 
    // process form here 
    var rowCount = jQuery('#dataTable tr').length; 

    var dataString = []; 
    dataString.length = rowCount - 2; 
    for(var i=2; i<rowCount; i++) { 
    var txtRow1 = jQuery('#txtRow' + (i-1)).val(); 
    var tickerRow1 = jQuery('#tickerRow' + (i-1)).val(); 
    var quantRow1 = jQuery('#quantRow' + (i-1)).val(); 
    var valueRow1 = jQuery('#valueRow' + (i-1)).val(); 
    // previous code: dataString[i-2] = 'txtRow1='+ txtRow1 + '&tickerRow1=' + tickerRow1 + '&quantRow1=' + quantRow1 + '&valueRow1=' + valueRow1; 
    // new code: 
    dataString[i-2] = [txtRow1, tickerRow1, quantRow1, valueRow1]; 
    }  
    //alert (dataString);return false; 

    jQuery.ajax({ 
    type: "POST", 
    url: "form_action2.php", 
    data: { 'data': dataString } 
    }); 
return false; 
}); 
}); 

如果這是發送數據好吧,那麼我認爲PHP函數需要看起來像這樣:

我能有PHP函數幫助請。感謝您的時間。

$data = $_POST['data']; 


foreach ($data as $key => $value){ 

$txtRow1 = $data['txtRow1']; 
$tickerRow1 = $data['tickerRow1']; 
$quantRow1 = $data['quantRow1']; 
$valueRow1 = $data['valueRow1']; 

$sqlinsert = "INSERT INTO stock_port (name, ticker, quantity, value) VALUES ('$txtRow1', '$tickerRow1', '$quantRow1', '$valueRow1')"; 

mysql_query($sqlinsert, $conn); 
} 

最後編輯:好了,所以這個工程的數據輸入到數據庫:

$data = $_POST['data']; 

foreach ($data as $value){ 
$txtRow1 = $value[0]; 
$tickerRow1 = $value[1]; 
$quantRow1 = $value[2]; 
$valueRow1 = $value[3]; 

$sqlinsert = "INSERT INTO stock_port (name, ticker, quantity, value) VALUES ('$txtRow1', '$tickerRow1', '$quantRow1', '$valueRow1')"; 

mysql_query($sqlinsert, $conn); 
} 

似乎使用數據:{「數據」:dataString}在AJAX jQuery的調用意味着我失去了所有的數組中發送到POST的數據的變量名稱。儘管這是行得通的,但它並不像應該做的那樣。我已經看到其他人在他們的ID或名稱中使用數組結構來輸入表單,而且這看起來應該是一種方式。

回答

3

變化data: "dataString"data: dataString,否則你不會傳遞變量而是一個字符串「」。

+0

你肯定這一點。我實際上已將其從data:dataString更改爲data:「dataString」,並在我搜索到的堆棧溢出問題的建議中使用。如果我進行了更改,建議我在螢火蟲控制檯中將未定義的POST信息作爲POST信息。 – MGB

+0

http://api.jquery.com/jQuery.ajax/數據:「對象,字符串 數據被髮送到服務器時,它被轉換成一個查詢字符串,如果不是已經是一個字符串」所以,如果你想傳遞實際的數組而不是字符串「dataString」,我確定它應該沒有引號。把console.log(dataString);就在jQuery.ajax之前,並在控制檯中看到它是什麼。如果它仍然沒有定義,那麼產生它的循環會出現問題。 – jancha

+0

當我檢查dataString時,它擁有我認爲應該有的所有數據,所以我不認爲問題在於創建變量dataString。 – MGB

0

可能是您的foreach語句有問題試試這個

$data = $_POST['datastring']; 
foreach($data as $key => $value){ 
    $txtRow1 = $data['txtRow1']; 
} 

這不是測試仍然嘗試一次

+0

我試過這個,但它也沒有寫入數據庫。它看起來更像我所擁有的。這可能是數據沒有以正確的格式進入php文件。這就是詹查所想的。儘管同時使用您的建議和他的建議,但不會寫入數據庫。 – MGB