2011-11-03 43 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方法吗?......也许你可以通过使用看门狗的信用记录阵列检查值正确地传递检查...欢呼

相关问题