如何使用drupal_write_record.当表单提交时,我的数据库不更新


how to use drupal_write_record. my db doesnt update when form submits

我正在使用drupal,我试图在块中创建自己的表单。

我写了一个模块,它创建了一个带有提交按钮的块。

当表单提交时,我试图将值写入我的数据库。

我正在使用这个代码

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');
}

表单提交并验证,表和列存在于我的数据库中。当我提交的形式没有得到发送到数据库,为什么我的代码不正确?

有几处不太对:

  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');
} 

希望对你有帮助。

我是一个drupal新手,所以如果我错了,我道歉…$node或$form_state不应该从form_submit传递给insert方法吗?......也许你可以通过使用信用记录数组的看门狗来检查值是否正确传递…干杯