Caleg 0 Denunciar post Postado Abril 13, 2015 Boa tarde! Estou criando um sistema de cadastro de clientes em poo. Já havia feito o mesmo cadastro utilizando outro banco de dados e outra classe e funcionou normalmente. Não entendo o que há de errado. O erro é: "Fatal error: Call to undefined method Clientes::incluir() in C:\wamp\www\workphpbackup\incluir.php on line 131" usuarios.php - função incluir class Clientes{ protected $nome; protected $endereco; protected $cep; protected $cidade; protected $estado; protected $nascimento; protected $cpf; protected $telefone; protected $email; protected $login; protected $senha; static function conectar(){ $conexao= @mysql_connect("localhost","root","") or die("erro"); mysql_select_db("hotel") or die("erro no banco"); } function incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login, $senha){ $this->nome = $nome; $this->endereco = $endereco; $this->cep = $cep; $this->cidade = $cidade; $this->estado = $estado; $this->nascimento = $nascimento; $this->cpf = $cpf; $this->telefone = $telefone; $this->email = $email; $this->login = $login; $this->senha = $senha; $incluir = "INSERT INTO clientes(nome, endereco, cep, cidade, estado, nascimento, cpf, telefone, email, login,senha)VALUES('$nome', '$endereco', '$cep', '$cidade', '$estado', '$nascimento', '$cpf', '$telefone', '$email', '$login','$senha')"; $resultado = mysql_query($incluir) or die("Die"); echo "Dados incluidos com sucesso!<a href=login.php>Clique aqui</a> para logar."; } } incluir.php <?php include "usuarios.php"; $ob = new Clientes(); $nome = $_POST['nome']; $endereco = $_POST['endereco']; $cep = $_POST['cep']; $cidade = $_POST['cidade']; $estado = $_POST['estado']; $nascimento = $_POST['nascimento']; $cpf = $_POST['cpf']; $telefone = $_POST['telefone']; $email = $_POST['email']; $login = $_POST['login']; $senha = $_POST['senha']; Clientes::conectar(); $ob->incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login,$senha); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Bri ~ 3 Denunciar post Postado Abril 13, 2015 troque $ob->incluir(.. para $ob->Clientes::incluir(.... Compartilhar este post Link para o post Compartilhar em outros sites
Caleg 0 Denunciar post Postado Abril 13, 2015 troque $ob->incluir(..para $ob->Clientes::incluir(.... Não deu certo. ;-; Apareceu: Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in C:\wamp\www\workphpbackup\incluir.php on line 131 Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 13, 2015 Deu pau aqui no texta area (Editando) Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 14, 2015 Estou criando um sistema de cadastro de clientes em poo Tem que mudar muita coisa para os códigos acima ser Oo, primeiro que você está misturando conexão com o BD com suas entidades, fazendo isso você quebra os princípios da Orientação Objeto e o viola Padrão DRY Não vou entrar em detalhes sobre DRY, pois já existe dezenas de tópico falando a respeito. Vamos ao código que faz a conexão com banco de dados static function conectar(){ $conexao= @mysql_connect("localhost","root","") or die("erro"); mysql_select_db("hotel") or die("erro no banco"); } Recomendo o uso da PDO para conexões, ou até mesmo mysqli, pois mysql_* está obsoleta e vai ser removido em breve em novas versões. E fora das classes de entidades "Clientes", se você quiser ter outra entidade chamada "Endereco", como vai fazer esta conexão, vai copiar e colar? O correto é instanciar a conexão Exemplo com seu próprio código. Conexao.php <? class Conexao { public function __construct() { $conexao= mysql_connect("localhost","root","") or die("erro"); mysql_select_db("test", $conexao) or die("erro no banco"); } } estendendo a conexão através da Classe class Clientes extends Conexao{ protected $nome; protected $endereco; protected $cep; protected $cidade; protected $estado; protected $nascimento; protected $cpf; protected $telefone; protected $email; protected $login; protected $senha; function incluir(){ } } ou vc pode chamar a conexão dentro da construct em uma entidade public function __construct() { $this->db = new Conexao(); } Esses dados abaixo, sem tratamento algum? Deixa sua aplicação totalmente vulneral a qualquer tipo de ataque $nome = $_POST['nome']; $endereco = $_POST['endereco']; $cep = $_POST['cep']; $cidade = $_POST['cidade']; $estado = $_POST['estado']; $nascimento = $_POST['nascimento']; $cpf = $_POST['cpf']; $telefone = $_POST['telefone']; $email = $_POST['email']; $login = $_POST['login']; $senha = $_POST['senha']; uma função de higienização já resolve boa parte dos problemas $nome = filter_var($_POST['nome'], FILTER_SANITIZE_STRING); Outro problema é passar diversos parâmetros pela função $ob->incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login,$senha); O uso de Getters e Setters resolve este problema com mais flexibilidade <?php class Clientes { public $nome; public $status; /** * @param mixed $nome */ public function setNome($nome) { $this->nome = $nome; } /** * @return mixed */ public function getNome() { return $this->nome; } /** * @param mixed $status */ public function setStatus($status) { $this->status = $status; } /** * @return mixed */ public function getStatus() { return $this->status; } /** * @return mixed */ public function incluir() { if(isset($this->nome)){ $this->status = "Nome $this->nome incluido com sucesso no db"; } } } $cliente = new Clientes(); $cliente->setNome('Caleg'); $cliente->incluir(); echo $cliente->getStatus(); Te aconselho a escolher algum padrão de desenvolvimento, e estudar para melhor organizar seus códigos. http://www.tutsup.com/2014/09/17/mvc-em-php-parte-1/ http://www.linhadecodigo.com.br/artigo/3466/trabalhando-com-data-access-object-dao-em-php.aspx Uma dica para Oo. É Trabalhar com Boas IDEs de desenvolvimento, boa partes de seus códigos podem ser gerados automaticamente para facilitar no desenvolvimento. <?php /** * Created by PhpStorm. * User: Williams Duarte * Date: 13/04/15 * Time: 21:22 */ class Clientes { public $nome; public $endereco; public $cep; public $cidade; public $estado; public $nascimento; public $cpf; public $telefone; public $email; public $login; public $senha; /** * @param mixed $cep */ public function setCep($cep) { $this->cep = $cep; } /** * @return mixed */ public function getCep() { return $this->cep; } /** * @param mixed $cidade */ public function setCidade($cidade) { $this->cidade = $cidade; } /** * @return mixed */ public function getCidade() { return $this->cidade; } /** * @param mixed $cpf */ public function setCpf($cpf) { $this->cpf = $cpf; } /** * @return mixed */ public function getCpf() { return $this->cpf; } /** * @param mixed $email */ public function setEmail($email) { $this->email = $email; } /** * @return mixed */ public function getEmail() { return $this->email; } /** * @param mixed $endereco */ public function setEndereco($endereco) { $this->endereco = $endereco; } /** * @return mixed */ public function getEndereco() { return $this->endereco; } /** * @param mixed $estado */ public function setEstado($estado) { $this->estado = $estado; } /** * @return mixed */ public function getEstado() { return $this->estado; } /** * @param mixed $login */ public function setLogin($login) { $this->login = $login; } /** * @return mixed */ public function getLogin() { return $this->login; } /** * @param mixed $nascimento */ public function setNascimento($nascimento) { $this->nascimento = $nascimento; } /** * @return mixed */ public function getNascimento() { return $this->nascimento; } /** * @param mixed $nome */ public function setNome($nome) { $this->nome = $nome; } /** * @return mixed */ public function getNome() { return $this->nome; } /** * @param mixed $senha */ public function setSenha($senha) { $this->senha = $senha; } /** * @return mixed */ public function getSenha() { return $this->senha; } /** * @param mixed $telefone */ public function setTelefone($telefone) { $this->telefone = $telefone; } /** * @return mixed */ public function getTelefone() { return $this->telefone; } } function __construct() { // TODO: Implement __construct() method. } function __destruct() { // TODO: Implement __destruct() method. } function __call($name, $arguments) { // TODO: Implement __call() method. } public static function __callStatic($name, $arguments) { // TODO: Implement __callStatic() method. } function __get($name) { // TODO: Implement __get() method. } function __set($name, $value) { // TODO: Implement __set() method. } function __isset($name) { // TODO: Implement __isset() method. } function __unset($name) { // TODO: Implement __unset() method. } function __sleep() { // TODO: Implement __sleep() method. } function __wakeup() { // TODO: Implement __wakeup() method. } function __toString() { // TODO: Implement __toString() method. } function __invoke() { // TODO: Implement __invoke() method. } static function __set_state($an_array) { // TODO: Implement __set_state() method. } function __clone() { // TODO: Implement __clone() method. } Abs Compartilhar este post Link para o post Compartilhar em outros sites