Ir para conteúdo
Fórum Script Brasil

Rafael Laurindo

Membros
  • Total de itens

    659
  • Registro em

  • Última visita

Tudo que Rafael Laurindo postou

  1. Exato, por isso eu to tentando fazer exatamente o que você falou mas num objeto tipo textarea do HTML. E vou conseguir, pode crer, falta só gravar, porque eu já faço ele ser aberto no textarea, só to pegando um modo de pegar do textarea e salvar novamente nesse arquivo, sacou. TO tentando usar o Ajax, pois n quero que a página seja redirecionada, entende, aew vai ficar mais dinâmica, de outro jeito eu já fiz, se você quiser te mando. Eu gostei da sua idéia, gostei mesmo, por isso pesquisei bastante.
  2. É verdade, ta resolvido, obrigado mais uma vez amigo, até a próxima.
  3. Não esqueci n, eu to terminando de programar ainda, você n tem noção como foi meio complicado véio. Ta quase pronto, ta dando um errinho aki.
  4. Obrigado por me ajudar, to gostando de suas explicações. Mas você atribui ao value do objeto tipo hidden o arquivo texto, eu esqueci de te explicar, o usuário escolherá o arquivo, digitando o endereço de onde se encontra em um objeto tipo text, daí ele clica em carregar e o texto do arquivo aparecerá no textarea, depois que ele fizer as alterações ele pode clicar em salvar e o conteúdo da textarea será salvo no arquivo texto no servidor. Entendeu? Com o ajax acho que seria ainda mais fácil, eu poderia fazer uma requisição ao arquivo php com o ajax.
  5. Gosto muito de desenvolvimento, a parte técnica eu entendi. Só uma coisa eu n entendi muito bem, um atributo static deve ter um valor padrão certo? Esse valor pode ser NULL? De uma olhada nesse código: <?php class File{ public static $handle = NULL; //o método __construct é executado automaticamente quando a classe é instanciada public function __construct(){ if($_POST['btnCarregar'] != NULL){ $this->readToFile(); $this->createHTML(); } else if($_POST['btnSalvar'] != NULL) $this->writeToFile(); } public function createPointer(){ //abri o arquivo do servidor para leitura e cria o ponteiro self::$handle = fopen($_POST['txtFile'], "r+"); if (!self::$handle){ echo " <script type=text/javascript> alert('Arquivo ou diretório não encontrado') </script> "; } } public function readToFile(){ $this->createPointer(); //le o conteúdo do arquivo e o armazena na propriedade txt da classe return fread(self::$handle, 10000); } public function writeToFile(){ var_dump(self::$handle); //escreve no arquivo //fwrite (self::$handle, $_POST['txtCode']); //fecha o ponteiro //fclose (self::$handle); } public function createHTML(){ $HTML=" <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/> <title>Eclipse web - version 1.0</title> </head> <body onload=''> <center> <form method='POST' action='File.php'> <textarea cols='117' rows='29' name='txtCode'/>".$this->readToFile()."</textarea><br/> <input type='submit' name='btnSalvar' value='Salvar'/> <input type='submit' name='btnCarregar' value='Carregar'/> </form> </center> </body> </html> "; //<textarea cols='117' rows='29' name='txtCode'/>".$this->readFile()."</textarea><br/> /*<script type='text/javascript'> function inner(id){ var elemId = document.getElementById(id) elemId.innerHTML = ".$this->readFile()." } </script>/**/ echo $HTML; /**/ } } //Ver comando que verifica se uma classe já está instanciada //inicializa a classe new File(); Essa classe que programei foi para manipular arquivos, uma parte funciona perfeitamente, mas o método writeToFile() não funciona bem. Minha idéia é a seguinte. Criar um ponteiro estático no método createPointer para que pudesse ser acessado ainda no método writeToFile, usei o fopen com o parâmetro r+ para que pudesse ser lido e escrito ao mesmo tempo, mas parece que quando instancio a classe o ponteiro é reinicializado, eu achava que a propriedade static conservava o valor atribuido ao atributo mesmo que a classe fosse instanciada novamente, mas parece que isso não acontece, nesse caso, gostaria de fazer para que uma classe já instanciada não fosse instanciada novamente para não reinicializar o atributo estático. Essa mesma classe é usada mais de uma vez, uma por um formulário HTML para ler o arquivo e coloca-lo em uma textarea e outra vez é usada por outro form para pegar o seu valor e grava-lo novamente no arquivo uma vez editado. Eu tenho uma solução, usar duas classes distintas, uma para criar o ponteiro e ler o arquivo e outra para ler, assim a mesma classe não seria instaciada mais de uma vez, mas creio que isso é gambiarra, gostaria de outras opiniões, pois nunca saberei tudo. Agradeço abraço.
  6. Funcionou na sua máquina? Não entendi o que você fez de diferente no meu código.
  7. olhem o código... <?php require_once 'Main.php'; [indent]class Sample_Pessoa{[/indent] private function obterAluno(){ //pega os dados do aluno depois de submetido pelo formulário $this->sobreNome = $_POST['txtSobreNome']; //a superglobal $_POST recebe o value (valor) do form } private function adicionarAluno(){ $this->obterAluno(); $this->_db->_conn->beginTransaction(); //inicia uma transação. O _db pertence a classe Pessoa. O this deve ser usado em caso de herança $this->adicionarPessoa(); if (empty($this->id)){ $this->_db->_conn->rollback(); //rola para traz e deixa o banco exatamente como antes do início da transação, se qualquer coisa falhar numa transação } $add = " insert into genPessoa(id_pessoa, sobreNome) values (?, ?) "; $stmt = $this->_db->_conn->prepare($add); $stmt->bindParam(1, $this->id, PDO::PARAM_INT); $stmt->bindParam(2, $this->sobreNome, PDO::PARAM_STR); if (!$stmt->execute()){ $this->_db->_conn->rollback(); } $this->_db->_conn->commit(); //encerra a transação $bio = new BIO(); $bio->msgBox('Cadastro efetuado com sucesso!'); $bio->redirectTo('/sample/sample.php'); } } <?php require_once 'Main.php'; class Sample_Aluno extends Sample_Pessoa{ public $sobreNome; public function __construct(){ //$this->_db = new Sample_Main(); //chama o método construct da classe pai parent::__construct(); //verifica se o botão clicado é o de adição /*if($_POST['btnSalvar'] != NULL) $this->adicionarAluno();/**/ //o value do botão deve mudar de nome em dados editados } private function obterAluno(){ //pega os dados do aluno depois de submetido pelo formulário $this->sobreNome = $_POST['txtSobreNome']; //a superglobal $_POST recebe o value (valor) do form } private function adicionarAluno(){ $this->obterAluno(); $this->_db->_conn->beginTransaction(); //inicia uma transação. O _db pertence a classe Pessoa. O this deve ser usado em caso de herança $this->adicionarPessoa(); if (empty($this->id)){ $this->_db->_conn->rollback(); //rola para traz e deixa o banco exatamente como antes do início da transação, se qualquer coisa falhar numa transação } $add = " insert into genPessoa(id_pessoa, sobreNome) values (?, ?) "; $stmt = $this->_db->_conn->prepare($add); $stmt->bindParam(1, $this->id, PDO::PARAM_INT); $stmt->bindParam(2, $this->sobreNome, PDO::PARAM_STR); if (!$stmt->execute()){ $this->_db->_conn->rollback(); } $this->_db->_conn->commit(); //encerra a transação $bio = new BIO(); $bio->msgBox('Cadastro efetuado com sucesso!'); $bio->redirectTo('/sample/sample.php'); } /*public function alterarAluno(){ //ao fazer uma alteração, os dados não modificados são desprezados }/**/ } new Sample_Aluno(); erro retornado... Fatal error: Can not call constructor in /var/www/sample/lib/Sample/Aluno.php on line 11 Como podem ver, quando instancio Sample_Aluno ela extende Sample_Pessoa e gostaria e o método __construct() deveria ser executado, retornando a saída OK, já que uma instancia de pessoa é criada automaticamente quando aluno é instanciada.
  8. Rs, eu vo te dizer como sim, espera só eu terminar de programar o script de exemplo aqui porque eu to indo pra faculdade, mais tarde eu volto, se eu n te entregar hj eu te entrego amanhã, pode deixar que eu n vo t deixar na mão n. Um abraço. E quanto ao código anterior postado, eu n poderei ajudar porque eu uso o Linux e n existe IE para o Linux.
  9. Esqueci de te falar isso, se você ta usando o IE e somente ele, tem como ler o código de um arquivo bem como edita-lo usando js, olhe isso. http://www.experts-exchange.com/Web/Web_La...Q_20837002.html http://www.activewidgets.com/javascript.fo...-text-file.html
  10. Mas era isso que eu tava tentando te explicar, ele exibe a página e não o código. Tenho uma notícia ruim e uma boa para lhe dar. A boa é que é possível fazer isso com o PHP, a ruim é que não é possível fazer com js, já pesquisei e ta confirmado. Quanto ao innerHTML ele insere um texto sim, nesse caso você vai fazer assim: var elemento = document.getElementById(id_do_elemento) elemento.innerHTML = 'seu texto'; //ou elemento.value = 'seu texto'; Mas antes de escrever você tem que ler, e para ler é PHP, não tem outro jeito, eu garanto.
  11. Mas eu gostaria de ler um arquivo que estivesse no cliente mesmo, também não é possível? Eu já busquei bastante
  12. Galera, gostaria de saber se é possível ler um arquivo texto coloca-lo numa textarea depois pega-lo da textarea e salva-lo em um outro arquivo. Desde já agradeço.
  13. Sim, mas coloque aspas simples depois do "=" function htnl_p(){ window.editor.location.href = '/exercicios/editor_and/ferramentas/editor.html' }, eu ainda só não entendi uma coisa. Você quer editar o HTML e salva-lo editado, certo? O comando que te passei só vai abrir o seu arquivo "editor.html" no frame desejado. E é por isso que estou vendo como abrir um arquivo simples de texto em js bem como grava-lo.
  14. Meu camarada, eu to cassando pra fazer isso só em js, sei como pode fazer em PHP. Quanto ao location, a sintaxe é window.[local].location.href = arquivo Deixa eu te explicar uma coisa. Eu sei porque aparece que o arquivo não existe, porque você ta colocando todo o endereco, sendo que não precisa. Por exemplo, se você tem o apache rodando em sua máquina, e o SO é Linux, pode ser que o diretório padrão do apache seja o /var/www, logo, se você der o comando localhost no navegador aparecerá tudo que contem nesse diretório. Portanto, se o arquivo que você quer chamar se encontra no diretório /var/www/teste para chamar esse arquivo seria assim window.self.location.href = /teste/arquivo.ext Onde self significa no mesmo local e ext a extensão do arquivo. O self pode ser mudado, para um nome de um frame por exemplo, isso fará com que o arquivo seja aberto no frame que você definiu, funcionará do mesmo jeito. Mas como você pode ver esse comando é só para você redirecionar páginas. Se tiver um server rodando em sua máquina me fale.
  15. Funcionou meu camaraaada. Na verdade seria: echo "<script>window.self.location.href = '/sample/sample.php'</script>"; Ao digitarmos localhost é automaticamente chamado o /var/www não precisando esse ser repetido, sacou? Muito obrigado, você me ajudou muito, me fez raciocinar.
  16. Você quer fazer isso apenas utilizando javascript, ou poderia ser usando o PHP também? No último caso, você teria que estar com o Apache rodando em sua máquina. EU posso te ajudar em ambos, mas preciso saber qual você precisa.
  17. fiz isso: echo "<script>window.self.location.href = '/var/www/sample/sample.php'</script>"; e retorna esse erro: The requested URL /var/www/sample/sample.php was not found on this server.
  18. Galera, como funciona o location.href? Eu posso usar esse comando depois de fazer um cadastro usando o PHP?
  19. Não funcionou. O método __construct() da classe Pai não devia ser "static" não.
  20. Entendi perfeitamente, muito obrigado amigo. A diferença está no "parent", ele faz referência a uma classe superior certo?
  21. Na verdade, eu só esqueci de colocar, eu não copiei e colei, eu escrevi um código que estava em minha cabeça, mas ele não funciona ainda.
  22. Galera, o método __construct() não é executado no seguinte caso: <?php class Pessoa{ public __construct(){ echo 'OK!'; } } <?php require_once 'Pessoa.php'; class GenPessoa extends Pessoa{ public print_var_dump($obj){ echo var_dump($obj); } } new GenPessoa(); Esse código deveria retornar: OK! Eu achava que ao usar o extends o método __construct() da classe Pessoa seria executado automaticamente, mas isso não acontece, alguém sabe me dizer por quê?
×
×
  • Criar Novo...