gpt4 book ai didi

php - 如何使用drupal写记录。提交表单时我的数据库没有更新

转载 作者:行者123 更新时间:2023-11-29 06:13:23 25 4
gpt4 key购买 nike

我正在使用 drupal,并尝试在 block 中创建我自己的表单。

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

提交表单后,我尝试将值写入我的数据库。

我正在使用此代码

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() 函数(如果该 block 正在节点页面上显示)。

试试这个代码,看看你是否有运气:

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

希望有帮助。

关于php - 如何使用drupal写记录。提交表单时我的数据库没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com