2010-09-29 64 views
0

我正在处理Zend_Form,并可以创建一个表单来添加/编辑单个数据库记录,但现在我试图创建一个表单来编辑单个页面上的多个记录。例如,如果我有一张运动队表格,另一个表格分配给他们的球队,我希望能够点击我网站上的一个球队,并将所有球员列为输入行以编辑他们的名字,出生日期等,在底部有一个提交按钮以保存任何更改。Zend形成多个记录

需要注意的一件事是,可以在页面上编辑的记录数量是可变的;这不是一个定量。

任何指针/帮助将非常感激。

谢谢。

回答

0

我使用下面的代码从数据库中删除多个项目。

在索引页(我的数据库记录列表):

<form method="post" action="<?php echo $this->baseUrl().'/admin/pages/deleteMultiple'; ?>"> 
    <td class="checkboxTable"><input name="remove[<?php echo $data[$row]->id; ?>]" type="checkbox" id="checkbox[]" value="<?php echo $data[$row]->id; ?>"/></td> 
    <input class="deleteMultipleButtonBottom" name="deleteMultiple" type="submit" id="deleteMultiple" value="<?php echo $this->translate('Delete selected'); ?>"> 
</form> 

用户将看到一个确认页面:

<form method="post"> 
     <input type="hidden" name="removeId" value="<?php echo implode($_POST['remove'], ','); ?>" /> 
     <input class="deleteYes" type="submit" name="deleteMultiple" value="Yes" /> 
     <input class="deleteNo" type="submit" name="deleteMultiple" value="No" /> 
    </form> 

而且我的行为是这样的:

if($this->getRequest()->isPost()) 
     { 
      if($this->getRequest()->isPost('remove')) 
      { 
       $this->view->pages = $this->pagesService->GetPages($this->getRequest()->getPost('remove')); 

       if($this->getRequest()->getPost('deleteMultiple') == 'Yes') 
       { 
        $this->pagesService->DeleteMultiplePages($this->getRequest()->getPost('removeId'), $this->view->user->username, $this->getRequest()->getPost('countedItems')); 
       } 
       elseif($this->getRequest()->getPost('deleteMultiple') == 'No') 
       { 
        $this->_helper->flashMessenger(array('message' => $this->view->translate('The pages were <u>not</u> deleted'), 'status' => 'notice')); 
        $this->_helper->redirectToIndex(); 
       } 
      } 
     } 

并在我的服务页面:

public function DeleteMultiplePages($id) 
    { 
     $this->pages->delete('id IN (' . $id . ')'); 
    } 

这种方法应该适用于更新值。