如果我没有在更新表单中更新任何信息,点击“保存”;按钮,我的数据库值自动增加


If I do not update any information in my update form and click "Save" button,the valu of my database auto increase

我在php学习阶段。请帮我更新一下表格。先进的谢谢。我有一个表单更新任何用户信息与按钮"保存"answers"重置"按钮。我更新任何信息的版本号增加。但问题是,当我不更新任何信息,点击"保存"按钮,版本号增加。它不应该增加。我给我的控制器和表单代码....

public function actionCreate()
{
    $model=new CvUpload;
    $model2=new CvUpload;
    $UserType=new UserType;
    $CvHistory=new CvHistory;
    $this->performAjaxValidation($model);
    if(!empty($_POST))
    {
        $id = $_POST['CvUpload']['user_id'];
        $cv_type = $_POST['CvUpload']['cv_type'];
        $criteria = new CDbCriteria();
        $criteria->condition = "user_id = $id AND is_current='yes' AND cv_type='$cv_type'";
        $CvUploadmodel = CvUpload::model()->find($criteria);    
        if(!empty($CvUploadmodel))
        {
            $CvUploadmodel->is_current='no';
            $CvUploadmodel->status='inactive';
            if($CvUploadmodel->save(false)){
                $model->attributes=$_POST['CvUpload'];
                $model->upload_date = new CDbExpression("NOW()");
                $model->update_date = new CDbExpression("NOW()");   
                $model->version_id = $CvUploadmodel->version_id+1;
                if($model->save(false))
                {
                    $CvHistory->cv_id  = $model->cv_id;
                    $CvHistory->user_id  = $model->user_id;
                    $CvHistory->job_title_id  = $model->job_title_id;
                    $CvHistory->cv_type  = $model->cv_type;
                    $CvHistory->version_id  = $model->version_id;
                    $CvHistory->file_name  = $model->file_name;
                    $CvHistory->upload_date  = $model->upload_date;
                    $CvHistory->update_date  = $model->update_date;
                    $CvHistory->is_current  = $model->is_current;
                    $CvHistory->status  = $model->status;
                    if($CvHistory->save(false))
                    {
                        $this->redirect(array('view','id'=>$model->cv_id));
                    }
                }   
            }   
        }
        else
        {   
            $model->attributes=$_POST['CvUpload'];
            $model->upload_date = new CDbExpression("NOW()");
            $model->update_date = new CDbExpression("NOW()");
            $model->version_id=1;
            if($model->save())
            {
                $CvHistory->cv_id  = $model->cv_id;
                $CvHistory->user_id  = $model->user_id;
                $CvHistory->job_title_id  = $model->job_title_id;
                $CvHistory->cv_type  = $model->cv_type;
                $CvHistory->version_id  = $model->version_id;
                $CvHistory->file_name  = $model->file_name;
                $CvHistory->upload_date  = $model->upload_date;
                $CvHistory->update_date  = $model->update_date;
                $CvHistory->is_current  = $model->is_current;
                $CvHistory->status  = $model->status;
                if($CvHistory->save(false))
                {
                    $this->redirect(array('view','id'=>$model->cv_id));
                }
            }
        }
    }
    $this->render('create',array(
        'model'=>$model,
        'UserType'=>$UserType,
        'CvHistory'=>$CvHistory,
    ));
}
public function actionUpdate($id)
{
    $model=$this->loadModel($id);
    $CvHistory=new CvHistory;
    if(isset($_POST['CvUpload']))
    {
        $model->attributes=$_POST['CvUpload'];
        if($model->save())
        {
            $criteria = new CDbCriteria();
            $criteria->condition = "cv_id = $model->cv_id AND is_current = 'yes'";
            $CvHistory = CvHistory::model()->find($criteria);
            $CvHistory->is_current = 'no';
            $CvHistory->status = 'inactive';
        if($CvHistory->save(false))
        {
            $new_CvHistory=new CvHistory;
            $new_CvHistory->cv_id  = $model->cv_id;
            $new_CvHistory->user_id  = $model->user_id;
            $new_CvHistory->job_title_id  = $model->job_title_id;
            $new_CvHistory->cv_type  = $model->cv_type;
            $new_CvHistory->version_id  = $CvHistory->version_id+1;
            $model->version_id = $new_CvHistory->version_id ;
            $new_CvHistory->file_name  = $model->file_name;
            $new_CvHistory->upload_date  = $model->upload_date;
            $new_CvHistory->update_date  = new CDbExpression("NOW()");
            $model->update_date = $new_CvHistory->update_date ;
            $new_CvHistory->status  = $model->status;
            $new_CvHistory->is_current  = "yes";
            $new_CvHistory->save(false);
            $model->save(false);
            if($new_CvHistory->save(false))$this->redirect(array('view','id'=>$model->cv_id));
        }
        }   
    }
    $this->render('update',array(
        'model'=>$model,
        'CvHistory'=>$CvHistory,
    ));
}

