duanlinzhen7235 2013-10-29 08:28
浏览 39
已采纳

zend表单提交错误

I have problems with my code im trying to submit a form to fill in the database and redirect me to my index page but i keep getting this error when i send the form:

Message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'Number_of_employees' cannot be null

heres my index for addform, model and form for addform3

//Index
      public function addform3Action()
    {
         $form = new Application_Form_CompanyDescription();


        $this->view->form = $form;

        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {                

                $Number_of_employees = $form->getValue('Number of employees');
                $Organisation_type = $form->getValue('$Organisation type');
                $Annual_Turnover = $form->getValue('Annual Turnover');
                $Organisation_Registration_Number = $form->getValue('Organisation Registration Number');
                $Vat_Registrtion_Number = $form->getValue('VatRegistrtion Number');
                $Income_Tax_Reference_Number = $form->getValue('Income Tax Reference Number');
                $Tax_Clearance_Certificate= $form->getValue('Tax Clearance Certificate');
                $Tax_Clearance_Certificate_ExpiryDate = $form->getValue('Tax Clearance Certificate ExpiryDate');
                $Commenced_Trading_Date = $form->getValue('Commenced Trading Date');    
                $BBBEE_Scorecard= $form->getValue('BBBEE Scorecard');
                $Rating_Agency = $form->getValue('Rating Agency');
                $Rating_Expiry_Date = $form->getValue('Rating Expiry Date');                            


                $companydescription= new Application_Model_DbTable_CompanyDescription();
                $companydescription->addform3CompanyDescription($Number_of_employees, $Organisation_type, $Annual_Turnover, $Organisation_Registration_Number, $Vat_Registrtion_Number, $Income_Tax_Reference_Number, $Tax_Clearance_Certificate, $Tax_Clearance_Certificate_ExpiryDate, $Commenced_Trading_Date, $BBBEE_Scorecard, $Rating_Agency, $Rating_Expiry_Date);


                $this->_helper->redirector('index');
            } else {
                $form->populate($formData);
            }
        }
    }


}  

//model

<?php

class Application_Model_DbTable_CompanyDescription extends Zend_Db_Table_Abstract
{

    protected $_name = 'companydescription';


        public function getCompanyDescription($id)
    {
        $id = (int)$id;
        $row = $this->fetchRow('id = ' . $id);
        if (!$row) {
        throw new Exception("Could not find row $id");
        }
        return $row->toArray();
    }

    public function addform3CompanyDescription($Number_of_employees, $Organisation_type, $Annual_Turnover, $Organisation_Registration_Number, $Vat_Registrtion_Number, $Income_Tax_Reference_Number, $Tax_Clearance_Certificate, $Tax_Clearance_Certificate_ExpiryDate, $Commenced_Trading_Date, $BBBEE_Scorecard, $Rating_Agency, $Rating_Expiry_Date)
    {
        $data = array(
            'Number_of_employees'=> $Number_of_employees,
            'Organisation_type'=> $Organisation_type,
            'Annual_Turnover'=> $Annual_Turnover,
            'Organisation_Registration_Number'=> $Organisation_Registration_Number,
            'Vat_Registrtion_Number'=> $Vat_Registrtion_Number,
            'Income_Tax_Reference_Number'=> $Income_Tax_Reference_Number,
            'Tax_Clearance_Certificate'=> $Tax_Clearance_Certificate,
            'Tax_Clearance_Certificate_ExpiryDate'=> $Tax_Clearance_Certificate_ExpiryDate,
            'Commenced_Trading_Date'=> $Commenced_Trading_Date,
            'BBBEE_Scorecard'=> $BBBEE_Scorecard,
            'Rating_Agency'=> $Rating_Agency,
            'Rating_Expiry_Date'=> $Rating_Expiry_Date,
        );

        $this->insert($data);
    }



}

//aform for addform3

<?php

class Application_Form_CompanyDescription extends Zend_Form
{

    public function init()
    {
        $this->setName('companydescription');
        $id = new Zend_Form_Element_Hidden('id');
        $id->addFilter('Int');

        $Number_of_employees = new Zend_Form_Element_Text('Number of employees');
        $Number_of_employees->setLabel('Number of employees')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Organisation_type = new Zend_Form_Element_Text('Organisation type');
        $Organisation_type->setLabel('Organisation type')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');

        $Annual_Turnover = new Zend_Form_Element_Text('Annual Turnover');
        $Annual_Turnover->setLabel('Annual Turnover')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Organisation_Registration_Number = new Zend_Form_Element_Text('Organisation Registration Number');
        $Organisation_Registration_Number->setLabel('Organisation Registration Number')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Vat_Registrtion_Number = new Zend_Form_Element_Text('Vat Registrtion Number');
        $Vat_Registrtion_Number->setLabel('Vat Registrtion Number')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Income_Tax_Reference_Number= new Zend_Form_Element_Text('Income Tax Reference Number');
        $Income_Tax_Reference_Number->setLabel('Income Tax Reference Number')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Tax_Clearance_Certificate = new Zend_Form_Element_Text('Tax Clearance Certificate');
        $Tax_Clearance_Certificate->setLabel('Tax Clearance Certificate')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Tax_Clearance_Certificate_ExpiryDate = new Zend_Form_Element_Text('Tax Clearance Certificate ExpiryDate');
        $Tax_Clearance_Certificate_ExpiryDate->setLabel('Tax Clearance Certificate ExpiryDate')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Commenced_Trading_Date = new Zend_Form_Element_Text('Commenced Trading Date');
        $Commenced_Trading_Date->setLabel('Commenced Trading Date')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $BBBEE_Scorecard = new Zend_Form_Element_Text('BBBEE Scorecard');
        $BBBEE_Scorecard->setLabel('BBBEE Scorecard')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');

        $Rating_Agency = new Zend_Form_Element_Text('Rating Agency');
        $Rating_Agency->setLabel('Rating Agency')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');


        $Rating_Expiry_Date = new Zend_Form_Element_Text('Rating Expiry Date');
        $Rating_Expiry_Date->setLabel('Rating Expiry Date')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Digits');





        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Next');
        $submit->setAttrib('id', 'submitbutton');

        $this->addElements(array($id, $Number_of_employees, $Organisation_type, $Annual_Turnover, $Organisation_Registration_Number, $Vat_Registrtion_Number, $Income_Tax_Reference_Number, $Tax_Clearance_Certificate, $Tax_Clearance_Certificate_ExpiryDate, $Commenced_Trading_Date, $BBBEE_Scorecard, $Rating_Agency, $Rating_Expiry_Date, $submit));

    }


}
  • 写回答

1条回答 默认 最新

  • douyan1613 2013-10-29 08:52
    关注

    It's not a good idea to use spaces in form element names. They will be removed when form is rendered. So correct access to Number of employees value will be:

    $form->getValue('Numberofemployees');
    

    Better use Number_of_employees everywhere so you won't need any translations and possible to use something like this:

     $formValues = $form->getValues();
     ...
     $this->insert($formValues);
    

    There is a typo here:

    $form->getValue('$Organisation type');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