Jump to content

Search the Community

Showing results for tags 'POO'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Calendars

  • Comunidade iMasters

Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 32 results

  1. Estou montando um website e gostaria de saber como faço para o usuário que acabou de deslogar ficar na mesma pagina ? por exemplo, na programação atual, ele clica em " Sair " e vai automaticamente para a index, independente de onde esteja. eu gostaria q ele permanecesse na mesma pagina em que estava programação q faz o mesmo deslogar... //essa é a navbar.php <li><a href="?sair=sim">Sair</a></li> // Esse é o logado.php if(isset($_GET['sair']) == "sim"){ $objUser->sairUsuario(); } //e esse é o usuarios.class.php public function sairUsuario(){ session_destroy(); header ('location: index.php '); }
  2. Bom dia amigos, tudo bem? Sou novo em POO e estou com algumas dificuldades. Tenho um método de uma classe que é bem simples, ele busca todos os campos da tabela USUARIO (Firebird 2.0) e retorna o array com elas. Só que a não consigo exibi-los com while. Sem o método eu faria: while($array = ibase_fetch_object($query)){ echo $array->ID; echo "<br>"; echo $array->ID; // E por aí vai... } public function selectAllUsers(){ $select = "select * from USUARIO"; $query = ibase_query($select); $array = ibase_fetch_object($query); return $array; } Só que com o array não consigo. Não sei como usar o while com esse array retornado. Por favor, se alguém puder me ajudar... serei grato. Um abraço a todos.
  3. Falcon89

    POO dúvida

    Antes de minha dúvida, deixo algumas considerações: - Estou em nível de aprendizagem, então, talvez a idéia e o script possa parecer bem "amador" - A dúvida não corresponde nada a função ou biblioteca Date, o ano utilizado é ficticio, no caso começando no ano de valor 1; - A minha dúvida se relaciona a POO, a utilização do Python como ilustração é meramente ilustrativa. Vamos a dúvida: Então eu criei uma classe chamada tempo com atributo ano, e uma classe pessoa com apenas os atributos em questão, a data de nascimento e a idade. O que eu queria que acontecesse, se possivel, era que ao instanciar uma nova pessoa, ela pegasse o ano atual do objeto 'tempo' já instanciado, e jogasse como ano de nascimento, e já setasse a idade da pessoa, subtraindo o ano atual do objeto tempo pela data de nascimento, fica meio confuso para explicar vou tentar dar um exemplo: Supondo que criei o 'tempoObj', que tem o valor do 'tempoObj.ano=1', nesse periodo eu instancio um objeto 'pessoaObj', então eu queria que essa pessoa pegasse o valor do ano que no caso seria 1 e jogasse na "pessoaObj.data_nascimento"que agora teria o valor de 1 e ano atual que também seria o mesmo valor e já setando atravéz da subtração a 'pessoaObj.idade' como 0, em tempo de execução, chamando a funçao avancar_ano() umas 3 vezes, o valor do ano atual seria 'tempoObj.ano = 4', nesse caso a idade dessa pessoa teria que seria 3, porem ao passar "tempoObj.ano" como argumento para data de nascimento e ano atual, ele sempre irá passar o mesmo valor para ambos fazendo com que a idade sempre seja 0. Nesse caso existe alguma forma que o valor seja passado para o metodo data_nascimento, some ao instanciar a classe pessoa, e o que o valor recebido so ano do tempoObj seja correspondente ao ano que esta armazenado no tempoObj.ano no momento de execução. Já tentei varias formas e sempre chego na mesma, se ficou entendido a questão e se é que existe uma solução, alguém tem essa solução? Desde já agradeço, e peço desculpa se não fui tão claro ao apresentar o problema.
  4. dayenne

    AGENDA EM JAVA DUVIDAS

    Galera então é o seguinte, tenho um trabalho da faculdade para fazer porém ainda não entendo quase nada de java, to meio perdida no trabalho. o trabalho propoe que eu faça uma agenda de contatos, onde eu possa armazenar contatos, excluir contatos, pesquisa-los, edita-los, tudo isso usando arquivos txt, porém não consigo de jeito nenhum sair da estaca 0, queria que você me orientasse melhor para que eu consiga flluir melhor os codigos.
  5. Boa tarde a todos, gostaria de uma ajuda, estou desenvolvendo um pequeno sistema de cadastro de clientes assinastes de um certo pacote de serviços, preciso que ao cadastrar o cliente, automaticamente o sistema grave a data do cadastro e atribui + 30 dias onde esta será a data de vencimento(após os primeiros 30 dias), até aí tudo bem, tudo funcionando, porém preciso também que o sistema liste os clientes em que a data do vencimento está se aproximando(faltando 5 dias para o vencimento), então determinei que o sistema lista os clientes que estão a 5 dias do vencimento, então então peguei a data de cadastro e atribuí + 25 dias, agora que vem o problema, na hora de listar esses clientes cuja data de vencimento se aproxima eu recebo a seguinte mensagem "Warning: Invalid argument supplied for foreach()", sou novo em php OO e não estou conseguindo resolver essa questão, vou deixar aqui a função que criei e a chamada da função também: public function proximosVencimentos(){ //DATA DA ASSINATURA/CADASTRO $dt_assinatura = $this->assinatura; //PEGA A DATA DA ASSINATURA E ACRESCENTA + 30 DIAS (VAI VIRAR A DATA DO VENCIMENTO APÓS 30 DIAS) $vencimento = date('Y-m-d', strtotime("+30 days" . strtotime($dt_assinatura))); //PEGA A DATA DA ASSINATURA E ACRESCENTA + 25 DIAS $vencimento_proximo = date('Y-m-d', strtotime("+25 days" . strtotime($dt_assinatura))); require 'conexao.php'; $sql = "select * from dados where current_date() between dt_vencimento_proximo = :dt_vencimento_proximo AND dt_vencimento = :dt_vencimento "; $stmt = $conn->prepare($sql); $stmt->bindParam(":dt_vencimento_proximo", $vencimento_proximo); $stmt->bindParam(":dt_vencimento", $vencimento); if($stmt->execute()== TRUE){ return $stmt->fetchAll(PDO :: FETCH_OBJ); }else{ $mensagem = "Não há dados a serem exibidos."; return $mensagem; } } ABAIXO O TRECHO ONDE EU CHAMO ESSA FUNÇÃO foreach ($listadados->proximosVencimentos() as $key => $valor){ echo $valor->nome; }
  6. raphaeltsr

    Objeto e listagem de todos os dados

    Boa tarde, pessoal! Após muitos anos resolvi voltar a trabalhar com programação e no meu quase sempre foi PHP. Quando parei (php4) POO no PHP era ainda algo muito pouco difundido. Estudei um pouco sobre POO, consegui entender bem os conceitos e agora resolvi por a mão na massa com alguns pequenos scripts para treinar. Pelos conceitos que aprendi, poderíamos ter o exemplo de "frutas" como sendo um objeto. Ela pode ter seus parâmetros que a define e também seus métodos. Só que suponhamos que eu queiro listar todos os objetos "frutas" que existem, estou obrigatoriamente armazenando os dados de parâmetro em um banco de dados, que estão disponíveis. Eu teria um método, por exemplo exibirTodas, dentro do objeto "frutas" ou eu teria um segundo objeto que faria essa listagem do que tenho registrado no banco como parâmetros para frutas? Espero que tenha sido claro, mas se faltou algum detalhe me avisem que completo. Obrigado!
  7. ndias

    ajax + phpoo_mvc + mysql_pdo

    To tentando fazer uma requisição Ajax em um projeto POO-MVC Tenho um formulário q eu uso o evento onchange pra chamar uma função JavaScript q por sua vez usa Ajax pra requisitar via POST uma página php <!DOCTYPE html> <head> <script> function consultaCPF($cpf) { $.ajax({ type : 'POST', url : 'ajax/consultaCPF.php', data : 'CPF='+$cpf, dataType: 'json', success : function(response){ if(response.codigo == "1") { }else{ } }, error: function(XMLHttpRequest, textStatus, errorThrown){ $("#erro").html('<b>ERRO</b>'+XMLHttpRequest.responseText); } }); } </script> </head> <body> <div id="erro"> <form name="form" method="post"> <input type="text" name="CPF" maxlength="14" onchange="return consultaCPF(this.value)" value="<?php if($_POST){echo $_POST['CPF'];}?>"> </form> </div> </body> </html> Até aí td bem... Na página php eu instancio uma classe da minha Model q faz uma consulta no bd pra saber se já existe ou não cadastrado o CPF digitado no form. Se existir me retorna 1, senão me retorna 2. A resposta eu capturo em json e passo de volta pro Ajax receber. Esse success é q vai determinar minha ação. <?php if($_POST && $_POST['CPF']){ $consulta = new \App\Models\Validacoes(\App\Init::getDb()); $res = $consulta->CPF($_POST['CPF']); if($res == 1){ $retorno = array('codigo' => 1, 'mensagem' => 'CPF ja existe'); echo json_encode($retorno); exit(); }else{ $retorno = array('codigo' => 2, 'mensagem' => 'CPF não cadastrado'); echo json_encode($retorno); exit(); } } Até aí tudo bem... Acontece que quando o Ajax faz a requisição da página php onde eu instancio minha classe, não sei pq tá dando Fatal Error Class Not Found (como se não tivesse conectando com meu banco). namespace App; class Init { public static function getDb(){ $db = new \PDO("mysql:host=127.0.0.1;dbname=root;charset=utf8","root","vertrigo"); return $db; } } Porém funciona se eu testar minha classe direto na página PHTML do formulário usando um método GET pra receber e passar a consulta pro meu objeto. namespace App\Models; class Validacoes { protected $db; public function __construct(\PDO $db) { $this->db = $db; } public function CPF($cpf){ $stmt = $this->db->prepare("Select CPF from tabela where REPLACE(REPLACE(CPF,'.',''),'-','') = :cpf LIMIT 1"); $stmt->bindParam(":cpf",$cpf); $stmt->execute(); if($stmt->fetchAll()){ $res = 1; }else{ $res = 2; } return $res; } } Será q o fato de não funcionar com o Ajax requisitando em public uma página php, tem haver com a rota? Pois só as Views estão usando Controllers! Ou estou fazendo errado utilizando uma página php na requisição Ajax? ERRO ( ! ) Fatal error: Class 'App\Models\Validacoes' not found in D:\Projetos\SAEE\public\ajax\consultaCPF.php on line 3 Call Stack # Time Memory Function Location 1 0.0010 335304 {main}( ) ..\consultaCPF.php:0
  8. Olá! Tenho uma classe instanciada e um método que retorna um array com informações. Tudo funciona bem se executo o método apenas uma vez, porém, se executo o método dentro de um loop while, só eh executado apenas uma vez, na segunda já apresenta erro na function. $arq = new arquivo(); $cont = 0; while ($cont < 2) { $texto = "arquivo" . $cont . ".txt"; $tamanho = $arq->getSize($texto); $cont++; }
  9. ndias

    Function Include Class POO

    eu gostaria de criar uma classe para incluir partes de html dentro do meu layout para isso eu queria fazer algo do tipo: class Includes { private $include; public function inc() { include_once "include/".$this->include.".phtml"; } } e <?php echo $include->bottom_master;?> no meu html como sou novo em orientação a objetos, não estou conseguindo fazer essa simples coisa. poderiam me dizer aonde estou errando, por favor? obrigado,
  10. Kelen Miranda Silva

    POO e PDO

    Olá pessoal. Estou aprendendo PDO e POO. Estou para fins de estudo, migrando um sistema meu procedural para POO. E obvio, recebendo varios erros e pesquisando muito. O erro da vez é este: Fatal error: Call to undefined method PDO::getMenu() in C:\xampp\htdocs\admacuco10\includes\sidebar.php on line 47 Na linha 47 tenho o seguinte: ... <ul class="sidebar-menu"> <li class="header">MAIN NAVIGATION</li> <?php require_once("model/dbconn.php"); require_once("model/sql.php"); $query = dbconn::getInstance(); $data = $query->getMenu(); //Linha 47 $key = $data[1]; foreach($key as $menu) { ?> ...Continua Agora segue a classe que contém o getMenu <?php class sql extends dbconn { public static $instance; private function __construct() { // } public static function getInstance() { if (!isset(self::$instance)) self::$instance = new sql(); return self::$instance; } public function getMenu() // Este aqui { try { $db="select * from r_menu order by urutan"; $stmt=dbconn::getInstance()->prepare($sql); $stmt->execute(); $stat[0] = true; $stat[1] = $stmt->fetchAll(PDO::FETCH_ASSOC); return $stat; } catch(PDOException $ex) { $stat[0] = false; $stat[1] = $ex->getMessage(); return $stat; } } //Continua... Partindo da premissa que sou leiga no assunto POO e PDO, dêem uma luz aí. Grata.
  11. André Tripode Colognesi

    Qual a conexão com banco mais recente?

    Estou começando a programar em PHP agora e estou em duvida sobre qual a conexão mais recente, sei que a pouco tempo atras era a mysqli, porem tenho duvida se existe alguma mais recente ou mysqli atraves de POO é a mais atual. abraços
  12. Bom dia galera, meu código está com um probleminha, não está cadastrando as fotos no banco de dados, esse problema só está acontecendo nas fotos, nas outras partes do código está cadastrando normalmente. Vocês poderiam me ajudar com esse problema? Aquí está a função de cadastramento: function cadastrarFotoServico($titulo,$cod_fotografo,$cod_servico,$descricao){ include("conexao.php"); $extensao = strtolower(substr($_FILES['arquivo']['name'], -4)); $novo_nome = md5(time()). $extensao; $diretorio = "upload/"; move_uploaded_file($_FILES['arquivo']['tmp_name'], $diretorio.$novo_nome); $sql = $conexao->prepare("INSERT INTO foto (titulo, cod_fotografo, cod_servico, descricao) VALUES (:titulo, :cod_fotografo, :cod_servico, :descricao)"); $sql->bindValue(":titulo",$titulo); $sql->bindValue(":cod_fotografo",$cod_fotografo); $sql->bindValue(":cod_servico",$cod_servico); $sql->bindValue(":descricao",$descricao); $sql->execute(); header("location:gerenciarFoto.php"); };
  13. Estou com muita dificuldade a parte de encapsulamento, parece que não entra na minha cabeça, parece que é um assunto muito genérico. Também quais livros eu devo ler, e qual é a forma de aprender POO de forma menos descomplicada?
  14. lucknot

    Duvida com POO E PDO

    Estou começando a ver sobre poo e pdo para o php só que encontrei um pedra no meio do caminho. A duvida e como passar a array do fecth dentro da function para obter os resultado fora da function. Obrigado se pode me ajudar! class class usuario extends conexao { private $id; public function login($id){ $this ->id = $id; $pdo = parent::getDB(); $buscardados=$pdo->prepare("SELECT * FROM usuario WHERE id = 1"); $buscardados->bindValue(":id", $this->getid() ); $buscardados->execute(); $linha = $buscardados->fetch(PDO::FETCH_OBJ) or die(print_r($query->errorInfo(), true));; var_dump($linha); } public function setid($id){ $this->id = $id; } public function getid(){ return $this -> id; } chamada da class require_once'../class/usuario.php'; $u = new usuario; echo $u->login(1); resultado da var_dump object(stdClass)#4 (3) { ["id"]=> string(1) "1" ["nome"]=> string(9) "teste " ["email"]=> string(5) "teste2" }
  15. Eu tenho uma duvida que ate hoje não consegui chegar a conclusão de qual á melhor forma, pois atualmente estou estudando a arquitetura MVC por conta. Se alguém puder me ajudar ou mandar algum artigo que trata sobre o assunto. Imagina que o meu diretório esteja organizado dessa forma: ASSETS JAVASCRIPT IMAGENS APP CONTROLLER MODELS ROUTES VIEWS CONFIG SERVER DB INDEX.PHP E na views tem uma página que eu gostaria de listar os clientes via ajax, da forma "tradicional" caso eu gostaria que essa listagem fosse feita no carregamento da página, no controller eu faria essa requisição ao model e entregava para a view um array de clientes, certo? Mas no cenário em que eu preciso desses clientes via ajax, qual seria a melhor forma? Eu pensei em duas situações, primeira: No model uma variável chamada função, que recebe por GET qual função executar, ai ficaria algo do tipo no modelCliente.php <?php $funcao = $_GET['funcao']; $objCliente = new Cliente; $lista = $objCliente->$funcao(); class Cliente{ public function all(){ ... echo $array_clientes; } } ?> Ai no JS, seria algo desse tipo: $.ajax({ url: "clienteModel.php", type: "get", data: {funcao: "all"}, success: function(result){ console.log(result); } }) A segunda maneira seria a modelCliente.php assim: <?php class Cliente{ public function all(){ ... return $array_clientes; } } ?> Ai teria uma página em PHP ponte, seria algo desse tipo listar_todos.php: <?php include_once "modelCliente.php"; $model_cliente = new Cliente; $clientes = $model_cliente->all(); echo $clientes; ?> Ai no JS, seria algo desse tipo: $.ajax({ url: "listar_todos.php", success: function(result){ console.log(result); } }) A segunda maneira eu acho mais simples, porém eu teria que ter um arquivo ponte para todas as classes do model e onde eu deixaria esses arquivos na arquitetura MVC?
  16. Fala galera tudo bem? Estou com uma dúvida sobre como eu devo fazer as perguntas para descobrir o que o cliente quer. Dei uma estudada em UML e entendi na teoria como funciona, mas na prática está meio dificil. Vocês podem me dar exemplos ou algum exercício para entender mais sobre o assunto? Eu acredito que deve-se basear em perguntas do tipo o que o cliente deseja desenvolver, o que cada setor desse sistema vai fazer e o quais serão as informações necessárias desse setores serão necessárias para que o sistema cumpra o que lhe foi requerido. Podem me passar um exemplo ou algum exercício para aprender mais sobre a análise do sistema? VLW
  17. George Feitosa Jr

    Estudando sobre PHP POO - ajuda

    Eai pessoal, seguinte estou estudando sobre como programar orientado a objetos no php e estava com algumas duvidas semana passada. Hoje estou tentando fazer um sistema simples de login(ainda estou terminando ele xD), mas orientado a objetos para ver se estou indo bem. Procurei a todo tempo fazer com que as classes sejam totalmente reutilizáveis. Poderiam analisar meu código e me informar se estou cometendo erros? Classe que faz a conexão com o banco de dados class Conexao { private $dsn, $user, $pass; protected $pdo; public function __construct($dsn, $user, $pass){ $this->dsn = $dsn; $this->user = $user; $this->pass = $pass; $this->connect(); } public function connect(){ try{ return $this->pdo = new PDO($this->dsn, $this->user, $this->pass); } catch(PDOException $e){ die('Falha na conexão com o banco de dados').$e->getMessage(); } } } Classe que resgata, edita, deleta e atualiza a tabela no banco de dados class CRUD extends Conexao{ private $sql; private $table; private $values; private $condition; public function __construct($table){ parent::__construct("mysql:host=localhost;dbname=sistema_compras;","root",""); $this->table = $table; } public function readDocumment($condition = null){ $this->condition = $condition; if($this->condition != null){ $this->sql = "SELECT * FROM {$this->table} WHERE {$this->condition}"; }else{ $this->sql = "SELECT * FROM {$this->table}"; } return $this->query($this->sql)->fetchAll(PDO::FETCH_ASSOC); } public function query($sql){ return $this->pdo->query($sql); } public function insertDocumment($values){ $this->values = $values; $this->sql = "INSERT INTO $this->table SET $this->values"; $this->query($this->sql); } public function updateDocumment($values, $condition){ $this->condition = $condition; $this->values = $values; $this->sql = "UPDATE $this->table SET $this->values WHERE $this->condition"; $this->query($this->sql); } public function deleteDocumment($condition){ $this->condition = $condition; $this->sql = "DELETE FROM $this->table WHERE $this->condition"; $this->query($this->sql); } } Classe que fica responsável pelo login do usuário class Login extends CRUD{ private $email, $pass; private $checkUser, $user; /*AQUI É INFORMADA A TABELA QUE VAI SER PROCURADO O USUARIO*/ public function __construct($table){ parent::__construct($table); } /*MÉTODO PARA PROCURAR O USUARIO NO BANCO DE DADOS*/ public function getUser($cond){ /*EXECUTA A QUERY DENTRO DA CLASSE CRUD PARA PROCURAR O USUARIO*/ $this->checkUser = parent::readDocumment($cond); /*SE NAO ACHAR NADA, INFORMA QUE OS DADOS ESTAO INCORRETOS*/ if(!$this->checkUser){ echo ('Dados incorretos'); }else{ /*SE ACHAR ELE RETORNA OS ARRAYS DO USUARIO*/ foreach($this->checkUser as $this->user){ return $this->user; } } } } $login = new Login("usuario_tb"); $usuario = 'usuario@email.com'; $senha = 'senha12345'; $dados = $login->getUser("email_usuario = '$usuario' AND senha_usuario = '$senha'"); if($dados){ extract($dados); echo 'Bem vindo - '.$nome_usuario; } enfim pessoal é isso, o que vocês acham? Estou ainda tendo uma ideia muito errada sobre poo ou estou indo pelo caminho certo? t+
  18. Oi galera blz? Então, decidi aprender POO no php e estou até entendendo como funciona, mas meu grande problema é na hora de pensar em criar alguma coisa e saber quais atributos eu devo botar logo de inicio... Estou pensando em fazer os métodos e quando precisar usar tal atributo, eu crio na hora, mas acredito que esse é o jeito errado de pensar. Enfim alguém pode me mostrar uma luz sobre como eu devo pensar na hora de iniciar uma classe, tipo por etapas. T+
  19. Gabrielvt14

    Dar echo quando objeto retorna inteiro

    Olá pessoal, Estou começando a brincar com o PHP orientado a objetos, e me deparei com um probleminha... Criei uma função bem besta pra retornar o ano atual... <?php class Ano { public function __construct() { return $ano = date('Y'); } } echo $ano = new Ano(); Quando dou echo no objeto da classe aparece a mensagem dizendo que o objeto da classe não pode ser convertido em string. Como eu faria para mostrar o retorno deste objeto na tela? Desde ja agradeço!
  20. monek

    Como interagir entre objetos?

    Vi uma seria de videos sobre POO e estou tentando fazer alguma coisa para testar meus conhecimentos, percebi que estou com muita dificuldade para criar interação entre objetos... Fiz essa classe player que cria um player E uma função bem porca de pvp pra criar 2 players e fazer PVP entre eles <html> <head><title>Test POO</title></head> <body> <?php require_once 'player.php'; $j[1] = new Player("Bubble", 4); $j[2] = new Player("Knurd Yep", 1); var_dump($j[1]); echo '<br>'; var_dump($j[2]); echo '<br>'; echo '<br>'; PvP($j[1], $j[2]); ?> </body> </html> <?php class Player { private $name; private $level; private $vocation; public function __construct($n, $v) { $this->setName($n); $this->setVocation($v); $this->setLevel(8); } // interação entre players function getAtk($j) { $atk = $j->getVocation() * $j->getLevel() return $atk; } function PvP($jA, $jB) { if(getAtk($jA) > getAtk($jB)) { echo 'Player' .$jA->getName(). 'matou' .$jB->getName().'!'; } else { echo 'Player' .$jB->getName(). 'matou' .$jA->getName().'!'; } } // getters e setters padrões function getName() { return $this->name; } function setName($nome) { $this->name = $nome; } function getLevel() { return $this->name; } function setLevel($l) { $this->level = $l; } function getVocation() { return $this->vocation; } function setVocation($v) { $this->vocation = $v; } } O que eu to fazendo de errado?
  21. Janni e Gui

    PHP com POO

    Estou precisando fazer um projeto para a faculdade a partir de um codigo pronto que o professor passou que faça basicamente upload, listagem e exclusao de fotos. Até aí tudo bem, eu já consegui fazer, o problema é que a classe diretorio tem que ficar orientada a objetos, e eu nao estou conseguindo raciocinar para fazer isso. abaixo segue os codigos da Index, CadastrarArquivo, ExcluirArquivo e a classe diretorio, que é a qual solicito ajuda no codigo para tornar-se POO. Agradeço a ajuda. //INDEX <?php // utilizar este arquivo ao invés de index.html // pois com o PHP vai ser possível tornar a lista de arquivos // uma lista dinâmica, ou seja, com base no que existe na pasta // e é preciso formatar o formulário para que esteja // enviando seus dados de forma correta para o script cadastrar_arquivo.php // ** lembre-se do método, do action e do enctype ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>MAPA</title> <!-- Bootstrap Core CSS --> <link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <a class="navbar-brand" href="index.html">MAPA - EAD UniCesumar</a> </div> <!-- /.navbar-header --> </nav> <div id="page-wrapper" style="margin-left:0px"> <div class="row"> <div class="col-md-6 col-md-offset-3"> <h1 class="page-header">Projeto Mapa Unicesumar</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-md-6 col-md-offset-3"> <div class="panel panel-default"> <div class="panel-heading" > Digite o nome do arquivo e anexe o documento... </div> <?php if (isset($_GET['error'])) {?> <div class="panel-heading" style="background-color: #cccccc;"> Preencha o formulário corretamente! </div> <?php }?> <div class="panel-body"> <div class="row"> <div class="col-lg-12"> <form role="form" name="upload" action="cadastrar_arquivo.php" method="post" enctype="multipart/form-data"> <div class="form-group"> <label>Nome do Arquivo</label> <input name="nome" class="form-control"> <p class="help-block">Digite o nome que o arquivo será salvo...</p> </div> <div class="form-group"> <label>Anexar Arquivo</label> <input name="imagem" type="file"> </div> <button type="submit" class="btn btn-active">Enviar Arquivo</button> </form> </div> <!-- /.col-lg-12 (nested) --> </div> <!-- /.row (nested) --> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-md-6 col-md-offset-3"> <div class="panel panel-default"> <div class="panel-heading"> Relatório de Arquivos </div> <!-- /.panel-heading --> <div class="panel-body"> <div class="table-responsive"> <table class="table table-striped table-bordered table-hover"> <thead> <tr> <th>#</th> <th>Arquivo</th> <th>Excluir?</th> </tr> </thead> <tbody> <?php $dir = '../uploads'; $files1 = scandir($dir); $i=0; foreach ($files1 as $file){ if(strlen($file)>3) { $i++; ?> <tr> <td><?php echo $i ?></td> <td><?php echo $file ?><img src="<?php echo $dir.'/'.$file ?>" title="<?php echo $file ?>" style="width: 15%;"/></td> <td><a href="excluir_arquivo.php?excluir=<?php echo$file?>">Excluir</a></td> </tr> <!-- <tr> <td><?php echo $i ?></td> <td><img src="<?php echo $dir.'/'.$file ?>" title="<?php echo $file ?>" style="width: 15%;"/></td> <td><a href="excluir_arquivo.php?excluir=<?php echo$file?>">Excluir</a></td> </tr>--> <?php } } ?> </tbody> </table> </div> <!-- /.table-responsive --> </div> <!-- /.panel-body --> </div> </div> </div> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> <!-- jQuery --> <script src="../vendor/jquery/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../vendor/bootstrap/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../vendor/metisMenu/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> </body> </html> -------------------------------------------------------------------- //cadastrar arquivo <?php // script que recebe os dados do formulário // trata os dados // recebe o upload // recebe o nome do arquivo // move o arquivo para a pasta uploads // salvando com o nome informado pelo input // depois redireciona para a lista de arquivos novamente $error = ''; if (isset($_POST['nome']) && $_POST['nome']!='' && isset($_FILES['imagem'])) { $name = $_FILES["imagem"]["name"]; $ext = end((explode(".", $name))); # extra () to prevent notice $uploaddir = '../uploads/'; $uploadfile = $uploaddir . $_POST['nome'].'.'.$ext; if (move_uploaded_file($_FILES['imagem']['tmp_name'], $uploadfile)) { echo "Arquivo válido e enviado com sucesso.\n"; } }else { $error = "error"; } header('Location: '.'index.php?'.$error); ?> -------------------------------------------------------------------- //Excluir arquivo <?php $delete = $_GET['excluir']; unlink('../uploads/'.$delete); header('Location: '.'index.php'); ?> -------------------------------------------------------------------- //diretorio <?php interface DiretorioInterface { public function recuperarListaArquivos();//{} public function excluirArquivo($nome_arquivo);//{} public function cadastrarArquivo($arquivo);//{} /** * se precisra pode construir mais métodos * ou até mesmo dar manutenção nesta interface */ } class Diretorio implements DiretorioInterface { } ?>
  22. Mateus Silva

    Admin com MVC

    Olá, seguinte galera, estava pensando em como organizar um site em MVC, onde armazenar os arquivos de admin do mesmo! Eu tenho um sistema que eu mesmo criei em MVC que é bem útil pra mim pois a base do site de quase todos os meus clientes é a mesma, assim eu só reestilizo e pronto. Porém surgiu a necessidade de criar um gerenciador de conteudo, eu estava pensando em onde colocar esse sistema, pensei em cria-lo como um controller, eu uso a seguinte estrutura: - app - plugins - usuarios • UsuariosController.php • UsuariosModel.php • NovoView.php • ListarView.php • EditarView.php Pensei em fazer, como eu disse, como um controller: - app - plugins - admin • AdminController.php • AdminModel.php • AdminView.php - usuarios • NovoView.php • EditarView.php - posts • NovoView.php • EditarView.php Pensei nisso mas não sei se é certo e se seria funcional, enfim, me deem uma luz da melhor forma de fazer isso!
  23. Olá, é o seguinte: Eu tenho um cliente que me pediu um sistema onde ele tem a lista de emails do newsletter e ele quer enviar um email para todos de uma só vez, meio que como funciona com e-mail marketing, até aí tudo ok, mil maravilhas, o problema é: e se ele mudar de página, fechar a aba ou o navegador ? Obviamente o script para de rodar. A ideia é que o navegador não fique esperando uma resposta para continuar, simplesmente ele dá o comando e dá uma mensagem ao usuário de que os e-mails estão sendo enviados, o servidor vai executar, enviar e-mail por e-mail e posteriormente vai gerar um log (até ai ok). Ou seja, o que eu preciso é que o script de envio dos emails rode no background do servidor, que o servidor seja responsável por enviar os emails e não o usuário propriamente dito, sendo assim o usuário pode trocar de página, fechar o navegador, desligar o computador, que o sistema vai enviar email por email e quando o usuário entrar novamente, caso já tenha sido finalizado, o sistema mostra pra ele quais foram enviados e se algum teve problema. Na empresa onde trabalho temos um sistema parecido com esse, como o sistema faz comunicação com várias API's ao mesmo tempo, se tivesse que ficar esperando uma resposta ia demorar muito, então, foi feito exatamente o que eu disse a cima, o usuário não vê o script rodando, ele só recebe uma mensagem genérica, essa parte do sistema não fui eu quem fez, então não consegui entender muito bem, eu sei que foi usado o comando exec() e acho que rola algum comando no terminal do linux. Ficou grande a explicação mas acho que deu pra entender, conseguem me ajudar com uma ideia pra solucionar isso ?
  24. Pessoal, fiz uma enquete para saber quantas pessoas utilizam os princípios de código limpo. Você pode acessar a enquete por meio deste link: http://bit.ly/enquete-codigo-limpo A pesquisa leva, literalmente, menos de 1 minuto! :)
  25. jardeldint

    Alteração no MAPOs

    Olá pessoal! Acredito que alguns daqui do grupo conhece o sistema de Ordens de Serviço MAPOS, que foi desenvolvido em CodeIgniter. Estou fazendo uma alteração nele, para que quando o usuário for receber uma parte de um pagamento do cliente, o restante apareça no cadastro de cliente. Por exemplo: O Cliente X tinha um débito de R$ 500,00. Más no dia Y ele pagou R$ 100,00, restando então R$ 400,00. No Models do Financeiro, fiz essa alteração abaixo na linha do "function edit": <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Financeiro_model extends CI_Model { function __construct() { parent::__construct(); } function get($table,$fields,$where='',$perpage=0,$start=0,$one=false,$array='array'){ $this->db->select($fields); $this->db->from($table); $this->db->order_by('data_vencimento', 'asc'); $this->db->limit($perpage,$start); if($where){ $this->db->where($where); } $query = $this->db->get(); $result = !$one ? $query->result() : $query->row(); return $result; } function getById($id){ $this->db->where('idClientes',$id); $this->db->limit(1); return $this->db->get('clientes')->row(); } function add($table,$data){ $this->db->insert($table, $data); if ($this->db->affected_rows() == '1') { return TRUE; } return FALSE; } function edit($table,$data,$fieldID,$ID){ $this->db->select('clientes.saldoDevedor, lancamentos.clientes_id, lancamentos.valor, lancamentos.idLancamentos'); $this->db->from('lancamentos,clientes'); $this->db->where($fieldID,$ID); $this->db->update($table, $data); if ($this->db->affected_rows() >= 0) { return TRUE; } return FALSE; } function delete($table,$fieldID,$ID){ $this->db->where($fieldID,$ID); $this->db->delete($table); if ($this->db->affected_rows() == '1') { return TRUE; } return FALSE; } function count($table) { return $this->db->count_all($table); } } E no Views do lançamento criei esse campo, dentro do Modal de Editar Lançamento: <div class="span4" style="margin-left: 0"> <label for="valor-pagar">Valor a Receber/Pagar</label> <input type="text" name="tipoPagar" value="" /> <input type="hidden" id="Pagar" name="idPagar" value="" /> </div> E no Controlers na função Editar, alterei com essas informações: Eu so inseri esses comandos que vocês odem olhar no codigo abaixo: public function editar(){ if(!$this->permission-> checkPermission($this->session->userdata('permissao'),'eLancamento')){ $this->session->set_flashdata('error','Você não tem permissão para editar lançamentos.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; $urlAtual = $this->input->post('urlAtual'); $this->form_validation->set_rules('descricao', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('fornecedor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('valor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('vencimento', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('pagamento', '', 'trim|xss_clean'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $vencimento = $this->input->post('vencimento'); $pagamento = $this->input->post('pagamento'); try { $vencimento = explode('/', $vencimento); $vencimento = $vencimento[2].'-'.$vencimento[1].'-'.$vencimento[0]; $pagamento = explode('/', $pagamento); $pagamento = $pagamento[2].'-'.$pagamento[1].'-'.$pagamento[0]; } catch (Exception $e) { $vencimento = date('Y/m/d'); } $capturaValorTotal = $this->input->post('valor'); $capturaValorPagar = $this->input->post('valor-pagar'); $valorDevido = $capturaValorTotal - $capturaValorPagar; $inserindoBanco = "INSERT INTO `clientes` set `saldoDevedor`='".$valorDevido."'"; $executandoQuery = mysql_query($inserindoBanco); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'valor-pagar' => $this->input->post('valor-pagar'), 'data_vencimento' => $vencimento, 'data_pagamento' => $pagamento, 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => $this->input->post('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'numCheque' => $this->input->post('numCheque'), 'numCartao' => $this->input->post('numCartao'), 'valCartao' => $this->input->post('valCartao'), 'tipo' => $this->input->post('tipo') ); if ($this->financeiro_model->edit('lancamentos',$data,'idLancamentos',$this->input->post('id')) == TRUE) { $this->session->set_flashdata('success','lançamento editado com sucesso!'); redirect($urlAtual); } else { $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento!'); redirect($urlAtual); } } $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento.'); redirect($urlAtual); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'data_vencimento' => $this->input->post('vencimento'), 'data_pagamento' => $this->input->post('pagamento'), 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => set_value('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'tipo' => $this->input->post('tipo') ); print_r($data); } public function editar(){ if(!$this->permission->checkPermission($this->session->userdata('permissao'),'eLancamento')){ $this->session->set_flashdata('error','Você não tem permissão para editar lançamentos.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; $urlAtual = $this->input->post('urlAtual'); $this->form_validation->set_rules('descricao', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('fornecedor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('valor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('vencimento', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('pagamento', '', 'trim|xss_clean'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $vencimento = $this->input->post('vencimento'); $pagamento = $this->input->post('pagamento'); try { $vencimento = explode('/', $vencimento); $vencimento = $vencimento[2].'-'.$vencimento[1].'-'.$vencimento[0]; $pagamento = explode('/', $pagamento); $pagamento = $pagamento[2].'-'.$pagamento[1].'-'.$pagamento[0]; } catch (Exception $e) { $vencimento = date('Y/m/d'); } $capturaValorTotal = $this->input->post('valor'); $capturaValorPagar = $this->input->post('valor-pagar'); $valorDevido = $capturaValorTotal - $capturaValorPagar; $inserindoBanco = "INSERT INTO `clientes` set `saldoDevedor`='".$valorDevido."'"; $executandoQuery = mysql_query($inserindoBanco); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'valor-pagar' => $this->input->post('valor-pagar'), 'data_vencimento' => $vencimento, 'data_pagamento' => $pagamento, 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => $this->input->post('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'numCheque' => $this->input->post('numCheque'), 'numCartao' => $this->input->post('numCartao'), 'valCartao' => $this->input->post('valCartao'), 'tipo' => $this->input->post('tipo') ); if ($this->financeiro_model->edit('lancamentos',$data,'idLancamentos',$this->input->post('id')) == TRUE) { $this->session->set_flashdata('success','lançamento editado com sucesso!'); redirect($urlAtual); } else { $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento!'); redirect($urlAtual); } } $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento.'); redirect($urlAtual); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'data_vencimento' => $this->input->post('vencimento'), 'data_pagamento' => $this->input->post('pagamento'), 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => set_value('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'tipo' => $this->input->post('tipo') ); print_r($data); } O que eu não estou entendendo é onde esta ou onde estão os meus erros, pois não grava nada no Banco de Dados, sendo q eu criei na tablea clienes o campo saldoDevedor. E ainda por cima, quando faço o teste, utilizando o debito de cliente já existente, informo o valor que foi pago, e diz que foi alterando com sucesso, más na realidade nada acontece. Fico no aguardo se alguém puder me ajudar!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.