我的表单按钮代码:

  <style>
    #type {
        background-color:#f5f5f5;
        font-family: 'Arial';
        font-size: 20px;
        text-decoration: none;
            color:#b2b2b2;
        border:none;
            float: right;
    }
    div.form label {
        display: block;
        font-size: 1em;
        font-weight: bold;
    }
    .types-add{
        float: right;
    }

    #type:hover {
        border: none;    
    }
</style>
<?php if (Yii::app()->user->hasFlash('created')): ?>
        <div class="flash-success">
            <?php echo Yii::app()->user->getFlash('created'); ?>
        </div>
<?php endif; ?>
<div class="form">
    <?php $form=$this->beginWidget(
        'booster.widgets.TbActiveForm', 
        array(
            'id'=>'CvUpload-form',
            'type' => 'horizontal',
        'htmlOptions' => array(
            'class' => 'well',
            'enctype' => 'multipart/form-data',
        )
        )); 
    ?>
    <fieldset>
  <h1 align="center">CV Upload</h1>
    <p class="note">Fields with <span class="required">*</span> are required.</p>
    <?php echo $form->errorSummary($model); ?>

<div class="row">
    <?php
    $criteria=new CDbCriteria();
        echo $form->dropDownListGroup(
                $model,
                'user_id',
                array(
                    'wrapperHtmlOptions' => array(
                        'class' => 'col-sm-5',
                    ),
                    'widgetOptions' => array(
                        'data' => CHtml::listData(User::model()->findAll($criteria), 'id', 'user_id'),
                        'dataProvider'=>$model->searchByUserId(Yii::app()->user->getId()),
                        'htmlOptions' => array('prompt'=>'Select'),
                    )
                )
            ); ?>
    </div>


        <div class="row" id="jobTitle">
        <?php 
            $criteria = new CDbCriteria;
            $criteria->condition = "status= 'active'";
            echo $form->dropDownListGroup(
                $model,
                'job_title_id',
                array(
                    'wrapperHtmlOptions' => array(
                        'class' => 'col-sm-5',
                    ),
                    'widgetOptions' => array(
                        'data' => CHtml::listData(JobTitle::model()->findAll($criteria), 'id', 'name'),
                        'htmlOptions' => array('prompt'=>'Select job title'),
                    )
                )
            ); ?>
    </div>
    <?php  echo CHtml::form($this->createUrl('uploadreport'), 'post', array('enctype'=>'multipart/form-data'));?>
    <label class="col-sm-3 control-label required" for="CvUpload_file_name">
        Upload File
    </label>
    <div class="row" id="file_upload" style="margin-left:20%; margin-bottom:2%;">
         <?php
            $this->widget('CMultiFileUpload',array(
                'name'        => 'files',
                'accept'      => 'doc|docx|pdf',
                'max'         => 1,
                'htmlOptions' => array('size' => 25),
            ));             
            echo CHtml::htmlButton('Upload',array(
            'onclick'=>'javascript: send();', // on submit call JS send() function
            'id'=> 'post-submit-btn', // button id 'newcreate'
            'class'=>'btn btn-primary',
        ));
        ?>
    </div>
        <?php Yii::app()->clientScript->registerCoreScript("jquery"); ?>
    <script src="http://code.jquery.com/jquery-migrate-1.2.0.js"></script>
            <script>
                function send(){
                    var formData = new FormData($("#CvUpload-form")[0]);
                    $.ajax({
                        url: '<?php echo Yii::app()->createUrl("CvUpload/upload"); ?>',
                        type: 'POST',
                        data: formData,
                        datatype:'json',
                        beforeSend: function() {
                        },
                        success: function (data) {
                           $("#CvUpload_file_name").val(data);
                        },
                        complete: function() {
                        },
                        error: function (data) {
                            alert("There may a error on uploading. Try again later");
                        },
                        cache: false,
                        contentType: false,
                        processData: false
                    });
                    return false;
                }
            </script>       
    <div class="row" id="file_name">
        <?php echo $form->textFieldGroup(
        $model,'file_name',
           array(
             'wrapperHtmlOptions' => array(
               'class'=> 'col-sm-5',
             ),
           )
            );
        ?>
    </div>  
            <div class="row" id="statustype">
        <?php 
            $status = array('active'=>'Active', 'inactive'=>'Inactive');
            echo $form->dropDownListGroup(
                $model,
                'status',
                array(
                    'wrapperHtmlOptions' => array(
                        'class' => 'col-sm-5',
                    ),
                    'widgetOptions' => array(
                        'data' => $status,
                        'htmlOptions' => array('prompt'=>'Select a status'),
                    )
                )
            ); ?>
    </div>
    <div class="row" id="statustype">
    <?php 
            $is_current = array('yes'=>'Yes', 'no'=>'No');
            echo $form->dropDownListGroup(
                $model,
                'is_current',
                array(
                    'wrapperHtmlOptions' => array(
                        'class' => 'col-sm-5',
                    ),
                    'widgetOptions' => array(
                        'data' => $is_current,
                        'htmlOptions' => array('prompt'=>'Select a status'),
                    )
                )
            ); ?>       
    </div>
 <div class="row buttons">
         <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save',array(
         'class'=>'btn btn-primary',
         'style'=>"position:relative; margin-left:25%",
         'id'=> 'yt1', // button id
         )); ?>
    </div>
