Jump to content

Omar~

Members
  • Content count

    721
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Omar~


  1. Em 18/10/2019 at 18:23, Sapinn disse:

    problema é que não fica organizado.

    Isso se rebate na correta utilização de tags e atributos dos elementos.

     

    Em 18/10/2019 at 18:23, Sapinn disse:

    Então eu gostaria de imprimir outra pagina

    O problema é que nesse caso deve-se recriar a página com a formatação desejada.

    A única forma que pensei nesse momento é abrir um novo arquivo e imprimi-lo.

     

    Página inicial:

    <p style="color:red">Lorem ipsum dolor sit amet.</p>
    <button onclick="window.open('arquivo.html');">Imprimir</button>

    Então estamos abrindo uma janela ao qual será carregado o arquivo.html e nele poderemos modificar a estrutura, assim imprimir e fechar em seguida.

     

    arquivo.html:

    <p style="color:blue">Lorem ipsum dolor sit amet.</p>
    <script>
        window.print();
        window.close();
    </script>

     


  2. <style>
        .escondido {display: none}
        .escondido.mostar {display: block}
    </style>
    
    <div>
        <button class="exemplo">Exemplo 1</button>
        <div class="escondido">
            Exemplo 1
        </div>
    </div>
    
    <div>
        <button class="exemplo">Exemplo 2</button>
        <div class="escondido">
            Exemplo 2
        </div>
    </div>
    
    <div>
        <button class="exemplo">Exemplo 3</button>
        <div class="escondido">
            Exemplo 2
        </div>
    </div>
    
    <script>
        var botao = document.getElementsByClassName('exemplo');
        for (var i = 0; i < botao.length; i++) {
            botao[i].addEventListener('click', function () {
                this.nextElementSibling.classList.toggle('mostar');
            }, false);
        }
    </script>

     

    Veja também:

    https://github.com/Spell-Master/sm-web/tree/master/javascript/Accordion

     


  3. Olha não vou está analisando seu código, mas vou lhe dar as ferramentas necessárias para o entendimento.

     

    Para executar-mos uma paginação de precisamos usar o LIMIT e o OFFSET em nossa query.

    O "LIMITE" vai determinar quantos resultados vão aparecer.

    O OFFSET vai determinar de qual índice vai mostrar os resultados.

     

    Digamos então que temos a tabela centroautomotivo nela temos 10 registros.

    No genérico nossa query:

    SELECT * FROM centroautomotivo LIMIT 3 OFFSET 1

    Isso quer dize que terei os três(3) resultados a partir do primeiro(1).

     

    Então para que minha paginação funcione eu tenho que sempre aumentar o OFFSET em relação ao LIMIT.

    Assim sendo a próxima consulta deverá ficar:

    SELECT * FROM centroautomotivo LIMIT 3 OFFSET 4

    Ou seja exibindo três resultados mas a partir do quarto índice porque os três primeiros já vimos com a query anterior.

    E por assim adiante.

     

    E como informar esse OFFSET corretamente?

    Através de links, por exemplo:

    <a href="arquivo.php?offset=1">Página 1</a>

    <a href="arquivo.php?offset=4">Página 2</a>

    Então temos a super global $_GET com o índice "offset" que poderemos usar para fazer a consulta.

    Ou seja sempre o OFFSET da query será o que for informado pela url.

     

    O ideal para que uma paginação funcione sem dores de cabeça é fazer uma consulta prévia para somente informar índices com o total de resultados, filtrar e tratar esses get's de entrada para evitar danos ao DB.


  4. Olha, não me preocupo com tais circunstâncias, classes filhas podem acessar atributos ou métodos de suas classes mães por ambas formas desde-que os mesmo não sejam privados.

    Mesmo que $this possa acessar métodos é mais estético usar o parent pois assim você sabe que está acessando método e não um atributo.

    Use o $this somente mesmo para acessar atributos das classes mães.

     

    Uma coisa que você deve saber que o construtor de uma classe vale para qualquer outra classe que é estendida a ela.

    <?php
    class AbstractDB {
    
        protected $retorno;
        public $retornoB;
    
        function __construct() {
            $this->retorno = 'Minha finha herda minha construção';
        }
    
        protected function rB() {
            $this->retornoB = 'Acesso ao atributo';
        }
    }
    
    class Db extends AbstractDB {
    
        public function exemplo() {
            return $this->retorno;
        }
    
        public function acessoB() {
            parent::rB();
        }
    
    }
    
    $obj = new Db();
    
    var_dump($obj->exemplo());
    
    $obj->acessoB();
    var_dump($obj->retornoB);

     


  5. E qual seria a linha 66?

    Seria essa?

    1 hora atrás, Jefferson andre disse:

    <input class="form-check-input" type="radio" name="sexo" id="sexo" value="M" <?php echo ($sexo=="M" ) ? "checked" : null; ?>/> Masculino

     

    Bem, nesse caso crie a variável antes de usar-la.

    <?php
    $sexo = isset($sexo) ? $sexo : false; // Mesmo que a variável original não exista criamos ela falsa mesmo assim ela sempre vai existir

     

    <input type="radio" name="sexo" id="sexo" value="M" <?= ($sexo=="M"  ? "checked" : null) ?> /> Masculino

     

    Dica para usar o fórum....

    Se seu problema é o PHP não poste toda estrutura HTML nem entradas de CSS, isso atrapalha quem quer lhe ajudar.


  6. @Jack Oliveira

    Hun...

    8 horas atrás, Jack Oliveira disse:

    esta função para que na url amigavel não pegar o id

    Eu usaria o modelo assim:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?entrada=$1

    Então tudo que vem na url depois do endereço físico base passa a ser $_GET['entrada']

    Assim sendo o get para isso sao_paulo/12/forum-imasters/123/ é uma string só.

    No entanto como temos que obter cada entrada temos que dividi-la em diferentes coisas.

    <?php
    $filtro = filter_input(INPUT_GET, 'entrada', FILTER_DEFAULT); // Identifica se é realmente uma super global GET
    $requisitado = empty($filtro) ? 'padrao' : $filtro; // Se exite assume o existente, do contrário o get será "padrao"
    $separa = explode('/', $requisitado); // Aqui separamos em índices a partir de todas ocorrências de barras
    $url = array_filter($separa); // Removemos então ídices nulos ou vazios do array

     

    Se dermos então var_dump($url) com a seguinte url "meusite.com/sao_paulo/12/forum-imasters/123/teremos:

    Citar

    array(5) {

        [0]=> string(9) "sao_paulo"

        [1]=> string(2) "12"

        [2]=> string(14) "forum-imasters"

        [3]=> string(3) "123"

    }

     

    Com isso fica simples manipular cada entrada na url, por exemplo se eu quiser remover o 12.

    unset($url[1]);

     

    No entanto como você disse não há necessidade desse 12.

    Então vamos supor que eu escreva o seguinte link, ao acessar-lo irei consultar no banco se os dados do link existe

    <a href="sao_paulo/outra_coisa">Exemplo</a>

     

    Ao redirecionar, quer dizer que url no índice zero é "sao_paulo" então eu uso essa informação $url[0] para fazer a consulta no banco de dados pelo nome da cidade.

    $query = "SELECT * FROM cidades WHERE titulo = '{$url[0]}'";

    O ideal é que sempre manipule a entrada para transformar a string do índice em formato válido para o banco de dados, seja na hora de salvar, seja na hora de ler.

    Veja essa postagem:

    https://forum.imasters.com.br/topic/584706-transformar-uma-frase-em-formato-url/?do=findComment&amp;comment=2283669

     

    Você terá que reestruturar seus databases para no caso usar JOINS, o nome de cada cidade deve está presente em db's que tem dados compartilhados, já que não quer usar o id.

     

    Uma coisa que me chamou atenção foi em uma query apresentada por você temos o seguinte trecho:

    8 horas atrás, Jack Oliveira disse:

    indexar = 'S'

    Hora que nas estruturas de tabelas que você apresentou não existe a coluna indexar.

    Logo temos um erro de query.

     


  7. @Jack Oliveira

    Não entendi de onde vem as url's se são inseridas ou composta no html como links.

     

    Bom.. não sei o que esse "12" faz e qual a utilidade em:

    2 horas atrás, Jack Oliveira disse:

    meusite.com/sao_paulo/12/forum-imasters/123/

     

    No entanto se ele for uma informação necessária você não pode ofuscar.

    Justamente porque irá precisar para fazer alguma coisa. Do contrário você poderá criar funções que filtrem a entrada da url, e remova dados desnecessários, mas se forem desnecessários a arquitetura da aplicação deve ser reavaliada, pois está criando algo não usável.


  8. Use a Array.prototype.sort()

    var array_desordenado = ['c', 'a', 'b', 9, 5, 3, 4, 2, 6, 8, 7, 1];
    var array_ordenado = array_desordenado.sort();
    console.log('Array desordenado: ' + array_desordenado);
    console.log('Array ordenado: ' + array_ordenado);

  9. Primeiramente decodificar um STRING em formato url usamos urlencode

     

    Que no caso a string Alguém viu minha maçã? se transforma em um formato url aceitável sendo 

    Algu%C3%A9m+viu+minha+ma%C3%A7%C3%A3%3F

    <?php
    $texto = urlencode('Alguém viu minha maçã?');
    $textoB = urldecode($texto);
    echo("Texto codificado em url:"
    . "<p>{$texto}</p>"
    . "<hr />"
    . "<p>Texto decodificado da url</p>"
            . "{$textoB}");

     

    Mas como você mesmo disse você precisa de um conversor de texto.

    Eu criei um método em uma classe para justamente fazer o que você espera só não posto o código porque o forum estragaria dados de string da mesma, pois o método em questão remove tudo que não for caractere aceitável. Então você terá que fazer o download:

    https://drive.google.com/file/d/1VHHiotb60BajGBdc9XoGsHONuXTu_Ylt/view?usp=sharing

    <?php
    require_once(__DIR__ . DIRECTORY_SEPARATOR . 'StrClean.php');
    $clear = new StrClean();
    $texto = $clear->formatStr('Alguém viu minha maçã?');
    echo($texto);
    // Resultado:
    // Alguem-viu-minha-maca

     

    Veja também:

    echo(strtolower($texto));
    // Resultado:
    // alguem-viu-minha-maca


  10. Sim... Manipulando o get:

    <?php
    $entrada = (isset($_GET['exemplo']) && !empty($_GET['exemplo']) ? $_GET['exemplo'] : false);
    switch($entrada) {
      case 'idx':
        $arquivo = 'arquivo_qualquer.php';
        break;
      case 'outro_exemplo':
        $arquivo = 'outro_arquivo.php';
        break;
      default:
        $arquivo = 'arquivo_padrao.php';
        break;
    }
    include($arquivo);

    Isso ficaria no index.php, e toda vez que um parâmetro de url exemplo existir ele vai incluir o arquivo de acordo com o valor caso não um arquivo padrão é incluído.

    Então se a url for

    http://localhost?arquivo=idx&id=123

     

    Quer dizer que arquivo_qualquer.php será incluído então o parâmetro id você poderá manipular-lo no arquivo aberto.

     

    Isso é uma questão de rotina quando trabalhamos com url's amigáveis.


  11. 13 horas atrás, Numero 0800 disse:

    A minha duvida é a seguinte ---> Como eu faço para que sempre que eu preencher um formulário o site criar automaticamente uma DIV com as informações que foram ali inseridas?

    Faça leitura via back-end de um local de armazenamento, se existirem dados exiba eles..

     

    13 horas atrás, Numero 0800 disse:

    A minha duvida é a seguinte ---> Como eu faço para que sempre que eu preencher um formulário o site criar automaticamente uma DIV com as informações que foram ali inseridas?

    Isso vai depender do back-end.... No caso esse fórum usa php, mysqli, e sql.

    No caso usar PDO é bem melhor do que mysqli.

     

    Nesse tópico mostrei um basicão e como utilizar PDO:

    https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/

     

    Nele mesmo temos um simples exemplo de inserir dados, também ler e ser exitem dados exibir-los.

    No mais você deve se aprofundar nos conceitos pois o guia é voltado para primeiro passo nesses quesitos, e jamais deve ser usados de tal forma em uma aplicação final.


  12. 4 horas atrás, Tommoraes disse:

    Isso mesmo, porém como faço pra programar meu texto?

    Uai segue o mesmo conceito....

     

    <button onclick="escrever('meu texto')"></button>
    <input id="aqui" />
    <!-- 
    caso não seja um input
    <div id="aqui"></div>
    -->
    
    <script>
    function escrever(parametro) {
      if (parametro) {
        document.getElementById('aqui').value = parametro;
        /*
        //caso não seja um input
        document.getElementById('aqui').innerText = parametro;
        */
      }
    }
    </script>

     


  13. 3 horas atrás, Numero 0800 disse:

    Quero que isso seja possível sem a necessidade das pessoas terem que estar logadas no site, acredito então que seria baseado no IP da pessoa

    Isso pode gerar uma quantidade enorme de SPAN....

    Pode usar COOKIES para isso. Não existe forma precisa de regatar o IP, porque depende do servidor de acesso e não necessariamente o IP da máquina.

     

    3 horas atrás, Numero 0800 disse:

    Só sei usar HTML, CSS e JavaScript.

    Aí que está o problema pois é necessário back-end para tal ação.


  14. Certo...

    Reveja a codificação geral do seu projeto (Arquivos e cabeçalhos).

    Os arquivos devem está na codificação UTF-8 sem BOM.

    O charset deve ser UTF-8.

    Reveja a codificação da forma que os dados são criados.

    Exemplo:

    utf8_encode('Olá mundo');

    Se os arquivos e cabeçalhos estiverem corretamente em uft-8 o encode se torna desnecessário.

     

    Outra forma é usar entidades html ao invés de codificação.

    htmlentities('Olá mundo');

     


  15. Para deixar algo mais claro vamos de um exemplo (isso seria minha arquitetura você pode fazer conforme suas necessidades):

     

    Tabela

    CREATE TABLE `notificar` (
        `status` ENUM('nova','antiga'),
        `usuario` int(9),
        `titulo` varchar(100) NOT NULL DEFAULT '',
        `dia` date NOT NULL,
        `mensagem` text
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    • Em status temos a condicional nova e antiga.
    • Toda vez que uma notificação é inserida ela vai como nova, então se o usuário a ver alteramos esse valor para antiga.
    • Em usuario registramos o id da conta daquele usuário para que possamos fazer a consulta e somente ele receba sua notificação.
    • Em titulo poderemos dar um título a notificação exemplo "Você tem uma notificação em blablabla"
    • Em dia poderemos registrar a data que a notificação foi lançada.
    • Em mensagem transcrevemos o conteúdo.

     

    Então para que somente o usuário específico receba suas notificações fazemos a consulta.

    "SELECT * FROM notificar WHERE usuario = '{$ID_DO_USUARIO}'"

    Esse $ID_DO_USUARIO pode ser uma cessão que o identifique.


  16. A lógica é simples cara...

    Bem, você terá uma tabela para armazenar essa notificação.

    Enviou mensagem, salva o registro na tabela de notificação.

    Em sua estrutura HTML você terá um local onde a consulta de notificação será feita, se tem alguma registro você indica da forma que achar melhor.

     

    Agora poder notificar em tempo real é um pouco mais complexo, mas simples pois estaremos fazendo a mesma coisa só iremos depender de javascript.

    De fato nunca mexi com esse lance de notificação em tempo real, mas está em meus planos implementar em meu website e o caminho a segui é só ler isso:

    https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API

    https://developer.mozilla.org/pt-BR/docs/Web/API/notificacoes

     


  17. O melhor caminho seria corrigir qualquer erro.

    Mas você pode Ofuscar o erros do servidor (Não aconselho)...

    Porém só faça isso na aplicação final, pois enquanto estiver em produção os erros são vitais a aparecerem, se não aparecem não há como concerta-los.


  18. function gerarSenha() {
      var i = 0, p = '', t = Date.now();
      while (i != 42) {
        i++;
        p += Math.floor(Math.random() * 10);
      }
      p += t;
      return(p);
    }

    O resultado será um número de 55 dígitos aleatórios onde é impossível se repetir, pois seus últimos 14 dígitos é determinado pelo ano, mês, dia, hora, minuto, segundo, décimo e milésimo.

    Porém prefiro fazer coisas desse jeito em linguagem de servidor, pois o javascript que faz é a própria máquina do usuário.

×

Important Information

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