TIGlobal 0 Denunciar post Postado Junho 17, 2010 Olá pessoal, Estou começando a estudar OO em PHP e me surgiu uma dúvida, fiz um formulário em html para enviar dados de um time, e criei uma classe com métodos para inserir, alterar e remover: Times.php <?php # ============ Classe Times ============ class Times{ private $id; private $estado; private $time; private $pontos; public function setId($id){ $this -> id = $id; } public function setEstado($estado){ $this -> estado = $estado; } public function setTime($time){ $this -> time = $time; } public function setPontos($pontos){ $this -> pontos = $pontos; } public function getId(){ return $this -> id; } public function getEstado(){ return $this -> estado; } public function getTime(){ return $this -> time; } public function getPontos(){ return $this -> pontos; } public function getJogos(){ return $this -> jogos; } public function save(){ if ($this->getId() == 0){ $this->insert(); } else { $this->update(); } } public function get($id){ $sql = 'SELECT * FROM times WHERE id = "'.$id.'"' ; $query = mysql_query($sql); $result = mysql_fetch_assoc($query); $result = $this->getFromResult(); return $result; } public function delete(){ $sql ='DELETE FROM times WHERE id = \''.$this->getId().'\' '; $result = mysql_query($sql); $this->setId(0); } private function getFromResult($result) { $this->setId($result['id']); $this->setEstado($result['estado']); $this->setTime($result['time']); $this->setPontos($result['pontos']); $this->setJogos($result['jogos']); } private function update(){ $sql = 'UPDATE times SET id = \''.$this->getId().'\', estado = \''.$this->getEstado().'\', time = \''.$this->getTime().'\', pontos = \''.$this->getPontos().'\', jogos = \''.$this->getJogos().'\', WHERE id = \''.$this->getId().'\''; mysql_query($sql) or die (mysql_error()); } private function insert(){ $sql = 'INSERT INTO times (estado, time, pontos, jogos, vitorias, empates, derrotas, golspro, golscontra, saldogols) VALUES (\''.$this->getEstado().'\', \''.$this->getTime().'\', \''.$this->getPontos().'\', \''.$this->getJogos().'\', \''.$this->getVitorias().'\', \''.$this->getEmpates().'\', \''.$this->getDerrotas().'\', \''.$this->getGolspro().'\')'; mysql_query($sql) or die (mysql_error()); $this->setId(mysql_insert_id()); } } // fim da class ?> Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 17, 2010 e qual a dúvida ? Compartilhar este post Link para o post Compartilhar em outros sites
TIGlobal 0 Denunciar post Postado Junho 17, 2010 Minha dúvida é, como usar esse métodos criados, junto com o formulário e cadastrando no banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 18, 2010 <?php include 'Times.php';//dando include do arquivo da class $time = new Times();//criando um novo objeto $time->setId( $_POST['id'] ); $time->setEstado( $_POST['estado'] ); //... ai continua setando os atributos do objeto $time->save();//insere|atualizaacima é o arquivo de action do formulário.lembre-se de fazer a conexão com o banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 18, 2010 Essa sua classe esta insegura contra ataques de SQL Injection e procure seguir os padroes de desenvolvimento, é uma boa pratica nao misturar nomes ingles e portugues Compartilhar este post Link para o post Compartilhar em outros sites
TIGlobal 0 Denunciar post Postado Junho 18, 2010 Fabyo, vou revisar a classe, obrigado. William, era isso mesmo, só estou com dúvida na hora de editar as equipe, estou usando a ID dos mesmos. <?php include "conexao.php"; $Id = $_REQUEST['Id']; $result = $db->query("select * from times where id = ".$Id); $db->li = $db->fetch($result) ?> </head> <body> <h1> </h1> <form name="form1" method="post" action="actions/Times.php"> <p> </p> <p>Equipe <input type="text" name="time" value="<?php echo $db->li['time'] ?>" id="time"> </p> <p>Estado <input type="text" name="estado" id="estado"> </p> <p>Pontos <input type="text" name="pontos" id="pontos"> </p> Fica uma página em branco. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 18, 2010 uê ? usa a tua classe.. $time = new Times(); $time->get( $_GET['Id'] ); e ai:<input type="text" name="time" value="<?php echo $time->getTime(); ?>" id="time" /> a idéia é mais ou menos essa, dá uma olhada para arrumar os possíveis erros, pois não testei. Compartilhar este post Link para o post Compartilhar em outros sites
Monan Bertoluci 0 Denunciar post Postado Junho 18, 2010 <?php include "conexao.php"; $Id = $_REQUEST['Id']; $result = $db->query("select * from times where id = ".$Id); $db->li = $db->fetch($result) ?> </head> <body> <h1> </h1> <form name="form1" method="post" action="actions/Times.php"> <p> </p> <p>Equipe <input type="text" name="time" value="<?php echo $db->li['time'] ?>" id="time"> </p> <p>Estado <input type="text" name="estado" id="estado"> </p> <p>Pontos <input type="text" name="pontos" id="pontos"> </p> Você esta direcionando o action diretamente para sua classe. No meu ver, você deve criar um script como o Willian descreveu para a inserção, e neste script você inclui sua classe e trata as inserções. Compartilhar este post Link para o post Compartilhar em outros sites