Jump to content

Omar~

Members
  • Content count

    578
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Omar~

    Validação em PDO OOP

    Sim, você está correto. Minha intenção foi esclarecer que ele inverteu sua lógica onde o uso dos dados é true, e ele mesmo deixou de usar a lógica do construtor, que tem a finalidade de determinar o que a classe vai fazer antes mesmo de algum método ser iniciado. A única coisa que eu mudaria nesse caso: É ao invés de repassar o índice do POST como parâmetro. Eu armazenaria em um atributo se não vazio ou não existente, assim poderia usar em mais de um método, caso queira criar novo método para verificar a existência dos mesmo em um banco de dados, mas enfim cada caso é um caso.
  2. Omar~

    Validação em PDO OOP

    Como a intenção é só validação de uma string ao qual pode existir ou não. Usar um construtor no meu ponto de vista não é uma boa ideia, pois não necessita de um comportamento inicial pela classe. Então só passando o olho rapidinho identifiquei erro já na primeira condição do método validaUsername uma vez que a variável $username não pertence ao escopo do método nem foi criada. Ou detalhe que no caso específico de sua classe que usa um construtor. Ela só pode ser instanciada dentro das condições que existem uma super global POST e obrigatoriamente é necessário existir o índice username, caso não sempre vai gerar o erro citado. Outro erro é que o método construtor envia como parâmetro dados para o outro método, ao qual não possui recebimento de parâmetro. Tente assim:
  3. https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/ SELECT * FROM tabela WHERE coluna_usuario = :usuario AND coluna_email = :mail Se na tabela nas colunas coluna_usuario, coluna_email coexistirem é porque existe SELECT * FROM tabela WHERE coluna_usuario = :usuario OR coluna_email = :mail Na tabela se existir nas colunas coluna_usuario ou na coluna_email
  4. Omar~

    Resolver fakepath em input file

    Sinistro! Nunca vi coisa assim, se fosse comigo, iria fazer de tudo menos formatar a máquina.
  5. Estava eu aqui a criar um plugins para o ckedior 4 (o mesmo aqui do fórum) cujo o mesmo aplica a syntax highlighter do Prism.js. Mas aqui no forum a script usado marcação é o code-prettify Enfim, de jeito nenhum a formatação da marcação de código funciona no editor! Tentei todos os métodos possíveis e impossíveis, passando referencia por id, buca por elementos etc... E mesmo os retornos sendo true não funciona nem a pal. Então resolvi pedi ajuda, vai saber se alguém cai do céu aqui e conhece bem a API do editor e consegue me dar uma força Sei que existe plugin do editor para tal fim, mas obrigatoriamente devo utilizar o dialog do editor para essa finalidade e é isso que não quero usar. A questão é inserir a marcação de código por função externa ao editor. No mais está aqui o código limpo funcional com o widget, mas sem funcionar a sintax highlighter do Prism HTML - Com a função JS que insere no editor a marcação Aqui o script do plugin simples para fazer a mágica acontecer "coisa que não consegui" Como disse o plugin funciona, porém não conseguir fazer o prism funcionar dentro do editor
  6. Omar~

    Resolver fakepath em input file

    Bem, ASP não entendo desde sempre rejeitei por ser extremamente limitada e falha... Enfim, tentou fazer assim? $valArquivo = document.getElementById('id_do_input_tipo_file').value; ao invés de $valArquivo = $frmFoto['arquivo'].value; Não sei se aqui você se referiu a isso Porque ao meu ver, parece que aqui você está pegando o ID do form e não o do input onde está o texto do arquivo inserido: $frmFoto = document.getElementById('frmFotoCandidato')
  7. Omar~

    Resolver fakepath em input file

    Lógico o browser está informando o diretório temporário do arquivo de envio. Isso é para melhor desempenho, quando enviamos um arquivo e logo tentamos enviar o mesmo novamente o browser só informa que o arquivo já foi enviado e é só reaproveitar-lo. De qualquer forma mostre a função JS para ter uma ideia de como a função se comporta. Tente esse script JS meu para uploads e downloads veja se ocorre o mesmo problema. https://github.com/Spell-Master/sm-web/tree/master/scripts/FileTransfer <link href="FileTransfer.css" rel="stylesheet" type="text/css"/> <script src="FileTransfer.js" type="text/javascript"></script> <div id="resultado"></div> <form id="upload_exemplo" onsubmit="return objeto.upload(this.id, 'upload.php', 'resultado', true);"> <input type="file" name="enviar" /> <button>Upload</button> </form> <script>var objeto = new FileTransfer();</script> O arquivo upload.php, que vai tratar do arquivo pelo lado do servidor <?php /* * Esse é só o exemplo do lado do servidor. * !! Não há nenhum tratamento aqui por que é só para mostrar o armazenamento !!! * * Nota: __DIR__ . '/' Isso quer dizer o mesmo diretório onde está esse arquivo */ move_uploaded_file($_FILES['enviar']['tmp_name'], __DIR__ . '/' . $_FILES['enviar']['name']); echo ("Arquivo enviado <br />FILE INFO:<pre>"); var_dump($_FILES); echo ("</pre>");
  8. Omar~

    Problema com a função hide

    <button onclick="escode(this);">Escoder</button> <div id="escoder-isso-tambem"> Click no botão para esconder </div> <script> function escode(alvo) { // alvo é o botão repassado pelo "this" alvo.style.display = 'none'; document.getElementById('escoder-isso-tambem').style.display = 'none'; /* * Se o elemento que vai esconder for o próximo na lista do DOM * pode-se apenas referenciar ele como próximo elemento ao invés * de varrer do DOM em busca do elemento ID. * Basta fazer assim: * (alvo.nextElementSibling).style.display = 'none'; */ } </script>
  9. Omar~

    Resolver fakepath em input file

    Aí depende qual problema mesmo está acontecendo.... Porque isso: Quando true obtêm o valor em string de um input, (não o arquivo se for um input tipo file) Já isso: Vai informar o nome do primeiro arquivo anexado a classe nativa "FormData" se ela for requisitada e se o input id "file-id" for um tipo file.
  10. Isso é conhecido como Modal. E fazer isso aparecer do jeito que você quer fazer faz com que perca a maior parte do público que acessaria seu website. Além que isso fere as questões de boas práticas. Enfim eu criei um script para executar essa aplicação (Não para o termo que você deseja mas pode ser usado nessa finalidade) Salve o arquivo ModalShow.js e seu CSS encontrado nesse link, logo então adicione-os ao head do index: https://github.com/Spell-Master/sm-web/tree/master/scripts/ModalShow Então adicione a estrutura HTML para tal (desculpe até o momento não coloquei no repositório citado essa estrutura ) <div class="modal" id="id_que_voce_quiser"> <div class="modal-box" style="max-width: 400px"> <div class="modal-header"></div> <div class="modal-content" id="modal-load"> Aqui você coloca o conteúdo do jeito que quiser </div> </div> </div> O #ID você quem escolhe como vai ser A estilização da largura máxima você pode passar pelo style="....... no .modal-box. Do contrário a largura máxima é de 900pixels Então somente depois da estrutura HTML criada você vai usar a classe JS Sugiro que adicione no final do BODY... <script> var janela = new ModalShow('id_que_voce_quiser', false); /* parâmetros: 1 - "id_que_voce_quiser" : É o id da estrutura HTML 2 - "false" : É o conteúdo interno, mesmo que feche a janela o conteúdo não será apagado */ janela.open('O título que você quiser', true); /* parâmetros: 1 - "O título que você quiser" : Título da janela 2 - "true" : Quer dize que o botão de fechar deve ser exibido */ </script> Sugiro que faça a personalização no CSS dos atributos, pois o arquivo CSS só contém o básico para a manipulação através do ModalShow.js
  11. @MaryDelBrollo Não entendi qual é/são os botões que você quer capturar dados. Certo, na lógica você quer capturar os que estão nos forms. Mas veja, mesmo que pegue esse valor, você está executando o formulário, logo os dados deixaram de existir quando o form for validado. Sobre o seu código... O ajax está bom, ele redireciona para o endereço e envia um valor GET['function'] Só essa parte aconselho que fosse assim: xmlhttp.open("GET", set_status, true); Para deixar a requisição síncrona. A função led() Isso aqui por exemplo var on = document.querySelector(".on"); O javascript irá percorrer o DOM em busca do primeiro elemento que contenha a class on exemplo: <button class="on"></button> Então esse seria o alvo da função que chama outra função Ou seja podemos otimizar tudo para uma única camada Independente o código que você postou está funcional (por isso não entendi onde quer chegar), só que como você está buscando por elementos DOM é ideal que a função/evento que o usa, venha depois do elemento se criado pelo browser, ou seja adicionando o script depois do elemento, normalmente o uso mais coeso é por scripts assim no final do BODY A confusão aqui são os forms que não tem haver diretamente com o perguntado. Então fico no aguardo se a ação dos botões ON/OFF deve interagir com os formulários.
  12. Tente ver se algo não falta a carregar pelo load. Abra o inspetor do navegador selecione a opção console depois marque as opções Xhr e Request Então execute o load do jquery, (Nota!! Use o navegador Mozilla Firefox para esse processo) Obs.: É comum browsers apresentarem erros e alertas quando usando jquery principalmente seu métodos de ajax que não são síncronos. No mais acredito que deveriam funcionar, pois requisições assíncronas assim como funciona o ajax com jquery tornam a aplicação lenta pois todo o restante do carregamento é interrompido até que tudo que foi requisitado pelo ajax esteja totalmente carregado. Então com certeza você deve ver uma alerta como esse: Ou seja é porque simplesmente atrapalha a interatividade do usuário com o website Vale lembrar que todo carregamento de conteúdo, é salvo em cache pelo browser, se carregou esse arquivo sem os supostos recursos, pode ser que ele esteja salvo sem esses recursos e o browser não etá "consciente" que ele foi modificado e ele deve salvar outro. Nesse caso pode ser solucionado simplesmente limpando os dados de navegação. Como conselho sugiro somente usar ajax através do XMLHttpRequest nativo do browser.
  13. Omar~

    Dúvida de formatação!

    Isso depende sobre o que diz ser "desformatam" Poste uma imagem de como fica no que acredita está "formatado" e outra imagem que mostre quando está "desformatado". Assim fica mais fácil entender seu problema.
  14. Omar~

    Layout CSS é possível esse modelo.

    Pelo que entendi..... Retire o height de: #content / #inner / #section E também remova o overflow de #section Isso fará com que #content ganhe a altura correspondente aos elementos internos no que também aumentará automaticamente o height do body, fazendo com que a barra de rolagem fique anexada ao body. Agora se não for isso seria bom você encontrar algum website que aplica o que você espera, assim fica mais fácil ter a ideia real do que pretende fazer.
  15. Omar~

    Erro na sintaxe formulario php

    Você diz que o título não é alterado? Atualize na tabela exe os dados categoria, arquivo. Cujo nessa tabela contenha o índice titulo com o esse valor ???? Então você só está modificando categoria e arquivo e não o título. Se for o caso vai ter que incluir o título como modulo de alteração e buscar a coluna correspondente o outro índice, pois está a modificar o mesmo dado de busca.
  16. Omar~

    Ao clicar em voltar o script reseta [PROBLEMA]

    Suponho que esse arquivo aí seja o newbie.html que no mínimo deveria ser .php, enfim isso não importa porque o apache é bonzinho e aceita essa situação. No caso a variável $i é quem está definindo a linha atual então basta informar essa variável no link <a href="newbie.html/?linha=<?= (isset($i) && $i > 1 ? $i : 1) ?>">Voltar</a> Se variável $i existir e se ela for maior que 1, imprima ela, do contrário imprima 1 Não esqueça que a TAG A deve ser terminada assim </a> e não <a/> Outro detalhe é que vi a abertura do arquivo e não a leitura do mesmo pelo read Ah mais uma coisa não que isso importe mas você abre a tag BODY e logo em seguida fecha ela, após isso você imprime dados na tela através do comando echo. Ou seja está desenhando o html de forma errada, o navegador mostra porque ele é bonzinho, mas isso está errado...
  17. Omar~

    Qual valor cobrar por um hotsite.

    Quanto você deve cobrar acho que ninguém pode lhe dizer tal coisa, só lhe dar sugestões. Bom, minha sugestão é dizer como eu cobro. O cliente chega a mim, conversarmos sobre o que ele deseja, faço um parecer, e esclareço a ele cada aspecto que ele imaginou; Repasso o cliente até uma amiga minha que cuida da parte mais fácil que é o front-end, design etc "parte gráfica em geral"... Ela então cria alguns slides e apresenta ao cliente. Até chegar o que o cliente espera. Com tudo acertado, sabemos quanto tempo vamos levar para desenvolver. Então calculamos o valor com base no salário mínimo X dias trabalhados.
  18. @TeixeiraRamos Pelo visto o que procuras é algo conhecido no popular como CRUD que são as 4 ações tomadas quando se trata de banco de dados (C = "create" / R = "read" / U = "update" / D = "delete"). Então não necessariamente estamos em OO, pois orientação a objeto é só um conceito da forma de programar leia mais em: https://pt.wikipedia.org/wiki/Orientação_a_objetos No mais estou lhe enviando uma MP para lhe apresentar um projeto meu que evidentemente seu código é orientado a objeto, e usa ações de manuseio de banco de dados, ou seja criar, ler, atualizar e apagar dados.
  19. O principal foco da orientação a objeto é reaproveitamento, se não reaproveitar tudo a maior parte do código é reaproveitado. Ou seja, se escrevemos um código em um arquivo, logo não usamos em outro e isso está bem longe da orientação. Quando criamos var's em um arquivo e precisamos dessas variáveis em outro, obrigatoriamente temos que incluir o arquivo que gerou a ou as variáveis antes de usar-las. Assim sendo quando isso não acontece desencadeia uma série de erros, que é comum quando não há verificação do dados. Aqui vemos que 4 variáveis não foram definidas antes de usar-las: Ou seja elas não existem, e se não existem não geram o construtor que gera outro erro que desencadia mais erros até o último onde o fetch_array não pode ser executado em dados que NÃO EXISTEM. Agora só explicando, uma coisa é variável outra coisa é constante... Isso são variáveis: Logo o uso seria assim mesmo: Agora isso são constantes: Então seu uso seria assim: Então quando se deve usar variáveis e quando se deve usar contantes? A preferência sempre deve ser dada a variáveis, pois consomem menos do sistema para serem geradas, porém como dito sempre devem ser re-incluídas quando necessárias. Já as contantes são um caso a parte pois enquanto o http request não muda elas existem, ou seja por exemplo se no index eu crio uma constante ou incluo um arquivo que a cria, qualquer arquivo dentro daquele endereço url reconhece essa constante não sendo necessária a recriação e re-inclusão desse dado. Um exemplo prático está nessa classe que criei para envio de e-mails: Se notar a o uso de algumas constantes como MAILSLL/ MAILHOST etc... que não são criados dentro do escopo da classe. Voltando ao assunto da orientação a objeto. Pois até agora o apresentado no post está muito longe de ser OO. Pois para termos um mínimo nesse conceito, seria você possuir uma classe só para conexão essa classe por suas vez teria pelo menos dois métodos; um para construir a conexão outro para devolver a aplicação o objeto da conexão. Outra classe para leitura que possuem método para: Chamar a conexão, outro para verificar dados antes da consulta, outro para consultar, outro para modular a consulta, outro para consultar, outro para verificar os resultados, outro para modular os resultados quando existem, outro para devolver os resultados se existirem. E se serve de exemplo veja essas duas classes que criei para conexão outra para leitura de dados Obs.: Uso PDO (P = "php" / D = "data" / O = "object") Ou seja orientado a objeto por natureza. Connect: Select: Usando:
  20. Omar~

    Função de retorno não retorna nada

    Não atribua o valor da variável no retorno, primeiro você deve definir o valor só então retornar a variável. E pode ser útil ter uma condição onde não se tem um valor esperado, então você pode fazer assim: Ou assim, que dar no mesmo:
  21. Omar~

    Exibir pesquisa do banco gradativamente

    Te dar um exemplo simples aqui fica difícil. Mas posso lhe apontar em qual direção seguir. Isso normalmente é conhecido como paginação de resultados. Em consultas no banco usamos vínculos de resultados que são LIMIT e OFFSET. O limit determina quantos resultados são para mostrar, digamos então que a consulta possa ter 100 resultados mas o limit na estrutura da query é 10, somente esses 10 resultados são trazidos. Já o offset determina onde deve começar a os resultados. Digamos que uma query irá trazer 500 resultados mas o offset é 80, isso quer dizer que os 80 primeiros resultados são ignorados mostrando apenas os 420 restantes. Ou seja a combinação disso cria a paginação, ou seja temos as ferramentas para dizer onde começar a trazer os resultados e quantos resultados queremos exibir.
  22. Omar~

    definir input de array

    var qtdLinhas = $("#qtdLinhas").val(); Retorna sempre 1 Ou seja é um elemento #ID e só pode haver 1 por página. Assim sendo um loop for só trará um único resultado Isso porque quando se entra nessa capsula com jquery $() você está involuntariamente executando tudo isso: document.querySelector() // Return TRUE por jquery document.querySelectorAll() // Return FALSE por jquery document.getElementById() // Return FALSE por jquery document.getElementsByClassName() // Return FALSE por jquery document.getElementsByName() // Return FALSE por jquery document.getElementsByTagName() // Return FALSE por jquery document.getElementsByTagNameNS() // Return FALSE por jquery document.getFeature() // Return FALSE por jquery document.getOwnPropertyNames() // Return FALSE por jquery
  23. Omar~

    Desenvolver botão para executar o campo no mysql

    <a href="endereco/arquivo.php?informacao=mostra_a">Exemplo 1</a> <a href="endereco/arquivo.php?informacao=mostra_b">Exemplo 2</a> <?php if (isset($_GET['informacao'])) { if ($_GET['informacao'] == 'mostra_a') { // Se for A faça isso echo "A"; } else if ($_GET['informacao'] == 'mostra_b') { // Ou se for B faça isso echo "B"; } else { // Nem A nem B } } else { echo "????"; }
  24. Omar~

    Não funciona os script para Alterar e Excluir registros

    Só para deixar claro. Quando se vai submeter um formulário por função javascript, você deve remover o comportamento padrão do browser sobre aquele evento. Existem duas formas de se fazer isso. 1 - Você deve adicionar o comando onsubmit direto na tag do form exemplo: <form onsubmit="return false;"> Isso quer dizer que não impota quantos botões haja dentro do form ele nunca será validado por inline, sendo necessário eventos de script para acionar-lo. Ou nesse mesmo termo chamar diretamente uma função para o evento <form onsubmit="return MinhaFuncao();"> Sendo então a função que vai tratar do retorno var retorna = null; // se fosse true retornava function MinhaFuncao() { if (retorna) { return true; // O form é submetido } else { return true; // O form permanece sem submeter } } 2 - Que pode ser um caso de uma função depender de outra ou outras funções/condições, tratamos do evento diretamente no script, bastando informar qual elemento é o gatilho que dispara o evento. Exemplo <form id="identificador"> <!-- Conteúdo --> </form> <script> var gatilho = document.getElementById('identificador'); gatilho.addEventListener('submit', alguma_funcao, false); </script> Nesse caso é sempre a função quem vai tratar do retorno. Que pode ser o pelo termo return false; ou por prevenção do evento padrão function alguma_funcao(evento) { evento.preventDefault(); // Remove o comportamento padrão, seja qual for o evento de origem console.log(evento); // Dados de quem disparou o evento é mostrado no console do navegador } Enfim, é só para esclarecer sobre o assunto de form X script. @TeixeiraRamos Fiz um exemplo para você funcional, porém, como odeio jquery e acho que ele não serve para bost... nenhuma. Fiz só com o bom e prático javascript. E também usei um script para modal meu que também é puro e simples javascript. Fica a dica, antes de completar uma ação porque esse é o erro de 99.9% das pessoas é não depurar os valores antes da validação, quer dizer que antes de fazer um updade, submit etc.. em um DB. Teste/ veja/ analise com cuidado os dados que você está enviando, só quando tudo estiver de acordo é que você começa a transcrever o resto. O mesmo vale para formatações HTML.
  25. Omar~

    Exibir se dado já existe dentro do formulário

    Não seria mais fácil, rápido, pratico simples, eficiente ... bla bla bla. Só usar os recursos nativos do browser? Ou seja no caso só usar o HTML e javascript. Criei um exemplo aqui para o telefone, mas somente aceita telefones válidos do brasil, fmz?! Na verdade só o pattern já é o suficiente, pois ele passa uma expressão regular para somente aceitar um telefone válido, então enquanto não digitar o telefone corretamente o input é considerado inválido. O javascript é só para dar um help para escrever o numero com formatação "certinha" Não deixe de fazer a verificação desses campo quando submeter dos dados, lembre-se que qualquer pessoa pode abrir o inspetor e modificar a estrutura do jeito que quiser
×

Important Information

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