
Rafael Laurindo
Membros-
Total de itens
659 -
Registro em
-
Última visita
Tudo que Rafael Laurindo postou
-
class Teste { private $teste, $teste2; public function __set($attName, $value){ $this->$attName = $value; } public function __get($attName){ return $this->$attName; } } E se eu quisesse fazer assim retornar ou definir esses atributos se possem estáticos, em que teria que definir com o self::, como faria?
-
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Obrigado, resolveu mais uma vez. Esqueci de postar o porquê do erro, para chamar um script externo, devemos usar as tags <script></script> só, sem conteúdo algum. Abs. -
(Resolvido) Problema ao cadastrar dados usando transação
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em PHP
Olhem o código. No final de tudo depois de demorar alguns segundos, ele só cadastra os dados na tabela Pessoa e GenPessoa em Login não. A tela é esta. Está bem simples, só para testes. <?php //usar o require_once para chamar este arquivo externamente $login = $_POST['txtLogin']; require_once '../lib/sample/Main.php'; $main = new sample_Main(); $_db = $main->get_conn(); $cidades = " select * from cidade "; if ($login) { $genPessoa = new sample_GenPessoa(); $genPessoa = $genPessoa->retornaGenPessoa($login); $nome = $genPessoa['nome']; $email = $genPessoa['email']; $sexo = $genPessoa['sexo']; $naturalidade = $genPessoa['id_cidade']; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Teste</title> <script> function validarLogin(login){ //usar ajax } </script> </head> <body> <div align="right"><a href="#" onclick="">Sair</a></div> <!--<form method="POST" action="../lib/sample/Login.php">--> <form method="POST" action="../lib/sample/GenPessoa.php"> <fieldset> <legend>Dados da Pessoa</legend> Nome: <input type="text" name="txtNome" maxlength="10" value="<?= $nome ?>" /> <br/> login: <input type="text" name="txtLogin" id="txtLogin" maxlength="45" value="<?= $login ?>"/><!-- onblur="validarLogin(this.id)" --> <br/> senha: <input type="password" name="txtSenha" maxlength="45" value="<?= $senha ?>" /> <br/> Sexo: <br /> M <input type="radio" name="rbSexo" value="M" <?php if($sexo == 'M') echo "checked=\"checked\"" ?> /> <br/> F <input type="radio" name="rbSexo" value="F" <?php if($sexo == 'F') echo "checked=\"checked\"" ?> /> <br/><br/> Naturalidade: <select name="cbNaturalidade"> <option value="">selecione...</option> <?php $stmt = $_db->query($cidades); while ($cidade = $stmt->fetch()) { if($naturalidade == $cidade['id']) echo "<option value=\"$cidade[id]\" selected=\"selected\">$cidade[nome]</option>"; else echo "<option value=\"$cidade[id]\">$cidade[nome]</option>"; } ?> </select> <br /><br /> <input type="submit" id="submit" name="submit" value="Salvar"/> </fieldset> </form> </body> </html>[/codebox] Login.php [code]<?php require_once 'Main.php'; class sample_Login { public $login, $senha; protected $_db; public function __construct() { $main = new sample_Main(); $this->_db = $main->get_conn(); } public function obterLogin() { $this->login = $_POST['txtLogin']; $this->senha = md5($_POST['txtSenha']); } public function adicionarLogin($id) { $this->obterLogin(); $add = " insert into login(id_pessoa, login, senha) values('$id', '$this->login', '$this->senha') "; $stmt = $this->_db->prepare($add); if ($stmt->execute()){ return true; } return false; } }[/code] Pessoa.php [code]<?php abstract class sample_Pessoa { protected $_db, $id=NULL, $nome, $id_cidade; abstract function obterPessoa(); abstract function adicionarPessoa($query_pessoa); }[/code] GenPessoa.php [codebox]<?php require_once 'Main.php'; //Responsável por fazer a conexão com o banco class sample_GenPessoa extends sample_Pessoa { public $sexo; public function __construct() { $main = new sample_Main(); $this->_db = $main->get_conn(); if(!empty($_POST['submit'])) $this->adicionarGenPessoa(); } public function obterPessoa() { $this->nome = $_POST['txtNome']; $this->id_cidade = $_POST['cbNaturalidade']; } public function adicionarPessoa(){ $this->obterPessoa(); $add = " insert into pessoa(id, nome, id_cidade) values ('$this->id', ?, ?) "; $stmt = $this->_db->prepare($add); $stmt->bindParam(1, $this->nome, PDO::PARAM_STR); $stmt->bindParam(2, $this->id_cidade, PDO::PARAM_INT); if ($stmt->execute()){ $id = " select max(id) from pessoa "; if ($this->id = $this->_db->query($id)->fetchColumn()){ return true; } return false; } return false; } public function obterGenPessoa(){ $this->sexo = $_POST['rbSexo']; } private function adicionarGenPessoa() { $this->_db->beginTransaction(); //inicia uma transação. Método da classe PDO (PHP Data Object) do PHP $this->obterGenPessoa(); $query_pessoa = " insert into pessoa(id, nome, id_cidade) values ('$this->id', ?, ?) "; if(!$this->adicionarPessoa($query_pessoa)) $this->_db->rollback(); $add = " insert into genPessoa(id_pessoa, sexo) values ('$this->id', ?) "; $stmt = $this->_db->prepare($add); $stmt->bindParam(1, $this->sexo, PDO::PARAM_STR); if (!$stmt->execute()) $this->_db->rollBack(); $login = new sample_Login(); //aparentemente o script trava aqui. Se eu comentar esse último if funciona normalmente. if (!$login->adicionarLogin($this->id)) $this->_db->rollBack(); else echo 'Todos os dados foram cadastrados com sucesso!'; $this->_db->commit(); //encerra a transação } } $genPessoa = new sample_GenPessoa(); Existem outros métodos, mas não vem ao caso, pois somente estes estão envolvidos no problema em questão. -
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Entendi, mas só é possível rodar o VBscript no IE? -
Galera, preciso muito de ajuda, bati a cabeça horas e horas, e não consigo resolver. Vou postar o código abaixo, ele está lento na hora de cadastar, e não consegue realizar um dos cadastros.
-
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Descobri o erro, eu estava colocando no src=RPLTeste.js e o nome era RPLTesteAPI.js. MIl perdões. Mas, gostaria ainda de fazer uma pergunta. Por que é obrigatório o uso do type? -
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Estou fazendo isso, mas ainda não funciona. -
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Agora está dando esta resposta: RPLTeste is not defined RPLTeste.staticFunc(); -
(Resolvido) src da tag script não encontra arquivo js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Continua dando erro. -
RPLTeste.js RPLTeste = { staticProperty : 'static property', staticFunc : function() { alert('static function'); }, class : function() { this.testar = function() { alert(''); } } } Esse é o arquivo teste.htm [/font] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Insert title here</title> <script src="js/RPLAPI/RPLTeste.js"> function teste(){ RPLTeste.staticFunc(); } </script> </head> <body> <form> <input type="button" id="btnTeste" value="testar" onclick="teste()" /> </form> </body> </html> [font="Verdana"] O que está errado? O firebug do ff está mostrando: teste is not defined teste();
-
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Rapaz, to bolado, acho que tem um bug no FF, eu coloquei um comentário entre as tags select /select e o ff as leu como um nó filho. Teste aew. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Insert title here</title> <script> function create_monthOptions(id) { var el = document.getElementById(id); if(!el.firstChild.nextSibling) { for (var i = 1; i <= 12; i++) { //somente cria, não adiciona, ainda option = document.createElement('option'); option.value = i; option.text = i; //adiciona o option ao elemento do id informado el.appendChild(option); } } } </script> </head> <body onload=""> <form> <select id="cbMes" onclick="createOptionMonth(this.id)" > <!--<option value="teste">oi</option>--> </select> </form> </body> </html> -
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Aeeeeee! Hehehe!. Eu tava tentando só com o nextSibling, mas antes de verificar um irmão tem que verificar se existe pelo menos um filho. Isso aí Jonathan, sua teoria tava certa, parabéns. Resolvido. Mas gostaria de saber uma coisa que me intriga: por que não funcionaria havendo previamente um option? Seria por que exite a constante TEXT_NODE, ficando assim subentendido que existe algum filho? E por falar nisso, para que serve essas constantes? function create_monthOptions(id) { var el = document.getElementById(id); if(!el.firstChild.nextSibling) { for (var i = 1; i <= 12; i++) { //somente cria, não adiciona option = document.createElement('option'); option.value = i; option.text = i; //adiciona o option ao elemento do id informado el.appendChild(option); } } } Bom só testei desse jeito que fez mais sentido para mim. -
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Galera, me perdoe, mas eu preciso de uma resposta, pois a lógica pra mim está certa. O código pessado pelo Jonathan funciona , mas em um if, como acima não. -
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Bom, modifiquei, e ficou assim: function create_monthOptions(id) { var el = document.getElementById(id); if(!el.firstChild) { for (var i = 1; i <= 12; i++) { option = document.createElement('option'); option.value = i; option.text = i; el.appendChild(option); //coloca o option dentro do elemento do id informado } } } Não consigo gerar direito. Se eu tirar o IF, ele não para de gerar. Gera de 1 à 12 concatenando, com os anteriormente criados, se eu deixa-lo assim, simplesmente não funciona. -
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Obrigado, vo fazer os testes aqui e postarei qualquer coisa. Abração. -
(Resolvido) Criar options em uma combo usando DOM
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Não testei em outros, visto que faço as coisas sempre baseado no Netscape. Toda vez que alguém pergunta se funciona em todos, seria mais fácil perguntar, roda no IE? Pois só ele tem seus próprios padrões, o resto segue o Netscape, huhua, bricandeira ;). Mas quero o alternativo sim, sempre quererei. O appendChild, removeChild e firstChild só dão para ser usados em comboboxes? Ou daria para usar em tables também, e tudo que tiver "filho"? -
(Resolvido) Dúvida sobre o padrão DAO do Design Patterns
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em PHP
Huahuah, desculpe. É por que a maioria da galera coloca apelido na exibição, daí fica difícil. Não sabia seu nome, você poderia ter pego de algum site ueh!. Mais uma vez obrigado pelas dicas. Akeleabrass -
Galera, olhem este código: function create_monthOptions(form, objId) { if(form[objId].value == '') for (var i = 1; i <=12; i++) { var option = document.createElement('option'); option.value = i; option.text = i; form[objId].options.add(option); } } Gostaria de saber, como fazer para deixar uma combo pura, sem options.
-
(Resolvido) Dúvida sobre data e hora no js
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em Ajax, JavaScript, XML, DOM
Muitíssimo obrigado, era isso que eu pensava eu só queria confirmar. -
(Resolvido) Dúvida sobre o padrão DAO do Design Patterns
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em PHP
Certo, deixarei os créditos sim, são seus? Você é o Welligton? -
Rs, eu não entendo do SQL SERVER da Microsoft, mas se está sendo retornado que o suporte a transação não existe, então deve ser por causa da versão do seu SGBD. Já procurou saber sobre isso? Outra coisa, você está reeinventando a roda, você não precisa de uma função rollBack, crie uma classe só para a conexão com o banco, nesta classe, defina um método que retorne um objeto PDO em uma propriedade, em cada classe, coloque uma propriedade $_db por exemplo, no método __construct, coloque $_db para receber o objeto PDO criada pela outra classe.
-
Ou, procure validar antes no lado do cliente também, com o js por exemplo. Quando ele encontra um else if verdadeiro ele para e não testa os outros. Solução, use um if para cada confronto e não um else if, pois este é para auxiliar o if, quando o teste deve ter apenas uma resposta verdadeira parando neste ponto. Abraço.
-
(Resolvido) Dúvida sobre data e hora no js
uma questão postou Rafael Laurindo Ajax, JavaScript, XML, DOM
Galera, é possível o js puro, pegar data e hora do servidor? -
(Resolvido) Dúvida sobre o padrão DAO do Design Patterns
pergunta respondeu ao Rafael Laurindo de Rafael Laurindo em PHP
Na verdade, esse era só um exemplo, a classe deveria ter os mesmo atributos que a tabela do banco, é como se essa classe representasse uma tabela com apenas dois atributos, daí eu não precisaria fazer os métodos "setTeste", "setTeste2", "getTeste", "getTeste2", resolvendo assim com o __set($property, $value) e o __get($property), mas desse jeito eu teria que definir todos os atributos antes. Com esse novo jeito é totalmente dinâmico.Você criou uma forma para se criar os métodos para criar propriedades dinamicamente, e seus métodos, "get" e "set". Gostei muito, que economia de código. Bom, desculpe a ignorância, mas desse jeito, eu nunca mais precisarei modelar uma classe tipo Transfer Object, com todos os seus atributos? Visto que nunca precisarei defini-los antes, nem os métodos para defini-los e recupera-los. É isso mesmo? Caso sim, muito obrigado. Vou comenta-lo para a galera desfrutar também. Se não, não é qualquer um que o entenderá. <?php /** * @version 1.0 * @author Wellington Rodrigues <wellingtonbr@gmail.com> */ //essa classe tem a importancia de criar, definir e recuperar seus atributos. Não incluindo métodos de acesso a base de dados. Devendo estes ficarem em outra classe. class Cliente { private $arr_property; public function __construct(){ //da o poder a $arr_property de ser um array, podendo criar/acessar índices e receber/recuperar valores $this->arr_property = array(); } //o método __call() é executado toda vez que tentamos chamar um método da classe, sendo passado para ele como parâmetro, o nome do método e seus argumentos //o array está especificando o tipo do argumento que será usado no método public function __call($methodName, array $arguments) { //verifica se $methodName começa com set ou get if( preg_match('/^(g|s)+et/', $methodName)) { //troca set ou get de $methodName por '' tranformando method na palavra restante, toda em minúscula. Ex.: setName = name $property = strtolower(preg_replace('/^(g|s)+et/','', $methodName)); if(preg_match('/^set/', $methodName)){ //Atribui o primeiro valor do array "arguments" ao array $arr_property. Nesse caso, é o único que interessa $this->arr_property[$property] = $argument[0]; } else if( preg_match('/^get/', $method ) ) return $this->arr_property[$property]; } else{ //Para o processamento, e instancia a classe "Exception" passando a menssagem abaixo para o seu método mágico "__construct()" throw new Exception('O método '.$methodName." não existe em \"".__CLASS__."\""); } } } //cria a instancia $cliente = new Cliente(); //cria dinâmicamente os métodos, get e set bem como as propriedades Nome e Idade, e seus respectivos valores $cliente->setNome('ursolouco'); $cliente->setIdade(27); echo $cliente->getNome() . "<br />"; echo $cliente->getIdade(); Explicando as expressões de validação: /^ : início (g|s) : verifica se a primeira letra começa com g ou s + : concatena +et: verifica se tem "et" depois da expressão anterior. Ex.: nesse caso, s + et = set ou g + et = get / : fim Galera, esse código é do Welligton, eu só modifiquei algumas coisas. ;) Akeleabrass. -
Galera, desta vez o assunto é mais sério. Design Patterns. De acordo com o padrão DAO (Data Access Object), devo ter uma classe para transferencia de dados que contenham todos os atributos de uma tabela do banco de dados como private, sendo assim, deve haver um método público para cada atributo, para defini-los bem como acessa-los. A dúvida é: eu preciso realmente de um para cada? A dúvida, é por ter visto assim em exemplos, e me deu vontade de fazer os métodos __set() e __get() mais genéricos de acordo com o exemplo à saber: class Teste{ private $teste, $teste2; public function __set($attName, $value){ $this->$attName = $value; } public function __get($attName){ return $this->$attName; } } $t = new Teste(); $t->__set('teste', 'Rafael'); $t->__set('teste2', 'oi'); echo $t->__get('teste2'); //oi echo $t->__get('teste'); //Rafael Isso também é correto? Eu achei que fosse porque economizou código, o foco do DAO é separar as regras de negócio dos métodos de acesso ao banco, ficando assim as classes, mais fáceis de serem reutilizadas, bem como o código arrumado. Mas se puderem opinar eu agradeceria muito.