sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Bom dia pessoal Estou aprendendo a programar orientado a objetos. E estou tentando fazer alguns codigos com classes e functions. O objetivo do codigo é verificar a disponibilidade de alguns campos no banco de dados. Meu codigo : no arquivo cad.php include ('classes.php'); $retornovalidacao = new validacao(); $retornovalidacao-> verificacampos(); if ($retornovalidacao == ""){ $retornovalidacao-> verificausuario($_POST['nome'], $_POST['login'], $_POST['senha']); } if ($retornovalidacao != "") { echo "<script language='JavaScript'> alert('$retornovalidacao')</script>"; // aqui acontece o erro //Catchable fatal error: Object of class validacao could not be converted to string in C:\wamp\www\ATENDIMENTOS\atendentes\cadastroAtendentes.php on line 11 header('Location: cadastroAtendentes.html'); } else{ echo "<script language='JavaScript'> alert('Sucesso!')</script>"; $insereatendente = new InsertAtendente(); $insereatendente-> insere($_POST['nome'], $_POST['login'], $_POST['senha'], $_POST['empresa'], $_POST['fone'], $_POST['email'], $_POST['skype'], $_POST['obs']); IF ($insereatendente != "0"){ echo "<script language='JavaScript'> alert('Ocorreu um erro ao inserir os dados.'</script>"; } else{ echo "<script language='JavaScript'> alert('Dados inseridos com sucesso')</script>"; } } No meu arquivo classes.php class validacao{ private $varControle; function verificacampos(){ $this->varControle = ""; if ($_POST['nome'] == ""){ $this->varControle = "Nome não preenchido!<br>"; } if ($_POST['login'] == ""){ $this->varControle = $this->varControle . "Login não preenchido!<br>"; } if ($_POST['senha'] == ""){ $this->varControle = $this->varControle . "Senha não pode ficar em branco!<br>"; } else{ if ($_POST['senha'] != $_POST['senha2']){ $this->varControle = $this->varControle . "Confirmação da senha incorreta!<br>"; } } return $this->varControle; } function verificausuario($nome, $login, $senha){ // verifico se o nome, login e senha estão disponiveis $sql = "SELECT nome, login, senha from atendentes where nome ='" . $this->nome . "'"; $sql = $sql . " or login ='" . $this->login . "' and senha = '" . $this->senha . "'"; $consulta = mysql_query($sql); if ($consulta != 0){ return "Nome, Login ou senha indisponíveis!"; } else{ return ""; } } } // classe inserir dados class InsertAtendente{ private $nome, $login, $senha, $empresa, $fone, $email, $skype, $obs; function insere($nome, $login, $senha, $empresa, $fone, $email, $skype, $obs){ $this->nome = $nome; $this->login = $login; $this->senha = $senha; $this->empresa = $empresa; $this->fone = $fone; $this->email = $email; $this->skype = $skype; $this->obs = $obs; $sql = "INSERT into atendentes (nome, login, senha, empresa, fone, email, skype) values "; $sql = $sql . "('" . $this->nome . "', '" . $this->login . "', '" . $this->senha . "'"; if ($this->empresa != ""){ $sql = $sql . ",'" . $this->empresa . "' " ; } if ($this->fone != ""){ $sql = $sql . ", '" . $this->fone . "' "; } if ($this->email != ""){ $sql = $sql . ", '" . $this->email . "' "; } if ($this->skype != ""){ $sql = $sql . ", '" . $this->skype . "' "; } if ($this->obs != ""){ $sql = $sql . ", '" . $this->obs . "' "; } $sql = $sql . ")"; $insere = mysql_query($sql) or die (mysql_error()); return $insere; } } O que esta dando errado? Alguem pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Dezembro 12, 2011 echo "<script language='JavaScript'> alert('$retornovalidacao')</script>"; Você não pode imprimir um objeto, nesse caso esse retorno validação teria de ser uma mensagem de sucesso ou falha, e não o objeto em si. Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Consegui resolver o erro. Mas agora sempre retorna que o else daqui if ($retornovalidacao == ""){ //verifica se os campos estão disponiveis $retornovalidacao-> verificausuario($_POST['nome'], $_POST['login'], $_POST['senha']); } else{ echo "<script language='JavaScript'> alert('Nome, Login ou senha não foram preenchidos ou a confirmação da senha está incorreta.')</script>"; exit; } Estou preenchendo os campos e ja confirmei se o nome deles no html esta condizendo e estão sim. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 usa a funcao empty() if(empty($retornovalidacao)){.. Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Nada ainda. Tentei atribuir o valor do POST a uma variavel exibi-la em um alert. Mas quando tento fazer isto aparece no debugador do fire fox "valor do input text" is not defined. Como resolvo isso? Bem estranho um erro destes. Ele passa por post mas da tipo indefinido. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 eu sempre uso 2 funcoes: isset e empty...testa ae.... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Já usei amigo. O fato é que esta enviando os dados. MAs ele aparece como tipo indefinido. Se eu digitar "teste" no campo nome o erro aparecerá "teste is not defined" se eu digitar babalablabal aparece "babalablabal is not defined" No formulario html eu tenho uma função em javascript para tambem verificar o preenchimento dos campos. Agora o meu php está assim include ('classes.php'); $retornovalidacao = new validacaoatendentes(); $retornovalidacao-> verificacampos(); if (empty($retornovalidacao)){ //verifica se os campos estão disponiveis $retornovalidacao-> verificausuario($_POST['nome'], $_POST['login'], $_POST['senha']); } else{ echo "<script language='JavaScript'> alert('Nome, Login ou senha não foram preenchidos ou a confirmação da senha está incorreta.')</script>"; exit; } Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Dezembro 12, 2011 Estão faltando aspas na string então: alert('"$retornovalidacao"'); Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 mas ja usou isset e empty juntas? if(isset($var) and !empty($var)){... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Deu erro na parte da classe novamente. Vou postar todo meu codigo. php. include ('C:\wamp\www\ATENDIMENTOS\files\conexao_bd.php'); // Verificando novamente o preenchimento dos campos em caso do usuário desabilitar o javascript do navegador include ('classes.php'); $retornovalidacao = new validacaoatendentes(); $retornovalidacao-> verificacampos(); if ($retornovalidacao == ""){ //verifica se os campos estão disponiveis $retornovalidacao-> verificausuario($_POST['nome'], $_POST['login'], $_POST['senha']); } else{ echo "<script language='JavaScript'> alert('Nome, Login ou senha não foram preenchidos ou a confirmação da senha está incorreta.')</script>"; exit; } // exibe o retorno if ($retornovalidacao != "") { echo "<script language='JavaScript'> alert('Login ou senha indisponíveis.')</script>"; //header('Location: cadastroAtendentes.html'); } else{ // tentando inserir os dados echo "<script language='JavaScript'> alert('Sucesso! Vamos tentar inserir os dados.')</script>"; $insereatendente = new InsertAtendente(); $insereatendente-> insere($_POST['nome'], $_POST['login'], $_POST['senha'], $_POST['empresa'], $_POST['fone'], $_POST['email'], $_POST['skype'], $_POST['obs']); IF ($insereatendente != "0"){ echo "<script language='JavaScript'> alert('Ocorreu um erro ao inserir os dados.')</script>"; } else{ echo "<script language='JavaScript'> alert('Dados inseridos com sucesso')</script>"; } } As classes estão aqui neste codigo class validacaoatendentes{ private $varControle; function verificacampos(){ $this->varControle = ""; if ($_POST['nome'] == ""){ $this->varControle = "Nome não preenchido!<br>"; } if ($_POST['login'] == ""){ $this->varControle = $this->varControle . "Login não preenchido!<br>"; } if ($_POST['senha'] == ""){ $this->varControle = $this->varControle . "Senha não pode ficar em branco!<br>"; } else{ if ($_POST['senha'] != $_POST['senha2']){ $this->varControle = $this->varControle . "Confirmação da senha incorreta!<br>"; } } if ($this->varControle != ""){ return "Faltou campos!"; } else{ return ""; } } function verificausuario($nome1, $login, $senha){ // verifico se o nome, login e senha estão disponiveis $sql = "SELECT nome, login, senha from atendentes where nome ='" . $this->nome1 . "'"; $sql = $sql . " or login ='" . $this->login . "' and senha = '" . $this->senha . "'"; $consulta = mysql_query($sql); if ($consulta != 0){ return "Erro"; } else{ return ""; } } } Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 $retornovalidacao = new validacaoatendentes(); $retornovalidacao-> verificacampos(); if ($retornovalidacao == ""){ claro que assim nunca ira funcionar, você esta comparando um objeto com uma string teste assim $retornovalidacao = new validacaoatendentes(); $val = $retornovalidacao-> verificacampos(); if ($val == ""){ ou $retornovalidacao = new validacaoatendentes(); if ($retornovalidacao-> verificacampos() == ""){ ja que o proprio metodo retorna vazio ou erro PS esse oo ae nao tem nada de oo, eh pura gambiarra...altissimo acoplamento...etc... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 É que é a primeira vez que programo em OO. Estou meio perdido mesmo. Voce podia dar um exemplo de como é a OO realmente? Estou testando sua sugestão Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 cara, você primeiro tem q estudar os basicos de funcoes, e vejo q você nao tem um padrao de programacao...eu posso indicar um otimo livro http://www.novatec.c...os/phpobjetos2/ você tem q aprender associacao, composicao e agregacao, os 3 pilares da oo, e tb quanto menos codigo acoplado, melhor, o acoplamento eh a dependencia de um codigo ao outro, quanto mais independente, mais reaproveitavel, outro pilar da oo eh o reuso... veja que este trecho if ($_POST['nome'] == ""){ $this->varControle = "Nome não preenchido!<br>"; } if ($_POST['login'] == ""){ $this->varControle = $this->varControle . "Login não preenchido!<br>"; } if ($_POST['senha'] == ""){ $this->varControle = $this->varControle . "Senha não pode ficar em branco!<br>"; } else{ if ($_POST['senha'] != $_POST['senha2']){ torna o seu codigo completamente usavel apenas para um projeto, o que nao eh legal...e toda vez q mudar ele de projeto, tera q mecher no codigo Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 12, 2011 Igor, obrigado pela resposta. Vou estudar meu orçamento para comprar o livro. Mas nao consigo imaginar como eu poderia fazer um codigo ddste tipo para reaproveita-lo em outro projeto. Ainda conheço muito pouco do mundo programação web. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 12, 2011 entao aproveita q o php tb eh procedural eestude eleprocedural, depois va ao oo, pq o procedural você vai aprender a linguagem, depois você aprende o oo, pois o oo eh conceito, ja a linguagem eh mais pratica.... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 13, 2011 Igor, sobre a procedural. Deste conceito acredito que eu nao va ter dificuldades pois tenho experiencia com VB6 totalmente procedural. Eu precisaria mesmo programar procedural no php e depois partir para OO? Se eu tiver duvida de alguma funçao posso pesquisar sobre isso e tals. Acredito que a sintaxe da linguagem seja o menor problema. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 13, 2011 Eu precisaria mesmo programar procedural no php e depois partir para OO? sim, pq embora a logica de programacao seja a mesma, os atributos de cada linguagem sao diferentes por exemplo, nao conheco vb, mas php nao eh tipado como java, e portanto eh completamente dinamico, ha variaveis variaveis, funcoes variaveis, objetos variaveis, e java nao, java eh duro como pedra, ja fex eh tipado como o java, porem eh flexivel como o php, o q você precisa conhecer mesmo nao eh o procedural, mas os "beneficios", as regalias, os truques q o php t oferece...outra coisa, ha alguns principios q se deve serguir no oo, como eu citei acima: agregacao, composicao e associacao, você sempre ira encontrar isto no oo, e tb reuso, e o reuso, pq você nao vai ter o mesmo trabalho de escrever tudo do zero a cada projeto, projetos diferentes tem requisitos diferentes, mas isso nao significa q tenha q escrever tudo o q você precisa do zero de novo, outro conselho, procure tb estudar sobre padroes de projeto, estude o livro q indiquei acima, ja vi gente com o pdf dele... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 13, 2011 Entendi. Fiz algumas coisinhas em procedural ha um mes atras quando entrei aqui na empresa. Li algumas apostilas de introdução. Até testei algumas coisas com ajax usando jquery. O caso é que o conceito que tive sobre OO na faculdade nao foi muito claro e quero investir bastante nisso. Parece ser um recurso muito útil pelos vários comentários positivos que vejo por aí. Obrigado pela ajuda. Precisarei frequentar muito este fórum hehe. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Dezembro 13, 2011 procure o livro do pablo dalloglio de programacao php com orientacao objetos e padroes de projeto, eh excelente, e depois estude padroes de projeto, pois o livro do pablo nao entra em detalhes nesse assunto, tem um em portugues excelente, use a cabeça padroes de projeto... Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Dezembro 13, 2011 Já ouvi falar do livro Use a Cabeça. Parece ser muito bom. Estou fechando o tópico. Valeu pelas dicas. Compartilhar este post Link para o post Compartilhar em outros sites