2010-04-27 34 views
0

我一直在研究這個drupal表單API腳本過去的一週和一半。瞭解我的問題。下面的表格僅列出了包含5個單獨評分等級的大量數據庫記錄。 (頭腦,行動,關係,語言和IT)。提交到數據庫時,表單值顯示爲空白 - Drupal FormAPI

此代碼是我自己的自定義模塊的一部分,其中所有值都從數據庫中列出。這個模塊背後的想法是能夠大規模地編輯這些值。

我無法將表單中輸入的值傳遞給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.')); 
    } 

} 
+0

爲什麼不從你的提交處理程序中打印$ form_state ['values'],看看有什麼值?你確定$ marli_id = 4是否有效? – Kniganapolke 2010-04-27 14:23:32

+0

我以marli_id 4爲例。 – GaxZE 2010-04-27 14:56:30

回答

0

的問題是在哪裏聲明

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

的#VALUE必須#default_value ..否則,它保持壓倒一切。