Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinicius K

UPDATE PDO Não funciona

Recommended Posts

Boa madruga,pessoal... rsr

 

Bom, o meu problema é com um UPDATE com PDO, segue o código da função.


try{
$oConexao = Conexao::getInstance();
$agenda = new Agenda();
$agenda	= $agEvento; //Aqui recebo um Array chamado $agEvento, passado como parametro da função.
$stmt = $oConexao->prepare("UPDATE agenda SET evento=? WHERE id=?");
$stmt->bindValue(1, $agenda->getEvento() );//Aki tento pegar o valor do get
$stmt->bindValue(2,$agenda->getId);//Akiiiii, é o bendido
$stmt->execute();
if($stmt->rowCount()>0){
	echo "Atualizado com sucesso..";	
}
}catch ( PDOException $ex ){  echo "Erro: ".$ex->getMessage(); }

 

Bom pessoal, o que ocorre neste código, já adiantando, as classes estão OK, quando dou por exemplo um echo $agenda->getId(); eu consigo ver o valor, ou seja minha classe Agenda está OK e ainda consigo obter o valor do getId().

O mais intrigante vem agora, quando eu preencho manualmente com um valor de id existente no banco (Claro), Ex.: bindValue(2,250), a função consegue ser executada, realizando alterações em minha tabela, há.. e quanto a minha comparação com rowCount, se executado com o bindValue(2,$agenda->getId); ou até mesmo uma variável nada acontece e lógicamente não exibe a menssagem "Atualizado com sucesso", e também não ocorre nada em minha tabela.

 

O que acho mais intrigante dos intrigantes é o fato de nada acontecer e não receber nenhum erro pelo Exception ou PDO Exception. Consigo realizar um insert mas Update que bom nada...

 

Desde já agradeço a atenção todos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu entendi é só falta de atenção.

 

getId está sendo acessado como atributo. Pelo que eu entendi, você quer acessar um método.

Veja a diferença:

$obj->getId; //acessa o atributo $getId
$obj->getId(); //acessa o método getId()

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro detalhe, rowCount() não deve ser levado em consideração para verificar se o update foi realizado com sucesso. Ele mostra somente a quantidade de registros(tuplas) alterados. Se você "atualizar" com os mesmos valores, nada será alterado, então retornará zero. Assim, sua função irá retornar false. Indicando que o update não foi executado.

 

Já que você usá exceptions, fica mais fácil ainda, basta fazer isso:

try{
       $oConexao = Conexao::getInstance();
       $agenda = new Agenda();
       $agenda = $agEvento; //Aqui recebo um Array chamado $agEvento, passado como parametro da função.
       $stmt = $oConexao->prepare("UPDATE agenda SET evento=? WHERE id=?");
       $stmt->bindValue(1, $agenda->getEvento() );//Aki tento pegar o valor do get
       $stmt->bindValue(2,$agenda->getId);//Akiiiii, é o bendido
       $stmt->execute();
       echo "Atualizado com sucesso..";
} catch ( PDOException $ex ) {
       echo "Erro: ".$ex->getMessage(); 
}

Apesar de possuir um Bloco Exceptions, você faz o uso dela "pela metade".

Se você já utilizou exceptions em outras linguagens, como Java/C#, perceberá que, se ocorrer o lançamento de alguma exception, a execução do bloco try será interrompida e o bloco catch será executado. No caso da PDO, exceptions são bem confiáveis.

 

Seguindo essa lógica, a mensagem "Atualizado com sucesso.." só, e somente só, será executada, se o update for realizado com sucesso, se não ocorrer nenhum erro. Caso ocorra um erro, não será durante, nem após, essa linha:

echo "Atualizado com sucesso..";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, pessoal.... Mas...

 

Quanto ao getId), errei somente aki no código, pois lá no código o que estou querendo acessar é um método mesmo, porém, isto não influenciou na resolução do problema, pois mesmo que eu preencha uma variável com o valor da função/método, e adicione a mesma como sendo o valor a ser obtido para o bindValue nada ocorre.

 

Oha só como está tenso...

Quando faço isso $stmt->bindValue(2,$agenda->getId());

 

