2013-03-19 118 views
3

我試圖將一個html表格行保存到php數組中,然後將數組保存到數據庫中。將HTML表格行轉換爲PHP數組並將其保存到數據庫?

<form action="" method="post"> 
     <table class="widefat" id="theTable"> 
         <thead> 
           <tr> 
            <th>Level Identifier</th> 
            <th>Non-logged in message</th> 
            <th>Logged in message</th> 
           </tr> 
         </thead> 
         <tbody> 

            <tr> 
            <td><input type="text" value="" style="height: 19px;background-color: white;font-size:10px;"/></td> 
            <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1">This is your custom message template</textarea></td> 
            <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1">This is your custom message template</textarea></td> 
            </tr> 

            <tr> 
            <td><input type="text" value="" style="height: 19px;background-color: white;font-size:10px;"/></td> 
            <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1"></textarea></td> 
            <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1"></textarea></td> 
            </tr> 

         </tbody>  
        </table> 
       </form> 

我怎麼能檢索每行數據並將其保存到數組元素,最後我會保存數組分貝?謝謝

+1

你嘗試過什麼到目前爲止做samething?任何嘗試解析HTML?任何嘗試寫入數據庫?什麼樣的數據庫?你喜歡/可以使用的任何圖書館? – Ryan 2013-03-19 18:18:07

+0

你的問題不清楚。您想要保存每個表格行的值,還是隻保存輸入和文本區域中的值? – SteveP 2013-03-19 18:19:41

+0

爲什麼你會首先使用表格佈局表單元素?使用div/css – GGio 2013-03-19 18:33:19

回答

6

如果你想節省每一行HTML DO:

使用jQuery。

var rowsArray = {}; 
var i = 0; 
$('#theTable tr').each(function({ 
    rowsArray[i] = $(this).html(); // if you want to save the htmls of each row 
    i++; 
}); 

然後用AJAX發佈此數據

$.ajax({ 
    type: 'post', 
    url: URL_TO_UR_SCRIPT, 
    data: { myarray : rowsArray }, 
    success: function(result) { 
    //ur success handler OPTIONAL 
    } 
}); 

在PHP端你做:

$array = isset($_POST['myarray']) ? $_POST['myarray'] : false; 
if ($array) { 
    $array = serialize($array); 
    //UPDATE YOUR DATABASE WITH THIS SERIALIZED ARRAY 
} 

你不能保存PHP數組到數據庫中,因此,你需要序列化和當您從數據庫中檢索時使用反序列化()

如果你的意思是你想保存輸入和文本區域值,那麼你需要爲每個元素設置 名稱,然後使用$ _POST在腳本中訪問它們。

$array = array; 
foreach($_POST as $key => $value) { 
    //sanitize your input here 
    $array[$key] = $value; 
} 
$serialized = serialize($array); 
//save serialized array in your DB 

注意/提示:僅供參考不使用HTML表佈局表單元素。表格應該用於數據表示。你可以很容易地使用的divCSS

+0

僅供參考,行是動態的。請看看這個截屏視頻,你會得到我想要完成的.http://screencast.com/t/0T3I9jglD4K – 2013-03-19 18:38:46

+0

無所謂他們是動態的或不是你可以使用div/css使其動態化。應該使用表格來顯示統計數據,而不是很好地處理。閱讀此:http://stackoverflow.com/questions/83073/why-not-use-tables-for-layout-in-html – GGio 2013-03-19 18:55:05

0

這是基本的PHP使用情況。您提供輸入名稱,當您提交表單時,您提交的頁面中的腳本將完成這項工作。

你的價值觀將駐留在

$_POST 

陣列英寸所以,你通過

$_POST['input_name'] 

訪問他們,你將不得不通過調用它的名字要經過的每個值,然後把它放到數據庫相應。

+0

問題是,行是動態的。我不確定會有多少行。所以我無法命名它們。 – 2013-03-19 18:33:54

+0

然後你可以做jQuery,正如我在我的答案中所提到的,只是稍微改變一下。 $( '輸入'),每個({})。 $( 'textarea的')每個({})。 etc ... – GGio 2013-03-19 18:36:32

相關問題