</fieldset>
<?php $this->endWidget(); ?>
</div><!-- form -->







<!--/*/*
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'cv-upload-form',
    'enableAjaxValidation'=>false,
)); ?>
    <p class="note">Fields with <span class="required">*</span> are required.</p>
    <?php echo $form->errorSummary($model); ?>
    <div class="row">
        <?php echo $form->labelEx($model,'user_id'); ?>
        <?php echo $form->textField($model,'user_id',array('size'=>20,'maxlength'=>20)); ?>
        <?php echo $form->error($model,'user_id'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'upload_date');enter code here ?>
        <?php echo $form->textField($model,'upload_date'); ?>
        <?php echo $form->error($model,'upload_date'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'file_name'); ?>
        <?php echo $form->textField($model,'file_name',array('size'=>60,'maxlength'=>150)); ?>
        <?php echo $form->error($model,'file_name'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'file_location'); ?>
        <?php echo $form->textField($model,'file_location',array('size'=>60,'maxlength'=>150)); ?>
        <?php echo $form->error($model,'file_location'); ?>
    </div>
    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>
<?php $this->endWidget(); ?>
</div><!-- form -->

如果你不改变表单值,这并不意味着这些数据不会被发送到服务器。

这里至少button save会被发送,所以这种情况总是为真:

if(!empty($_POST))

你没有显示整个表单,但我建议字段user_id和cv_type有值(无论值在哪里改变或不,如果表单有字段,他们将被提交)

$id = $_POST['CvUpload']['user_id'];
$cv_type = $_POST['CvUpload']['cv_type'];

这就是为什么模型$CvUploadmodel = CvUpload::model()->find($criteria);加载并增加version_id