2010-06-16 88 views
2

我想教自己Drupal和我找到了一些我找不到任何教程。从数据库生成表格

我正在尝试生成一个窗体,并使用动态数量的文本字段来填充和编辑我的自定义表格的内容。在常规PHP我会做到这一点有:

$count = '0'; 
while ($row = mysql_fetch_array ($result) { 
    echo "<input type='text' name='title_row".$count."' value='".$row['title']."'>" 
    $count = $count +1; 
} 

有人点我的东西,会告诉我该怎么做在Drupal(和处理submited数据)?

感谢

+0

你想如何处理数据?你可以在文本字段中允许多个条目使用CCK吗? – lazysoundsystem 2010-06-16 23:38:21

回答

4

检查forms API referenceForm API Quickstart Guide这一点。

你的例子的简化版本看起来像下面这样:

/** 
* Form builder function - creates definition of form 
*/ 
function yourModule_table_edit_form($form_state) { 
    $form = array(); 
    // TODO: Add code/query to populate $result, using the 
    // Drupal DAL functions, e.g.: 
    $result = db_query('SELECT * FROM {your_table}'); 
    while ($row = db_fetch_array($result) { 
    // Create one textfield per row 
    // NOTE: assumes content of title column can be used as an array index 
    $form[$row['title']] = array(
     '#type' => 'textfield', 
     '#title' => $row['title'], 
     '#default_value' => $row['value'], // NOTE: Just assumed the column name 
     '#size' => 60, // Adjust as needed 
     '#maxlength' => 60, // Adjust as needed 
     // NOTE: more options for input element definition available - check the API docs 
    ); 
    } 
    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Save'), 
); 

    return $form; 
} 

/** 
* Form submit function 
*/ 
function yourModule_table_edit_form_submit($form, &$form_state) { 
    foreach ($form_state['values'] as $row_title => $value) { 
    // TODO: Do something with the submitted values 
    } 
} 

(注:未经测试的代码,当心拼写错误和其他错误)

要准备输出的形式,你” d电话drupal_get_form('yourModule_table_edit_form')

+2

Drupal也有数据库API;代替使用特定于数据库的函数,Drupal代码应该使用数据库抽象API,并使用db_query(),db_query_range(),db_fetch_array(),db_fetch_object()等。 – kiamlaluno 2010-06-17 05:48:50

+0

@ kiamlaluno:好点 - 我相应地调整了示例。 – 2010-06-17 06:28:12

+0

抱歉,延迟响应。它看起来是正确的我试图,所以我会尝试一旦我有表安装/卸载工作。 – YsoL8 2010-06-17 13:02:07