ou

$id = $agenda->getId(); //atribuo o valor do retorno do método à variável

$stmt->bindValue(2,$id);//Passo a variável como parametro

 

NADA ACONTECE: Não exibe erro algum, não faz alteração alguma e se coloco para testar:

echo $agenda->getId();//imprime o valor que existe no retorno, e realmente me retorna um valor, o que quero.

 

MAS...: QUANDO PASSO DIRETAMENTE O VALOR NO bindValue, tipo, $stmt->bindValue(2,250); Ai sim consigo alterar, lógico na posição 250 da tabela.

 

Entenderam... como ta chato...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema, então, está no seu objeto, poste o código dele. Ou ele não possui valores, ou não retorna valores.

 

Essa linha:

$agenda = new Agenda();
$agenda = $agEvento;

Não faz sentido algum. Perceba que você instância a classe Agenda dentro da variável $agenda e logo após atribui o valor de $agEvento para $agenda. Assim, você perde a instância. Entendeu o porque não faz nenhum sentido?

 

Verifique a integridade dos seus objetos, o problema deve estar neles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema, então, está no seu objeto, poste o código dele. Ou ele não possui valores, ou não retorna valores.

 

Essa linha:

$agenda = new Agenda();
$agenda = $agEvento;

Não faz sentido algum. Perceba que você instância a classe Agenda dentro da variável $agenda e logo após atribui o valor de $agEvento para $agenda. Assim, você perde a instância. Entendeu o porque não faz nenhum sentido?

 

Verifique a integridade dos seus objetos, o problema deve estar neles.

 

bom o que eu fiz foi o seguinte:

public function alteraTabela($agEvento){

 

$agenda = new Agenda(); //Crio um objeto $agenda

$agenda = $agEvento; //Aqui, estou atribuindo o objeto passado como parametro pela a função.

 

O que estou enviando como parametro é um objeto do tipo Agenda, que está em $agAgenda, sendo este com todos os balores necessário, pois consigo acessar todos os método e obter valor.

 

Estou tentando fazer este projeto em MVC.

}

 

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diferente do Java que para utilizar uma classe abstrata você teria que fazer o seguinte:

Pessoa pessoa = null;
pessoa = new PessoaFisica();

Isso é meramente didático, tem toda uma lógica por trás dessa implementação.

 

Supondo que Pessoa é uma classe abstrata. No PHP não há essa necessidade.

 

Altera para:

