2011-11-03 47 views
0

即時通訊使用Drupal和即時嘗試創建我自己的形式在一個塊。如何使用drupal_write_record。我的數據庫不更新時提交表格

我寫了一個模塊,它用一個提交按鈕創建一個塊。

當表單提交即時試圖將值寫入我的分貝。

IM使用此代碼

function my_module_my_form_submit($form, &$form_state) { 
    block_example_insert_credits($credits_record); 
} 

function block_example_insert_credits() { 
    global $user; 
    $credits_record = array(
    'nid' => $node->nid, 
    'uid' => $user->uid, 
    'credits' => $form_state['values']['bids'], 
); 
    drupal_write_record('example_table', $credits_record, 'nid'); 
} 

表單提交和驗證,並表和列在我的數據庫存在。當我提交表單時,沒有任何內容被髮送到數據庫,爲什麼我的代碼不正確?

回答

2

有幾件事情不太對勁:

  1. 你沒有傳遞任何參數block_example_insert_credits()
  2. 您在my_module_my_form_submit()中沒有$credits_record的提及無論如何,傳遞給插入函數。
  3. 您正試圖從不存在的功能訪問$form_state
  4. 您沒有對節點對象的引用,因此無法使用它。 $node不是一個全局可用的變量,如果你想要一個節點對象,它必須來自一個保存在你的表單中的值或來自menu_get_object()函數的值(如果該塊正在節點頁面上顯示)。

試試這個代碼,看看如果您有任何運氣:

function my_module_my_form_submit($form, &$form_state) { 
    block_example_insert_credits($form_state); 
} 

function block_example_insert_credits($form_state) { 
    global $user; 
    $node = menu_get_object(); 
    $credits_record = array(
    'nid' => $node->nid, 
    'uid' => $user->uid, 
    'credits' => $form_state['values']['bids'], 
); 
    drupal_write_record('example_table', $credits_record, 'nid'); 
} 

希望有所幫助。

1

我是一個drupal新手,所以如果我錯了,我很抱歉......不是$ node或& $ form_state應該從form_submit傳遞給insert方法嗎?......也許你可以通過使用看門狗的信用記錄陣列檢查值正確地傳遞檢查...歡呼

相關問題