Yii Framework Forum: [Resolvido] Problemas Com Um For - Yii Framework Forum

Jump to content

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

[Resolvido] Problemas Com Um For Rate Topic: -----

#1 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 13 February 2013 - 01:19 PM

Boa tarde
estou tentando gravar várias linhas de dados em uma tabela do BD, mas somente é gravado a ultima linha da repetição. Acredito que o problema esteja na instrução FOR, mas não estou conseguindo achar o erro


            public function actionAddItemPgto(){

                $model = new Sysos();
                $itensPgto = new Pagamentos();
                
                // Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
                if(isset($_POST['Pagamentos'])){
                    
                   
                    
                   for ($i = 1; $i <= $_POST['Pagamentos']['parcelas']; $i++) {
                        $itensPgto->idsysos = $_POST['Pagamentos']['idsysos'];
                        $itensPgto->descricao = $_POST['Pagamentos']['descricao'];
                        $itensPgto->vencimento =  date('Y/m/d', strtotime("+30 days",strtotime($_POST['Pagamentos']['vencimento'])));
                        $itensPgto->pagamento = $_POST['Pagamentos']['pagamento'];
                        $itensPgto->parcelas = $i . '/' . $_POST['Pagamentos']['parcelas'];
                        $itensPgto->idbanco = $_POST['Pagamentos']['idbanco'];
                        $itensPgto->cheque = $_POST['Pagamentos']['cheque'];
                        $itensPgto->valor = $_POST['Pagamentos']['valor'] / $_POST['Pagamentos']['parcelas'];
                        $itensPgto->save();

                     //  $rel = new RelPgto();
                     //  $rel->idsysos = $_POST['Pagamentos']['idsysos'];  
                       
                      // $rel->idpgto =  $this->last_itemPgto($_POST['Pagamentos']['idsysos']);
                     //  $rel->save();   

                   }
                }

            }


0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 824
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 13 February 2013 - 11:18 PM

Jjunior,

Qual o valor que está enviando para $_POST['Pagamentos']['parcelas']?

Vou postar um modelo de for, para você debugar se está ocorrendo erros de validação.

for ($i = 1; $i <= $_POST['Pagamentos']['parcelas']; $i++) {
	$itensPgto->idsysos = $_POST['Pagamentos']['idsysos'];
	$itensPgto->descricao = $_POST['Pagamentos']['descricao'];
	$itensPgto->vencimento =  date('Y/m/d', strtotime("+30 days",strtotime($_POST['Pagamentos']['vencimento'])));
	$itensPgto->pagamento = $_POST['Pagamentos']['pagamento'];
	$itensPgto->parcelas = $i . '/' . $_POST['Pagamentos']['parcelas'];
	$itensPgto->idbanco = $_POST['Pagamentos']['idbanco'];
	$itensPgto->cheque = $_POST['Pagamentos']['cheque'];
	$itensPgto->valor = $_POST['Pagamentos']['valor'] / $_POST['Pagamentos']['parcelas'];
	echo CActiveForm::validate($itensPgto);
	//if($itensPgto->validate())
		//$itensPgto->save();
}
Yii::app()->end();

Newerton Vargas de Araújo
0

#3 User is offline   Lothor 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 147
  • Joined: 05-August 11
  • Location:Brazil

Posted 14 February 2013 - 06:14 AM

Júnior, adicione a linha abaixo logo no início do for:

$itensPgto = new Pagamentos();

Antes dessa:

$itensPgto->idsysos = $_POST['Pagamentos']['idsysos'];

O método save() atualiza o registro se o modelo não for novo, olha:

	public function save($runValidation=true,$attributes=null)
	{
		if(!$runValidation || $this->validate($attributes))
			return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);
		else
			return false;
	}

#Edit

Se preferir, podes usar a função setIsNewRecord(), ao invés de instanciar o modelo novamente., assim:

$itensPgto->setIsNewRecord(true);

0

#4 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 14 February 2013 - 07:48 AM

Newerton o valor que esta sendo enviado é um valor numérico. Que é digitado pelo usuário. Número de parcelas para efetuar o serviço.



Lothor, setisnewrecord() não funcionou, mas instanciando a variável novamente funcionou corretamente.


Obrigado a todos
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