alteraTabela($agenda){ /*...*/

 

E remova essas duas linhas que estão ai por nada:

$agenda = new Agenda();
$agenda = $agEvento;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diferente do Java que para utilizar uma classe abstrata você teria que fazer o seguinte:

Pessoa pessoa = null;
pessoa = new PessoaFisica();

Isso é meramente didático, tem toda uma lógica por trás dessa implementação.

 

Supondo que Pessoa é uma classe abstrata. No PHP não há essa necessidade.

 

Altera para:

alteraTabela($agenda){ /*...*/

 

E remova essas duas linhas que estão ai por nada:

$agenda = new Agenda();
$agenda = $agEvento;

 

 

Troquei o que me pediu, e observei que estava trocando 6 por 1/2 dúzia...

 

porém o problema ainda continua.

 

segue a função de fato que estou querendo executar.

 

public function alteraEvento($agenda,$condicao){
try{
$oConexao = Conexao::getInstance();//Realiza conexao

//Tratamento de datas
$data1 = $this->datasql($agenda->getData1());
$data2 = $this->datasql($agenda->getData2());


//Prepara a instrução
$stmt = $oConexao->prepare("UPDATE AGENDA SET evento=?, data1=?, data2=?, desc_breve=?, descricao=?, local=? WHERE id=?");
$oConexao->beginTransaction(); //Abre a transação com o bd e ainda desliga o auto commit;
$stmt->bindValue(1,$agenda->getEvento());
$stmt->bindValue(2,$data1);
$stmt->bindValue(3,$data2);
$stmt->bindValue(4,$agenda->getDescBreve());
$stmt->bindValue(5,$agenda->getDescricao());
$stmt->bindValue(6,$agenda->getLocal());
$stmt->bindValue(7,$condicao);
$stmt->execute();//executa a instrução

//simples comparação para saber se deu certo ou não a execução do sq
$msg = $stmt === TRUE ? 'Atualizado com sucesso!' : 'Falha ao tentar atualizar'; 		 	echo 			 	$msg;

$oConexao->commit(); //finaliza a transação 
}catch(Exception $e){
	//$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}

}

 

Essa comparação de retorno de uma mensagem de erro, ela retorna como FALSE, sendo assim 'Falha ao tentar atualizar',

O Exception, nada Faz...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remova essa linha, não faz sentido algum:

$msg = $stmt === TRUE ? 'Atualizado com sucesso!' : 'Falha ao tentar atualizar';

Você está usando Exceptions e não retornos. Relei-a o post #3.

 

Adicional, $stmt nunca vai ser TRUE nem FALSE, ele é um objeto da classe PDOStatement. Por isso a resposta sempre será 'Falha ao tentar atualizar'.

 

Novamente eu afirmo, o problema deve estar no objeto $agenda, na classe agenda. Poste-a.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Classe agenda

<?php 

class Agenda{

	private $id;
private $evento;
private $data1;
private $data2;
private $descBreve;
private $descricao;
private $local;


//Getters e Setters
public function setId($id){
	$this->id = $id;	
}

public function getId(){
	return $this->id;	
}

public function setEvento($evento){
	$this->evento = $evento;
}

public function Teste(){
	return $this->teste;	
}

public function getEvento(){
	return $this->evento;
}

public function setData1($data1){
	$this->data1 = $data1;
}

public function getData1(){
	return $this->data1;	
}

public function setData2($data2){
	$this->data2 = $data2;	
}

public function getData2(){
	return $this->data2;	
}

public function setDescBreve($descBreve){
	$this->descBreve = $descBreve;
}

public function getDescBreve(){
	return $this->descBreve;	
}

public function setDescricao($descricao){
	$this->descricao = $descricao;	
}

public function getDescricao(){
	return $this->descricao;	
}

public function setLocal($local){
	$this->local = $local;	
}

public function getLocal(){
	return $this->local;	
}
//Fim Getters e Setters

}

?>

 

Classe AgendaDAO

 

<?php


class AgendaDAO{

private $agendaDAO;
public function __construct(){

	}

public function retornaUltimoIdEvento(){
try{
	$oConexao = Conexao::getInstance();	
	$oConexao->beginTransaction(); //Abre a transação com o bd e ainda desliga o auto commit;

	$stmt = $oConexao->prepare("SELECT MAX(id) as evento FROM AGENDA");
	$stmt->execute();

	$evento = $stmt->fetch(PDO::FETCH_ASSOC);
	return $evento['evento'];
}catch(PDOException $e){
	$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}

}


public function insereEvento(){
try{

$oConexao = Conexao::getInstance();
$agenda = new Agenda();
$agendaDAO = new AgendaDAO();
$oConexao->beginTransaction();
$stmt = $oConexao->prepare("INSERT INTO AGENDA (id) VALUES (null)");
$stmt->execute();
$oConexao->commit();
echo"Transação realizada<br/>";
//echo $agendaDAO->retornaUltimoIdEvento();
$agenda->setId($agendaDAO->retornaUltimoIdEvento());

return ($agenda);
}catch(PDOException $e){
	$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}
}


public function alteraEvento($agenda,$condicao){
try{
$oConexao = Conexao::getInstance();//Realiza conexao

//Tratamento de datas
$data1 = $this->datasql($agenda->getData1());
$data2 = $this->datasql($agenda->getData2());


//Prepara a instrução
$stmt = $oConexao->prepare("UPDATE AGENDA SET evento=?, data1=?, data2=?, desc_breve=?, descricao=?, local=? WHERE id=?");
$oConexao->beginTransaction(); //Abre a transação com o bd e ainda desliga o auto commit;
$stmt->bindValue(1,$agenda->getEvento());
$stmt->bindValue(2,$data1);
$stmt->bindValue(3,$data2);
$stmt->bindValue(4,$agenda->getDescBreve());
$stmt->bindValue(5,$agenda->getDescricao());
$stmt->bindValue(6,$agenda->getLocal());
$stmt->bindValue(7,$condicao);
$stmt->execute();//executa a instrução


//simples comparação para saber se deu certo ou não a execução do sq
$msg = $stmt === TRUE ? 'Atualizado com sucesso!' : 'Falha ao tentar atualizar'; 		 	echo 			 	$msg;

$oConexao->commit(); //finaliza a transação 
}catch(Exception $e){
	//$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}

}

public function consultaEventoPorId($agenda){
	try{
	$oConexao = Conexao::getInstance();
	$oConexao->beginTransaction();

	$stmt = $oConexao->prepare("SELECT *FROM agenda WHERE id='?')");		
	$stmt->bindValue(1,$agenda->getId());
	$stmt->execute();
	$oConexao->commit();

	$evento = $stmt->fetchall(PDO::FETCH_ASSOC);


	}catch(PDOException $e){
	$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
	}
}

// Formata data aaaa-mm-dd para dd/mm/aaaa
function databr($datasql) {
	if (!empty($datasql)){
	$p_dt = explode('-',$datasql);
	$data_br = $p_dt[2].'/'.$p_dt[1].'/'.$p_dt[0];
	return $data_br;
	}
}

// Formata data dd/mm/aaaa para aaaa-mm-dd
function datasql($databr) {
	if (!empty($databr)){
	$p_dt = explode('/',$databr);
	$data_sql = $p_dt[2].'-'.$p_dt[1].'-'.$p_dt[0];
	return $data_sql;
	}
}
public function removeEvento(){

}

}
?>

 

AgendaControl.php

 

<?php
require_once("../../config/config.php");
require_once("../bd/Conexao.class.php");
require_once("../model/Agenda.class.php");
require_once("../model/AgendaDAO.class.php");


$acao = $_REQUEST["acao"];
$v = $_REQUEST;
/*$dadosEvento = array($v['id'],$v['evento'],$v['data1'],$v['data2'],$v['descBreve'],$v['descricao'],$v['local']);*/



switch($acao){

case 'iniciaCad':{

}

case 'concluiCad':{

}

case 'excluir':{

}

case 'alterar':{
		$agendaDAO = new AgendaDAO();
		$agenda = new Agenda();
		$agenda->setId($v['id']);
		$agenda->setEvento($v['evento']);
		$agenda->setData1($v['data1']);
		$agenda->setData2($v['data2']);
		$agenda->setDescBreve($v['descBreve']);
		$agenda->setDescricao($v['descricao']);
		$agenda->setLocal($v['local']);
		$condicao = $agenda->getId();
		$agendaDAO->alteraEvento($agenda,$condicao);	
}

default:
	return null; //Por padrão, esse switch não retorna nada.

}







?>

 

 

Conexao

<?php

class Conexao extends PDO {

   private static $instancia;

  public function Conexao() {
    // O construtro abaixo é o do PDO
  parent::__construct(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
  }

   public static function getInstance() {
       // Se o a instancia não existe eu faço uma
       if(!isset( self::$instancia )){
           try {
		self::$instancia = new PDO(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
		//DB_DRIVER.":host=".DB_HOST.";dbname=".DB, DB_USER, DB_PASS		

           } catch (PDOException $e ) {
               echo ("Erro ao conectar.  Erro:".$e->getMessage());
               exit ();
           }
       }
       // Se já existe instancia na memória eu retorno ela
      return self::$instancia;
   }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irei postar tudo que tenho...

 

config/config.php

<?php

define ("DB_DRIVER",'mysql');
define("DB_HOST","localhost");
define("DB_NAME","baladajov");
define("DB_USER","root");
define("DB_PASS","");

if(is_file("config/ChromePhp.php")){
 require_once("config/ChromePhp.php");	
}else
if(is_file("../config/ChromePhp.php")){
require_once("../config/ChromePhp.php");	
}else
if(is_file("../../config/ChromePhp.php")){
require_once("../../config/ChromePhp.php");	
}else{echo"Arquivo de Debug não encontrado.";}


function __autoload($className){
if(is_file("classes/model/".$className.".class.php")){
	require_once("classes/model/".$className.".class.php");	
}else
if(is_file("../model/".$className.".class.php")){
	require_once("../model/".$className.".class.php");	
}else
if(is_file("classes/bd/".$className.".class.php")){
	require_once("classes/bd/".$className.".class.php");	
}else
if(is_file("../bd/".$className.".class.php")){
	require_once("../bd/".$className.".class.php");	
}else
if(is_file("classes/control/".$className.".class.php")){
	require_once("classes/control/".$className.".class.php");	
}else
if(is_file("../control/".$className.".class.php")){
	require_once("../control/".$className.".class.php");	
}else{
	echo"Classe '".$className."' não existe:<br/>";
}

}

?>

 

 

classes/bd/Conexao.class.php

<?php
if(is_file("config/config.php")){
 require_once("config/config.php");	
}else
if(is_file("../config/config.php")){
require_once("../config/config.php");	
}else
if(is_file("../../config/config.php")){
require_once("../../config/config.php");	
}else{echo"Arquivo config não encontrado.";}

class Conexao extends PDO {

public $handle = null;

function __construct() {
try {
if ( $this->handle == null ) {
$dbh = parent::__construct(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
$this->handle = $dbh;
return $this->handle;
}
}
catch ( PDOException $e ) {
echo 'Connection failed: ' . $e->getMessage( );
return false;
}


}
//aqui criamos um objeto de fechamento da conexão
function __destruct( ) {
$this->handle = NULL;
}

  /* private static $instancia;

  public function Conexao() {
    // O construtro abaixo é o do PDO
  parent::__construct(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
  }

   public static function getInstance() {
       // Se o a instancia não existe eu faço uma
       if(!isset( self::$instancia )){
           try {
		self::$instancia = new PDO(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
		//DB_DRIVER.":host=".DB_HOST.";dbname=".DB, DB_USER, DB_PASS		

           } catch (PDOException $e ) {
               echo ("Erro ao conectar.  Erro:".$e->getMessage());
               exit ();
           }
       }
       // Se já existe instancia na memória eu retorno ela
      return self::$instancia;
   }
*/
}
?>

 

classes/view/CadastraEvento.php

<?php 
require_once("classes/control/AgendaControl.php");


if(isset($_GET['acaoAg'])){
	$acao =$_GET['acaoAg'];

	switch($acao){
		case "novo":

		$id = insereEvento();

		echo"Id recebido do DAO:".$id;
		$acaoControl = 'alterar';			
		break;	

		case "alter":
		echo "alterar Evento";
		/*
		$agendaControl = new AgendaControl();
		$agendaControl->atualizaEvento();		
		*/
		break;

	}	
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#divAlerta {
background-color:#09F;
font-family:Verdana, Geneva, sans-serif;
font-size:12px;
font-weight:bold;
  width: 300px;
  height: ;

   }

.loader {
  display: none;
  float: left;
  }
</style>


<title>Documento sem título</title>
<link type="text/css" href="scripts/jquey_ui/css/custom-theme/jquery-ui-1.8.23.custom.css" rel="stylesheet" />
   <link type="text/css" href="style/forms_admin.css" rel="stylesheet" />

<script type="text/javascript" src="scripts/jquey_ui/js/jquery-ui-1.8.23.custom.min.js"></script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>



</head>

<body>

<div id="wrapper">

       <h1>Give us your feedback</h1>

     <div id="inner-wrapper">

	<form id="feedback" action="classes/control/AgendaControl.php" method="post">

         	<div id="response"><!--This will hold our error messages and the response from the server. --></div>           

           	<input name="acao" type="hidden" id="acao" value="<?php echo $acaoControl; ?>" />

               <input name="id" type="hidden" class="required" id="id" value="
               <?php if($id!=null){echo $id;}?>" />           

               <div class="inputs">
                 <label>Evento</label>         
                 <input name="evento" type="text" class="required" id="evento" size="30" />           
               </div>

                <div class="inputs">
                 <label>Local</label>         
                 <input name="local" type="text" class="required" id="local" size="30" />           
               </div>

                <div class="inputs">
                 <label>Data</label>         
                 <input name="data1" type="text" class="required" id="data1" size="30" />           
               </div>   

           	 <div class="inputs">
                 <label>Data Encerramento</label>         
                 <input name="data2" type="text" class="required" id="data2" size="30" />           
               </div> 

               <div class="inputs">
                 <label>Descrição Breve</label>         
                 <textarea name="descBreve" cols="25" rows="" class="required" id="descBreve"></textarea>          
               </div>

               <div class="inputs">
                 <label>Descrição Completa</label>         
                 <textarea name="descricao" cols="25" rows="" class="required" id="descricao"></textarea>          
               </div>                       

               <div class="button">
                 <input type="submit" name="submit" id="submit" value="Submit" />
               </div>


       </form>

     </div><!-- End inner-wrapper -->

</div><!-- End wrapper -->

</body>
</html>

 

 

classes/control/AgendaControl.php

<?php
if(is_file("config/config.php")){
 require_once("config/config.php");	
}else
if(is_file("../config/config.php")){
require_once("../config/config.php");	
}else
if(is_file("../../config/config.php")){
require_once("../../config/config.php");	
}else{echo"Arquivo confignão encontrad.";}

if(isset($_REQUEST["acao"])){
	$acao = $_REQUEST["acao"];
	$v = $_REQUEST;

	/*$dadosEvento = array($v['id'],$v['evento'],$v['data1'],$v['data2'],$v['descBreve'],$v['descricao'],$v['local']);*/

switch($acao){

case 'iniciaCad':{

}

case 'concluiCad':{

}

case 'excluir':{

}

case 'alterar':{

		$agenda = new Agenda();
		$id=$v['id'];
		echo "<br/>Valor sendo passado recebido pelo form:".$id;
		$agenda->setEvento($v['evento']);
		$agenda->setData1($v['data1']);
		$agenda->setData2($v['data2']);
		$agenda->setDescBreve($v['descBreve']);
		$agenda->setDescricao($v['descricao']);
		$agenda->setLocal($v['local']);
		$agendaDAO = new AgendaDAO();
		$agendaDAO->alteraEvento($agenda,$id);	
}

default:
	return null; //Por padrão, esse switch não retorna nada.

}
}else{

echo"<br/>Não existe REQUEST!<br/>";

}

function insereEvento(){
	$agendaDAO = new AgendaDAO();
	return $agendaDAO->insereEvento();
}


?>

 

classes/model/AgendaDAO.class.php

<?php


class AgendaDAO{

private $agendaDAO;
private $oConexao;
public function __construct(){
  $this->oConexao = new Conexao();	
	}



public function insereEvento(){
try{


//$this->oConexao->beginTransaction();
$stmt = $this->oConexao->prepare("INSERT INTO AGENDA (id) VALUES (null)");
$stmt->execute();

//$this->oConexao->commit();
$id = $this->oConexao->lastInsertId();
return ($id);

$this->oConexao=null;
}catch(PDOException $e){
	$this->oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getCode();
}
}

/*public function insereEvento(){
try{


$agenda = new Agenda();
$agendaDAO = new AgendaDAO();
$this->oConexao->beginTransaction();
$stmt = $this->oConexao->prepare("INSERT INTO AGENDA (id) VALUES (null)");
$stmt->execute();
$this->oConexao->commit();
echo"Transação realizada<br/>";
//echo $agendaDAO->retornaUltimoIdEvento();
$agenda->setId($agendaDAO->retornaUltimoIdEvento());

return ($agenda);
}catch(PDOException $e){
	$this->oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}
}*/


public function alteraEvento($agenda,$condicao){
$evento = "Fim do mundo 2";
$cond = $condicao;		
try{
echo "Condição: ".$condicao;
$sql = "UPDATE agenda SET evento=? WHERE id=?";
$stmt = $this->oConexao->prepare($sql);
$stmt->execute(array($evento,$cond));

}catch ( PDOException $ex ){  echo "Erro: ".$ex->getCode(); }
}
/*try{
$oConexao = Conexao::getInstance();//Realiza conexao

//Tratamento de datas
$data1 = $this->datasql($agenda->getData1());
$data2 = $this->datasql($agenda->getData2());


//Prepara a instrução
$stmt = $oConexao->prepare("UPDATE AGENDA SET evento=?, data1=?, data2=?, desc_breve=?, descricao=?, local=? WHERE id=?");
$oConexao->beginTransaction(); //Abre a transação com o bd e ainda desliga o auto commit;
$stmt->bindValue(1,$agenda->getEvento());
$stmt->bindValue(2,$data1);
$stmt->bindValue(3,$data2);
$stmt->bindValue(4,$agenda->getDescBreve());
$stmt->bindValue(5,$agenda->getDescricao());
$stmt->bindValue(6,$agenda->getLocal());
$stmt->bindValue(7,$condicao);
$stmt->execute();//executa a instrução


//simples comparação para saber se deu certo ou não a execução do sq
$msg = $stmt === TRUE ? 'Atualizado com sucesso!' : 'Falha ao tentar atualizar'; 		 	echo 			 	$msg;

$oConexao->commit(); //finaliza a transação 
}catch(Exception $e){
	//$oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
}
*/		


public function consultaEventoPorId($agenda){
	try{
	$this->oConexao = Conexao::getInstance();
	$oConexao->beginTransaction();

	$stmt = $this->oConexao->prepare("SELECT *FROM agenda WHERE id='?')");		
	$stmt->bindValue(1,$agenda->getId());
	$stmt->execute();
	$this->oConexao->commit();

	$evento = $stmt->fetchall(PDO::FETCH_ASSOC);


	}catch(PDOException $e){
	$this->oConexao->rollBack();//Se houver alguma exceção, retrocede as alterações feitas no banco.
   	echo $e->getMessage();
	}
}

// Formata data aaaa-mm-dd para dd/mm/aaaa
function databr($datasql) {
	if (!empty($datasql)){
	$p_dt = explode('-',$datasql);
	$data_br = $p_dt[2].'/'.$p_dt[1].'/'.$p_dt[0];
	return $data_br;
	}
}

// Formata data dd/mm/aaaa para aaaa-mm-dd
function datasql($databr) {
	if (!empty($databr)){
	$p_dt = explode('/',$databr);
	$data_sql = $p_dt[2].'-'.$p_dt[1].'-'.$p_dt[0];
	return $data_sql;
	}
}
public function removeEvento(){

}

}
?>

 

classe/model/Agenda.class.php

<?php 

class Agenda{

	private $id;
private $evento;
private $data1;
private $data2;
private $descBreve;
private $descricao;
private $local;


//Getters e Setters
public function setId($id){
	$this->id = $id;	
}

public function getId(){
	return $this->id;	
}

public function setEvento($evento){
	$this->evento = $evento;
}

public function Teste(){
	return $this->teste;	
}

public function getEvento(){
	return $this->evento;
}

public function setData1($data1){
	$this->data1 = $data1;
}

public function getData1(){
	return $this->data1;	
}

public function setData2($data2){
	$this->data2 = $data2;	
}

public function getData2(){
	return $this->data2;	
}

public function setDescBreve($descBreve){
	$this->descBreve = $descBreve;
}

public function getDescBreve(){
	return $this->descBreve;	
}

public function setDescricao($descricao){
	$this->descricao = $descricao;	
}

public function getDescricao(){
	return $this->descricao;	
}

public function setLocal($local){
	$this->local = $local;	
}

public function getLocal(){
	return $this->local;	
}
//Fim Getters e Setters

}

?>

 

Index.php

<?php

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>
<?php

include("classes/view/cadastroEvento.php");


?>
<body>
</body>
</html>

 

Já não sei o que fazer... Já perdi várias noites de sono e nada...

 

Help Me!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava com este mesmo problema a uns 5 minutos atras ... dei uma olhada na documentação do php e consegui resolver da seguinte maneira:

$stmt = $pdo->prepare("update pessoa set nome=? where id = $id");
$stmt->bindValue(1, $pessoa->getNome() );
$stmt->execute();
Boa Sorte !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.