Ir para conteúdo

POWERED BY:

Omar~

Members
  • Total de itens

    1327
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Não importa a linguagem a query não muda.... "Ignorando o uso de assento nas tabelas" SELECT tabela_A.código_estabelecimento, tabela_A.nome_estabelecimento, tabela_B.código_pedido, tabela_B.código_estabelecimento FROM tabela_A INNER JOIN tabela_B ON tabela_A.código_estabelecimento = tabela_B.código_estabelecimento Nesse caso é o que na tabela_A for igual na tabela_B em quando ambos tenham o mesmo código_estabelecimento. Faltou um WHERE aí, mas daí é coisa mais específica que não foi abordada na dúvida.
  2. Omar~

    usar o sistema no mesmo navegador com logins diferentes

    É possível sim mas antes uma explicação básica: Para se logar usamos duas principais técnicas o uso de session ou cookie, em ambos os casos o navegador armazena um pequeno arquivo em seu diretório, então teoricamente não é possível uma vez que o navegador não usa arquivos distintos, a diferença é que em um session o browser só usa uma vez esse arquivo gerado enquanto você não o fecha já o cookie ele irá reutilizar. Abra o browser que você deseja usar, então abra-o novamente em janela anônima. Faça o login primeiro no que está em janela anônima. Faça o login no que está em janela padrão. Pronto você logou no mesmo sistema com 2 logins no mesmo browser. Mas você pode está usando 2 ou mais browsers para executar essa tarefa, é muito mais eficiente.
  3. Omar~

    Expansão de vídeo por CSS

    Tente assim eu uso para colocar vídeos do youtub e ainda ficarem responsivos: <div class="video"> <iframe src="https://www.youtube.com/watch?v=BsV7hfJAlVc" frameborder="0" allowfullscreen> </iframe> </div> CSS: .video { position: relative; padding-bottom: 56.25%; height: 0 } .video iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100% }
  4. Omar~

    Como fazer upload de arquivo com PDO

    Má prática não é. O problema é organização mesmo. Digamos a seguinte estrutura de arquivo na raiz. index.php imagens/arquivos/ forms/enviar.php foo/mostrar.php Aí nesse caso enviar.php é o arquivo que vai salvar um upload dentro de imagens/arquivos/ logo para um script serve-side eu uso __DIR__ . '/../../imagens/arquivos/' então facilmente localizo o diretório para salvar o arquivo digamos exemplo.jpg. Mas então quero ver a imagem em mostrar.php nesse caso uso o esquema html. <img src="../../imagens/arquivos/exemplo.jpg" alt="a imagem não foi carregada" /> Porém digamos que eu esteja usando um modo de reescrita do apache onde tudo volta ao index aí a coisa muda <img src="imagens/arquivos/exemplo.jpg" alt="a imagem não foi carregada" /> O negócio é você ir testando ai até encontrar a forma de endereçar a imagem corretamente. #EDIT:
  5. Omar~

    Como fazer upload de arquivo com PDO

    Ressaltando que a constante __DIR__ não serve para renderização, e eu acho que possa ser esse caso de achar a imagem. Exemplo: <img src="<?= __DIR__ . '/diretorio/imagem.jpg' ?>" alt="Ops! a constante não serve para esse caso" /> Tente localizar a imagem a partir da raiz onde se encontra o index. E claro verifique se realmente a imagem foi salva.
  6. Omar~

    Como fazer upload de arquivo com PDO

    Mas a classe também está nessa pasta Controller? Acredito que não... Tente usar a constante __DIR__ para obter o diretório atual e a partir dele indicar o local do outro diretório. Exemplo: $diretorio = __DIR__ . '/../imagens/fotos_admins/'; Nesse caso do diretório onde executamos escape um diretório atrás e entre em imagens..... Lógico que o(s) escape(s) depende da arquitetura dos diretórios do seu projeto. Esse é um truque muito eficiente que evita qualquer erro de localização de diretórios ou arquivos. Veja essa classe: https://github.com/Spell-Master/source-map/blob/master/system/class/model/ImageUpload.php <?php switch ($_FILES['foto_admin']['type']) { case 'image/jpg': case 'image/jpeg': case 'image/pjpeg': case 'image/png': case 'image/x-png': break; default: echo ("Vai dar erro ao tentar salvar pois o tipo de imagem não é aceito pela classe"); } $diretorio = __DIR__ . '/../imagens/'; $imagem = new ImageUpload($diretorio); $imagem->sendImage($_FILES['foto_admin'], 'Nome para imagem', 1024); if ($imagem->getResult()) { $nomeDaImagem = $imagem->getImgName(); echo ("No diretório {$diretorio} uma imagem foi armazenada e seu nome é {$nomeDaImagem}"); } else { echo ("A imagem não pode ser armazenada"); } Vale lembrar também que dependendo do assunto dar para recriar a imagem no servidor sem que o usuário faça upload, bastando apenas ler seus metadados e inserir o mesmo em um campo de formulário e então enviar esses dados, e com essa informação compilar a imagem no servidor. Mas nesse caso a questão é mais javascript do que php, e um recurso para esse afim é o FileReader
  7. Omar~

    Converter Array Associativo

    Se for só isso, pode criar um novo array $arrA = [ 'titulo' => 'AAAAAAA', 'descricao' => 'BBBBBB' ]; $arrB = []; foreach ($arrA as $valor) { $arrB[] = $valor; } var_dump($arrB);
  8. Duvido muito o iMasters está jogado as moscas.... Mas pessoalmente falando, nem ligo a ajuda que presto aqui é só por ajudar mesmo, se fosse para ter reconhecimento abriria um canal no youtube por exemplo. No entanto entendo você, e ao mesmo tempo lamento por um veículo tão importante como esse está tão jogado como está. Em outro lado, dar vontade sim criar tutoriais bacanas aqui, vejamos 99.9% dos usuários nem pesquisam pois as dúvidas que vejo seriam 99% sanadas apenas se o usuário usar o formulário de pesquisa aqui do fórum... Ou até mesmo uma "goglada" se é que me entende. Aí eu penso: Para quê! se quase ninguém vai interessar em aprender e sim que um código para dar Ctrl+C e Ctrl+V? Então é isso: Criar um conteúdo bacana aqui (inútil) quase ou ninguém vai ler. Reputação por um post (desnecessário) você ajuda por que quer e não por remuneração.
  9. Entendo você @Motta. Da mesma forma que ao eu contratar os 4 funcionários que tenho, meu principal requisito nem tanto era o cara saber programar e sim saber usar o linux. Em outras palavras é o que tem para a janta... se você gosta de A ou B mas a empresa trabalha com C, e você não o conhece... nada de emprego. Mas a questão da enquete é um conceito pessoal.
  10. Está zoneado é para todo mundo mesmo... E não é de hoje ou de ontem. Isso já está com problemas há muito, mas muito tempo mesmo....
  11. Omar~

    voltar usuário a página que estava após novo login

    Isso depende muito da arquitetura do projeto. Porque os browsers não compartilham seu histórico com um servidor (ainda bem) É questão de segurança e privacidade do usuário. Porém um servidor mantém a origem de onde um usuário vem dentro do seu alcance... como assim? Digamos que eu esteja em https://qualquer_coisa aí nesse local eu tenha o link assim: <a href="outro_arquivo.php">tela de login</a> Então nesse arquivo eu posso obter o endereço anterior que aquela pessoa veio (desde-que esteja no mesmo servidor) $_SERVER['HTTP_REFERER'] O que vai dar em: https://qualquer_coisa Mesmo assim isso pode alterar conforme a arquitetura do projeto, se por exemplo você usa url's amigáveis não dar para usar a referência pois de fato o usuário nunca saiu do mesmo lugar, apenas está navegando usando informações repassadas e por aí vai dentre tantas outras questões. Você pode explorar outras alternativas... Como pegar a url atual e retirar o ultimo endereço pós "/" barra e retornar o usuário para esse endereço Recarregar a página por javascript e essa página checa o login via script serve-side se não está logado manda para outro lugar. Sempre armazenar o último local em uma sessão (não sou fã disso por ser muito invasivo, lento e grotesco mediante as outras alternativas)
  12. Não mesmo... Acontece que a versão do IPB usado aqui no iMasters está bugado mesmo... Mas isso é coisa normal da invision power, apesar de ser uma ferramenta até bacana é muito propício a bugs. Só não sei porque não arrumaram ainda pois é algo relativamente simples de corrigir.
  13. Bom, eu uso o Ubuntu para trabalhar, ou seja 99% do tempo que passo na frente da tela é programando, porém uso o Window 7 para lazer ou seja navegar na web e jogar de vez em quando. Mas de longe eu prefiro o linux mesmo, no principal motivo é a não busca de atualizações muito menos atualizações automáticas, o que deixa um sistema com windows desagradável de usar. Além do caso do desempenho que o linux além de mais confiável é infinitamente mais rápido e prático de usar.
  14. Omar~

    Checkbox Obrigatório

    https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/required
  15. Omar~

    Devolução ao estoque

    Se fosse minha situação eu armazenaria os produtos do cliente em um array, caso ele queira devolver algum simplesmente eliminaria o índice desse array correspondente ao produto que ele devolveu, mais ou menos isso: <?php $produtos_no_pedido = [ ['id' => 0, 'nome' => 'fone'], ['id' => 1, 'nome' => 'fone'], ['id' => 2, 'nome' => 'teclado'], ['id' => 3, 'nome' => 'pen driver'], ['id' => 4, 'nome' => 'pen driver'], ['id' => 5, 'nome' => 'pen driver'], ['id' => 6, 'nome' => 'pen driver'] ]; echo '<pre>'; var_dump($produtos_no_pedido); echo '</pre><hr />'; $remover_do_pedido = [2, 3, 6]; // Para remover o 2º fone e o primeiro e o último pen driver foreach ($remover_do_pedido as $chave) { if (array_key_exists($chave, $produtos_no_pedido)) { echo ("<p>Item removido: {$produtos_no_pedido[$chave]['id']}-{$produtos_no_pedido[$chave]['nome']}</p>"); unset($produtos_no_pedido[$chave]); } } echo '<pre>'; var_dump($produtos_no_pedido); echo '</pre><hr />'; Então com o array_key_exists chegamos ao índice de uma determinada chave no array. Agora vamos supor que ele não queira mais um determinado produto, mas nesse array tem vários produtos iguais, aí para a coisa dar certo podemos buscar no array o nome dos produtos $remover_do_pedido = ['teclado', 'pen driver']; foreach ($remover_do_pedido as $remover) { foreach ($produtos_no_pedido as $chave => $produto) { if (array_search($remover, $produto)) { echo ("<p>Item removido: {$produtos_no_pedido[$chave]['id']}-{$produtos_no_pedido[$chave]['nome']}</p>"); unset($produtos_no_pedido[$chave]); } } } echo '<pre>'; var_dump($produtos_no_pedido); echo '</pre><hr />';
  16. <input type="checkbox" id="checkmarcacao1" /> <input type="time" id="hora101" disabled="" /> <script> var checkbox = document.getElementById('checkmarcacao1'), time = document.getElementById('hora101'); checkbox.checked = null; time.value = null; time.setAttribute('disabled', ''); function alterarInput(e) { if (e.target.checked) { time.removeAttribute('disabled'); } else { time.setAttribute('disabled', ''); time.value = null; } } checkbox.addEventListener('change', alterarInput, false); </script>
  17. Omar~

    Problema com herança de classes

    Primeiro vamos esclarecer o porque de usar herança em classes. Digamos por exemplo que eu tenha classe_A, classe_B, classe_C; em ambas classes eu precise executar uma tarefa que se repete nelas.... Se não precisamos de algo recursivo a herança é desnecessária. Porém nesse requisito de repetição trabalhamos com uma classe mãe que vai executar essas tarefas que são específicas da classe mãe, portanto a classe mãe torna-se algo com importância tão relevante que seu acesso deve ser restrito. Ou seja não é adequado que ela possua dados públicos que podem ser manipulados de forma leviana. Em outras palavras nada de usar public em uma classe mãe que possui uma responsabilidade maior. Um construtor.... Um construtor de uma classe é somente para definir com quais dados/comportamento a classe deve possuir antes de usar qualquer tarefa que ela venha a fazer, caso não precisamos desses dados iniciais em todos os métodos seguintes não é necessário um construtor. Fora do contexto de classe, mas na questão do tópico: É muito estranho que em "pleno século 21" alguém ainda pensa em usar md5 para criptografia de senha, qualquer string é facilmente decifrada com o md5. Se você quer segurança use o password_hash que lança um novo salt a cada execução. Porém qualquer desses você pode registrar que numa comparação se for a mesma string o retorno é sempre verdadeiro. <?php class ClasseMae { private $pass; private $newPass; private function novaSenha() { $this->newPass = password_hash($this->pass, PASSWORD_DEFAULT); } protected function alteraSenha($pass) { $this->pass = htmlentities($pass); $this->novaSenha(); } protected function retornarSenha() { return (empty($this->newPass) ? null : $this->newPass); } } Perceba a responsabilidade da classe as quais filhas vão herdar seus métodos. O que uma filha pode acessar é protegido o que ela não pode mexer é privado. Ou senha nenhum objeto tem acesso a nada na mãe para que não possa manipular-la de forma alguma, porque ela é a mãe e não pode sofrer interferência de ninguém. <?php class ClasseFilha extends ClasseMae { public function modificarSenha($senha) { $this->alteraSenha($senha); } public function verSenha() { return ($this->retornarSenha()); } public function compararSenha($novaSenha) { if (password_verify($novaSenha, $this->retornarSenha())) { return (true); } else { return (false); } } } Note que então numa filha seus métodos são públicos pois sua responsabilidade é só receber/usar o que a mãe tem a oferecer. Por fim vejamos um exemplo de execução <?php $objeto = new ClasseFilha(); $objeto->modificarSenha('12345'); var_dump($objeto->verSenha()); echo ("<hr />"); var_dump($objeto->compararSenha('54321')); echo ("<hr />"); var_dump($objeto->compararSenha('12345'));
  18. Omar~

    Obter dados de único nome MYSQL

    Bom, se eu entendi e o caso for que o status não possa ser"OK". A coisa é meio óbvia: SELECT nome, pedido, status FROM cadastros WHERE status != 'Ok' Todos os dados de nome, pedido, status na tabela cadastros que não tiver com o status definido como Ok serão retornados
  19. Omar~

    Com dificuldade em uma classe

    <?php class MinhaClasse { private $atributo; public function meuMetodo($paramA, $paramB) { $this->atributo = $paramA . ', ' . $paramB; return ([$this->atributo, $paramA, $paramB]); } public function outroMetodo($paramC) { return ([$this->atributo, $paramC]); } } $obj = new MinhaClasse(); $a = $obj->meuMetodo('Bom dia', 'Boa tarde'); $b = $obj->outroMetodo('Boa Noite'); echo "<pre>"; var_dump($a, $b); echo "</pre><hr />"; function MinhaFuncao($paramA, $paramB) { return ([$paramA, $paramB]); } echo "<pre>"; var_dump(MinhaFuncao('Olá', 'Mundo')); echo "</pre>";
  20. Omar~

    Pegar ultimo id inserido e cadastrar em uma outra tabela

    lastInsertId é um método da classe PDO portanto basta que apenas use o objeto PDO para chamar o método logo depois de mandar executar a query. Exemplo $objetoPdo = new PDO( ... bla... bla... bla $conexao = $objetoPdo->prepare( ... bla... bla... bla $conexao->execute( ... bla... bla... bla if ($conexao->rowCount()) { $ultimoID = $objetoPdo->lastInsertId(); }
  21. Omar~

    Variável dinamica

    Mas então explique o objetivo a se obtido, variáveis não se altera dentro de um escopo global. O laço de loop for (para enquanto...) podemos reescrever a mesma varável e usar-la de forma diferente dentro do próprio loop, mas daí tem que saber o que se é para fazer.
  22. Omar~

    Com dificuldade em uma classe

    Envie os dados que precisa por parâmetro para o método. Se precisar reaproveitar eles em outros métodos use atributos... Se não precisar reaproveitar use funções ao invés de classes
  23. Omar~

    Variável dinamica

    Dinâmica como? Não ficou claro o resultado que você espera.... Seria algo como isso, nesse caso usamos uma array para criar um índice a cada volta: <?php $exemplo = []; for ($dia = 0; $dia < 7; $dia++) { $exemplo[$dia] = $resultadoBD->horario_$dia } echo '<pre>'; var_dump($exemplo);
  24. Omar~

    Melhorar desempenho do site

    O problema da lentidão está na "segunda"; melhor nas várias outras vezes que o código faz consulta, é loop dentro de loop fazendo consulta... Faça as querys separadas do e dentro do loop compare os dados. Para falar a verdade ambas querys são as mesmas e não há necessidade de re-executar a mesma coisa, ainda mais ficar fazendo querys dentro de loop Quanto mais voltas o loop faz mais querys são lançadas, mais custoso é para o servidor processar, menos desempenho você tem. Vejamos um exemplo que com uma única query você pode criar diferentes arrays para cada situação: <?php $ENG_REL_EPIS = [ /* Simulando um resultado da query "ORDER BY DATA ASC" */ ['NOME' => 'Bruno', 'to_date' => '2021-06-05'], ['NOME' => 'Carlos', 'to_date' => '2021-06-06'], ['NOME' => 'André', 'to_date' => '2021-06-07'], ]; echo '<pre>'; var_dump($ENG_REL_EPIS); /* Resultado da consulta ordenada por DATA */ echo '</pre>'; $emNome = []; foreach ($ENG_REL_EPIS as $nome) { foreach ($nome as $chave => $value) { if (!isset($emNome[$chave])) { $emNome[$chave] = []; } $emNome[$chave][] = $chave; } } array_multisort($emNome['NOME'], SORT_DESC, $ENG_REL_EPIS); echo '<hr /><pre>'; var_dump($ENG_REL_EPIS); /* 1 query e os mesmos resultado da consulta ordenados por NOME */ echo '</pre>';
  25. Algo simples, um ouvinte de eventos no seletor e pronto. Mas devo ressaltar que ao inserir o valor em um input text não é o ideal, pois o usuário "seleciona laranja depois vai ao input e escreve limão" removendo a lógica da questão. Nesse contexto o input pode ser oculto e ao invés de só inserir o valor no input manipulamos outro elemento "não editável" para informar o valor selecionado. <select name="qualquer_coisa" id="seletor"> <option value="">Selecione uma opção</option> <option value="1">Opção A</option> <option value="2">Opção B</option> <option value="3">Opção C</option> </select> <input type="hidden" name="outra_coisa" id="caixa_de_texto" /> <div></div> <!-- Use o CSS para personalizar esse divisor para que ele se pareça com um input-type-text --> <script> var seletor = document.getElementById('seletor'); var texto = document.getElementById('caixa_de_texto'); function alterarInput(evento) { var alvo = evento.target; var divTexto = texto.nextElementSibling; // O próximo elemento HTML depois do input texto.value = alvo.value; // Alterando o valor do input para o valor selecionado divTexto.innerText = (alvo.value.length ? alvo.value : ''); // Colocando o valor na div } seletor.selectedIndex = 0; // Sempre quando carregar a página o seletor muda para primeira opção seletor.addEventListener('change', alterarInput, false); </script> Questão de string e inteiros. Uma vez como valores de elementos mesmo sendo números na verdade são strings então. Para converter um número em INT com javascript você usa a função parseInt console.log( parseInt('123') ); Para converter um número em INT com o php você usa a nomenclatura (int) <?php $inteiro = (int) '123';
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.