我试图在单击它们时编辑/删除表中的任何记录。 该表是自定义表单模块。 为了获得帮助,我使用了此LINK 在那里,他们通过用户角色控制执行此操作的权限(我想)。 就我而言,我希望每个人都能使用它。 我是Drupal的新手,所以我不能因此获得任何重大的运气。 我要删除任何记录,但是为了编辑仍然没有运气。我检查了查询,没有默认字段,它正常工作。 但是只有默认值,我想显示表单,以便以后编辑。 所以到目前为止,这就是我编写的代码。

<code>
<?php
function products_menu(){
 $items = array();
     $items['products_form'] = array(
        'title' => t('Products'),
        'page callback' => 'products_list',
        'access callback' => TRUE,
    );
    $items['products_form/delete/%'] = array(
        'title' => t('Delete Product'),
        'page callback' => 'drupal_get_form',
        'page arguments' => array('products_delete_confirm', 2),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK, 
    );
    $items['products_form/edit/%'] = array(
        'title' => t('Edit Product'),
        'page callback' => 'drupal_get_form',
        'page arguments' => array('products_edit_confirm', 2),
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
    );

 return $items;
}


function products_list() {
    $header = array('CODE','NAME','OBJECT TYPE',' ');
    $results = db_query("SELECT code,name,object_type FROM {products}");
    $rows = array();
    foreach($results as $key) {
        $code = $key->code;
        $name = $key->name;
        $object_type = $key->object_type;
      $rows[] = array($code,$name,$object_type,"<a href='products_form/edit/{$key->code}'>" . t('Edit') . "</a> | <a href='products_form/delete/{$key->code}'>" . t('Delete') . "</a>");
    }
    return theme('table', array('header' => $header, 'rows' => $rows));
}


function products_delete_confirm($form ,&$form_state, $product_code) {
$form['_product'] = array(
        '#type' => 'value',
        '#value' => $product_code,);

        drupal_set_message($product_code);

return confirm_form($form,t('Are you sure you want to delete '.$product_code.' Product?'),
        isset($_GET['destination']) ? $_GET['destination'] : "products_form",t('This action cannot be undone.'),t('Delete'),t('Cancel'));

}


function products_delete_confirm_submit($form, &$form_state) {
    $form_values = $form_state['values'];
 if ($form_state['values']['confirm']) {
$products = $form_state['values']['_product'];
               drupal_set_message(t('Product ' .$products.' will get deleted.'));

                    $result = db_query("DELETE FROM {products} where code='{$products}'");
 drupal_set_message(t('Products has been deleted successfully.'));}
 drupal_goto("products_form");
}
function products_edit_confirm($form ,&$form_state, $product_code){
drupal_set_message($product_code);
$code = '';$name='';$object_type='';
$results = db_query("SELECT code,name,object_type FROM {products} WHERE code='{$product_code}'");
    foreach($results as $key) {
        $code = $key->code;
        $name = $key->name;
        $object_type = $key->object_type;
    }
$form = array();

     $form['code']=array(
            '#title'=>t('CODE'),
            '#type'=>'textfield',
            '#value' => $code,);
    $form['name']=array(
            '#title'=>t('NAME'),
            '#type'=>'textfield',
            '#value' => $name,);
    $form['object_type']=array(
            '#title'=>t('OBJECT TYPE'),
            '#type'=>'textfield',
            '#value' => $object_type,);

    return confirm_form($form,t(''),
            isset($_GET['destination']) ? $_GET['destination'] : "products_form",
            t(''),t('Edit'),t('Cancel'));
}


function products_edit_confirm_submit($form, &$form_state)
{
$form_values = $form_state['values'];
if ($form_state['values']['confirm']) {

    $code = $form_state['values']['code'];
    $name = $form_state['values']['name'];
    $object_type= $form_state['values']['object_type'];

    $rs = db_query("UPDATE  {products} SET name= '$name', object_type = '$object_type' WHERE  code='{$code}'");
     drupal_set_message(t('Products has been updated successfully.'));
     }
    drupal_goto("products_form");
}


</code>

有什么建议我做错了吗?

#1楼 票数:0 已采纳

我已经有了解决方案...

代替这个

$form['code']=array(
            '#title'=>t('CODE'),
            '#type'=>'textfield',
            '#value' => $code,);
    $form['name']=array(
            '#title'=>t('NAME'),
            '#type'=>'textfield',
            '#value' => $name,);

我试过了

$form['code']=array(
                '#title'=>t('CODE'),
                '#type'=>'textfield',
                '#default_value' => $code,
            );
    $form['name']=array(
                '#title'=>t('NAME'),
                '#type'=>'textfield',
                '#default_value' => $name,
            );

现在可以正常工作了:)

要了解更多属性,请访问此网站https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7

  ask by Vivek Kumar Tamta translate from so

未解决问题?本站智能推荐:

1回复

在drupal模块中编辑表单?

我在制作Drupal模块时遇到问题。 我创建了一个表单添加到数据库,但我没有运气创建表单来编辑一些记录这里是我的问题。 问题是当我从数据库中加载值到表单加载并更改它们然后在提交新值之前单击提交按钮表单刷新。 所以它更新到数据库同样的事情。 这是一个代码: 这是一个提交表单代码:
1回复

如何从另一个数据库中采用孤立表以在drupal 7数据模块中的视图中使用?

我正在尝试从自定义表构建一个视图,这些表位于另一个名为“academy”的数据库中。 我的Drupal安装使用数据库'drupal'。 我用以下内容更新了Drupal的settings.php文件: 并清除缓存。 但是当我转到数据模块中的“Adopt Tables”时,我没有看到来
3回复

在 drupal7 中从数据库中删除模块

我在 drupal 7 中安装了模块“kvantstuio”,但我的网站崩溃了。 我去 站点/所有/模块/kvanstudio 并删除此文件夹,然后站点再次正常工作。 但是当我点击某个按钮时,我有一个错误 Fatal error: require_once() [function.requi
1回复

如何在Drupal 7中使用Views模块更新节点

我想使用views模块更新节点的几个字段。如果有人知道,那么请告诉我我该怎么做。 谢谢
1回复

Drupal模块与外部数据库同步

我一直在尝试将Drupal 7用户帐户与外部数据库同步。 谁能建议我这样做的最佳模块?
1回复

是否有Drupal的批准数据库模块?

我正在寻找一个可以帮助我建立审批数据库的模块。 我的想法是只有一个成员站点,例如5个不同的部门(每个成员将属于5个部门之一)。 让所有部门在项目中都有发言权。 每个部门都会批准或拒绝一个版本(拒绝表示需要进行更改)。 一旦每个部门批准或拒绝,则该项目将被批准(如果所有部门都批准),或者准
2回复

Drupal删除/更新数据库中的错误行

我有一组项目,可以使用表格进行编辑和删除。 现在,所有itms作为字段集显示在列表中。 使用以下方法创建字段集: 然后使用此函数创建表单: } 还有一个提交处理程序: 现在的问题是,无论我按下哪个场所的删除按钮,Drupal始终会删除列表中的第一个。 由于某种
2回复

使用 Drupal 7 更新数据库中是否已存在

我正在尝试更新我已经存在的记录,如果在 Drupal 中不存在则插入。 下面是我的代码: 而不是更新它在数据库中添加的记录,我哪里出错了?