【问题标题】:Form values appear blank when submitting to the database - Drupal FormAPI提交到数据库时表单值显示为空白 - Drupal FormAPI
【发布时间】:2010-04-27 10:31:38
【问题描述】:

在过去的一周半时间里,我一直在研究这个 drupal 表单 API 脚本。深入了解我的问题.. 下面的表格仅列出了包含 5 个单独评分等级的大量数据库记录。 (思想、行动、关系、语言和 IT)。

此代码是我自己的自定义模块的一部分,其中所有值都从数据库中列出。这个模块背后的想法是能够大规模地编辑这些值。

我无法将表单中输入的值传递给 marli_admin_submit 函数内部的变量。第二个问题是将这些值分配给它们的特定 ID。为此,我想添加即时消息,只是试图更新一个分数,而不是全部更新。

下面是我的代码。

任何建议表示赞赏。

function marli_scores(){
  $result = pager_query(db_rewrite_sql('SELECT * FROM marli WHERE value !=  " "'));

  while ($node = db_fetch_object($result)) {
    $attribute = $node->attribute;
    $field = $node->field_name;
    $item = $node->value;
    $mind = $node->mind;
    $action = $node->action;
    $relationship = $node->relationship;
    $language = $node->language;
    $it = $node->it;
    $form['field'][$node->marli_id] = array('#type' => 'markup', '#value' => $field, '#prefix' => '<b>', '#suffix' => '</b>');
    $form['title'][$node->marli_id] = array('#type' => 'markup', '#value' => $item, '#prefix' => '<b>', '#suffix' => '</b>');
    $form['mind'][$node->marli_id] =  array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $mind);
    $form['action'][$node->marli_id] = array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $action);
    $form['relationship'][$node->marli_id] =  array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $relationship);
    $form['language'][$node->marli_id] = array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $language);
    $form['it'][$node->marli_id] =  array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $it);

  }
  $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
  $form['save'] = array('#type' => 'submit', '#value' => t('Save'));
  $form['#theme'] = 'marli_scores';
  return $form;
}

function marli_admin_submit($form, &$form_state) {

    $marli_id = 4;
    $submit_mind = $form_state['values']['mind'][$marli_id];
    $submit_action = $form_state['values']['action'][$marli_id];
    $submit_relationship = $form_state['values']['relationship'][$marli_id];
    $submit_language = $form_state['values']['language'][$marli_id];
    $submit_it = $form_state['values']['it'][$marli_id];

    $sql_query = "UPDATE  {marli} SET mind =  %d, action =  %d, relationship = %d, language =  %d, it =  %d WHERE  marli_id = %d";


  if ($success = db_query($sql_query, $submit_mind, $submit_action, $submit_relationship, $submit_language, $submit_it)) {

    drupal_set_message(t(' Values have been saved.'));
  }
  else {
    drupal_set_message(t('There was an error saving your data. Please try again.'));
  }

}

【问题讨论】:

  • 为什么不从提交处理程序中打印 $form_state['values'] 并查看其中的值?你确定 $marli_id = 4 有效吗?
  • 我以marli_id 4为例。

标签: php drupal form-submit drupal-fapi


【解决方案1】:

问题出在我声明的地方

 $form['mind'][$node->marli_id] =  array('#type' => 'textfield', '#maxlength' => '1', '#size' => '1', '#value' => $mind);

#value 必须是 #default_value.. 否则它会一直覆盖。

【讨论】:

    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多