Yii Framework Forum: Problem z dodawaniem rekordu - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problem z dodawaniem rekordu Rate Topic: -----

#1 User is offline   Apache 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 16-December 11

Posted 11 April 2012 - 06:02 AM

Stworzyłem panel w celu dodania nowej grupy użytkowników, za każdym razem kiedy nacisnę przycisk formularza, wszystkie rekordy dodają się 3 lub 4 razy.

Model:
<?php

class GroupModel extends CFormModel
{
    public $group_id;
    public $group_name;
    public $group_moderator;
    public $group_deleted;
     	 	 	
    public function rules()
    {
		return array(
    		array('group_name, group_moderator', 'required'),
    		array('group_moderator', 'numerical', 'integerOnly'=>true),
    		array('group_name', 'length', 'max'=>255),
		);
    }
    
    public function attributeLabels()
    {
		return array(
			'group_id' => 'ID grupy',
			'group_name' => 'Nazwa grupy',
			'group_moderator' => 'Moderator grupy',
		);
    }

    public function SaveGroup()
    {
        $GroupName = $this->group_name;
        $GroupModerator = $this->group_moderator;
        
        $SqlQuery = "INSERT INTO 
        crm_group
        (
        group_name,
        group_moderator
        )
        VALUES
        (
        :group_name,
        :group_moderator
        )
        ";
        $Command = Yii::app()->db->createCommand($SqlQuery);
        $Command->bindParam(":group_name",$GroupName,PDO::PARAM_STR);
        $Command->bindParam(":group_moderator",$GroupModerator,PDO::PARAM_STR);
        $DataBack = $Command->execute();
        
        return $DataBack;
    }
}

?>


Kontroler:
public function actionGroupAddAdmin()
{

            $GroupModelData = new GroupModel;
            
            if(isset($_POST['GroupModel']))
            {
                $GroupModelData->attributes=$_POST['GroupModel'];
              
		        if($GroupModelData->validate())
		        {
		        	echo $GroupModelData->SaveGroup();
		        	
		        	$GroupModelData->group_name = '';
		        	$GroupModelData->group_moderator = '';
                    
                                $GroupUpdated = true;
		        }
            }
            
            $ModeratorsOfGroup = GroupModel::ModeratorsGroups();
            
            $this->render('groupaddadmin', array('GroupModelData'=>$GroupModelData,'ModeratorsOfGroup'=>$ModeratorsOfGroup,'GroupUpdated'=>$GroupUpdated));
}

0

#2 User is offline   Mariusz W. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 15-December 11
  • Location:Poland/Warsaw

Posted 11 April 2012 - 06:31 AM

Witaj,
Z tego co widzę, to wszystko wygląda raczej w porządku...
Mogę doradzić włączenie opcji debugowania i zapisz polecenia SQL, jakie są wywoływane. Wtedy sprawdzisz, gdzie dokładnie wywoływany jest 3 razy INSERT.
Posted Image
Posted Image
0

#3 User is offline   sidewinder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 218
  • Joined: 08-July 09
  • Location:Poland

Posted 11 April 2012 - 07:53 AM

Poproszę jeszcze plik widoku groupaddadmin. Może tam się jakiś paproch wdarł. Koniecznie włącz debugowanie zapytań SQL.
---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
0

#4 User is offline   redguy 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 02-July 10
  • Location:Central Poland

Posted 12 April 2012 - 01:59 AM

a ja radze sprawdzic czy w widoku gdzie jest renderowany formularz masz wlaczona opcje 'enableAjaxValidation', ktora po kazdej zmianie ktoregokolwiek z pol wysyla dane z formularza na serwer... widze, ze w akcji nie masz obslugi tego typu requestow do walidacji, wiec kazdy z nich spowoduje normalne dodanie rekordu do bazy. sam juz kiedys mialem taka sytuacje, wiec strzelam, ze to na 99% to.
red
0

#5 User is offline   Apache 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 16-December 11

Posted 13 April 2012 - 01:23 AM

View Postredguy, on 12 April 2012 - 01:59 AM, said:

a ja radze sprawdzic czy w widoku gdzie jest renderowany formularz masz wlaczona opcje 'enableAjaxValidation', ktora po kazdej zmianie ktoregokolwiek z pol wysyla dane z formularza na serwer... widze, ze w akcji nie masz obslugi tego typu requestow do walidacji, wiec kazdy z nich spowoduje normalne dodanie rekordu do bazy. sam juz kiedys mialem taka sytuacje, wiec strzelam, ze to na 99% to.


Dzięki, problem rozwiązany. Miałeś rację
enableAjaxValidation
był włączony.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users