Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Posts postados por Omar~


  1. É o seguinte preciso fazer uma consulta em uma tabela cujo existe relação de valores em outra.

    Mas que os resultados só poderão existir da seguinte forma.

    • Tabela-B (onde a pesquisa é feita) deve está com a mesmo valor de uma coluna na Tabela-A.
    • Ambas tabelas possuem uma coluna de status (que significa ativos) e em ambas tabelas por essa coluna só podem voltar resultados caso sua coluna referente tenha o status 1.

    Em resumo são 5 condições para que haja resultado.

    Montei a seguinte sintaxe:

    SELECT
        sectors.s_status,
        sectors.s_hash,
        sectors.s_title,
        sectors.s_link,
                    
        pages.p_status,
        pages.p_title,
        pages.p_link,
        pages.p_sector,
        pages.p_content_b
    FROM
        sectors
    INNER JOIN
        pages
    WHERE
        sectors.s_hash = pages.p_sector
    AND (pages.p_title LIKE '%{$search}%'
        OR pages.p_content_b LIKE '%{$search}%')
    AND (sectors.s_status = '1'
        AND pages.p_status = '1')
    ORDER BY
        pages.p_title ASC

     

    Está funcional como previsto. Porém acho que ficou mau feita... Teria uma jeito melhor para fazer?

     

    E mais uma coisa....

    Como a pesquisa busca tanto por título quanto por conteúdo.

    Digamos que eu tenha uma string "teste" como título na coluna "p_title" na tabela "pages" e no mesmo resultado também tenho na coluna a mesma string "teste" em "p_content_b"....

    Exemplo:

    Citar

    Título: Teste de expressão

    Conteúdo: Fazendo o teste

    Logo com minha query terei 2 resultados só para uma página.

    Teria como eu filtrar essa situação para que somente o título seja um resultado ignorando o valor da outra coluna? (Obs.: Isso já faço durante o loop de repetição no PHP, mas queria uma forma de fazer na query) "Limitar o resultado não deu certo...."

     


  2. Primeiro que você não poderá usar 

    <img src="img/BANNER.png" width="1400" height="400">

    Porque tem que adaptar e essas propriedades tornam a imagem de tamanho fixo

     

    Um jeito sem abranger outros recursos e sem analisar seu CSS:

    No HTML:

    <img src="img/BANNER.png" class="adaptavel" alt="banner"/>

    No CSS:

    img.adapatavel {
      max-width: 1400px;
      min-height: 400px;
      width: 100%;
      height: 100%
    }

     

    Só usei o recurso "inspecionar elemento" e editei seu css e html.

     


  3. 2 horas atrás, danicarla disse:

    imagem e quiser que ela mude de cor

    Mudar imagem de cor? Você diz plano de fundo "background"?

     

    Em fim segue a mesma questão....

    Só que uma imagem provém de elemento <img>  não dar.... E dar...

    <style>
        .exemplo > .imagem-b {
            display: none
        }
        .exemplo:hover > .imagem-a {
            display: none
        }
        .exemplo:hover > .imagem-b {
            display: block
        }
    </style>
    
    <div class="exemplo">
        <img src="imagem-a.formato" alt="" class="imagem-a"/>
        <img src="imagem-b.formato" alt="" class="imagem-b"/>
    </div>

    Na verdade não estamos trocando a imagem apenas ocultando uma e exibindo outra... Para esse tipo de situação eu prefiro usar javascript e realmente trocar o valor do atributo SRC.

     

    Porém podemos fazer de forma simples com o css.

    <style>
        .exemplo > .imagem {
            background-image: url('imagem-a.formato');
            background-position: center;
            background-repeat: no-repeat;
            background-size: contain;
            height: 100px
        }
        .exemplo:hover > .imagem {
            background-image: url('imagem-b.formato') !important
        }
    </style>
    <div class="exemplo">
        <div class="imagem"></div>
    </div>

     


  4. No console temos acesso a tudo que foi renderizado pelo browser.... Mesmo que exista qualquer tipo de bloqueio nenhum script pode interferir nessa questão...

     

    Em outro caso podemos fazer o download do código e de seus elementos, o browser irá baixar tudo que é visível em tela e algumas coisas a mais, ou seja tudo que ele renderizou.... Mesmo que exista qualquer tipo de bloqueio nenhum script pode interferir nessa questão...

    Ele só não fará download de recursos do servidor, que reitera que se bloquear pelo servidor o browser não irá executar pois não é entregue a ele.


  5. Nesse caso o onclick não adianta pois esse evento pega  ação do click, o que temos de fazer é detectar se o input foi alterado.

    document.getElementById('file').addEventListener('change', function (e) {
        e.preventDefault();
        var file = e.target.files[0]; // Obtemos o arquivo anexo ao input
        var ext = (file.name).substr((file.name).lastIndexOf('.') + 1); // pegamos o restante do nome do arquivo a partirr da última ocorrencia do ponto
        if (ext == 'jpg' || ext == 'JPG' || ext == 'jpeg' || ext == 'JPEG'
                || ext == 'gif' || ext == 'GIF'
                || ext == 'bmp' || ext == 'BMP'
                || ext == 'png' || ext == 'PNG' || ext == 'x-png') {
           // Liberar qualquer ação aqui pois é uma imagem e do formato aceito
        } 
    }, false);

     

    Não entrei em detalhes sobre a ação a se tomar caso a imagem seja aceita, porque não sei qual resultado final que deseja.

    Minha sugestão é que o botão para submeter o formulário não exita, e seja criado dinamicamente quando a função permitir a imagem.

     

    Lembrando que você já pode restringir qual arquivo é permitido selecionar já no input.

    <input type="file" accept=".jpg, .jpeg, .png, .gif, .bmp" />

    Não se esqueça de validar a extensão também no servidor, tanto html como javascript pode ser alterado pelo usuário.

     


  6. Basicamente o que você tem são elementos com largura fixa, ou seja não importa a resolução eles vão sempre possuir a mesma largura.

    Ou caso a muitos overflow o que causa a rolagem e não o ajuste na resolução.

     

    Bem acessei o link fiz o download do código fonte e refiz a estrutura que estava cheia de elementos não usados, e dei uma arrumada no css que havia muita coisa inútil.

    Agora é só aplicar responsivo usando media query e ajustar cada elemento de acordo com a resolução.

     

    HTML

    <!DOCTYPE html>
    <html lang="pt-BR">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <link rel="stylesheet" href="./css/main.css">
            <title>Juliana Parra</title>
        </head>
    
        <body>
            <header class="menu-principal">
                <div class="logo">
                    <a href="http://julianaparra-dev.com/index.html">
                        <img src="./img/logo.png" />
                    </a>
                </div>
                <div class="links">
                    <ul>
                        <li><a href="http://julianaparra-dev.com/index.html">Início</a></li>
                        <li><a href="http://julianaparra-dev.com/sobre.html">Sobre</a></li>
                        <li><a href="http://julianaparra-dev.com/portifolio.html">Portifolio</a></li>
                        <li><a href="http://julianaparra-dev.com/contato.html">contato</a></li>
                        <li>
                            <a href="https://github.com/Parrajuliana" target="_blank">
                                <img src="./img/github.png" alt="Meu github">
                            </a>
                        </li>
                        <li>
                            <a href="https://www.linkedin.com/in/juliana-do-a-parra-00701818a/" target="_blank">
                                <img src="./img/linkedin.png" alt="Meu linkedIn">
                            </a>
                        </li>
                    </ul>
                </div>
                <div style="clear: both"></div> <!-- Limpar todos flutuantes antes de prosseguir -->
            </header>
    
            <div class="imagem-fundo"></div>
            <div class="container"></div>
            <div class="imagem-miolo">
                <img class="imagem-bolinhas" src="./img/imagem_centro_icones.png" alt="">
            </div>
            <div class="texto">
                <!-- Em HTML 5 não se usa mais a tag <strong>, é recomendação da W3.org -->
                <p><span style="font-weight: bold">Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
                    Dolore ullam ratione numquam repellendus enim, reprehenderit molestias,
                    excepturi tempore nemo porro vel sequi ea quisquam velit sunt?
                    Recusandae quidem aperiam tenetur.</p>
                <div class="botao">
                    <a class="bt" href="http://julianaparra-dev.com/sobre.html">saiba mais</a>
                </div>
            </div>
            <div class="rodape">
                <main>
                    <div class="direitos-reservados">
                        2019 Todos os Direitos Reservados
                    </div>
                </main>
            </div>
        </body>
    </html>

     

    CSS

    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box
    }
    html {
        overflow-x: hidden
    }
    body {
        margin: 0;
        padding: 0;
        font-family: 'Open Sans', sans-serif;
        background-color: #ffffff
    }
    .menu-principal {
        background-color: #252323;
        height: 68px       
    }
    .logo, links {
        float: left;
        padding: 10px
    }
    .logo {
        width: 30%
    }
    .links {
        height: inherit;
        line-height: 68px
    }
    .links > ul {
        list-style: none;
        margin: 0
    }
    .links > ul > li {
        padding: 0 10px;
        display: inline-block
    }
    .links > ul > li > a {
        color: #8b8b8b;
        font-size: 16px;
        text-decoration: none;
        text-transform: uppercase
    }
    .links > ul > li:nth-child(5) {
        padding: 0 0 0 10px
    }
    .links > ul > li > a:hover {
        color: #00bac6
    }
    .imagem-fundo {
        background-image: url(../img/imagem_home.png);
        background-position: center;
        background-repeat: no-repeat;
        background-size: 100% 100%;
        min-height: 200px
    }
    .container {
        background: #00aa9b;
        background: linear-gradient(135deg, #00aa9b 8%,#2989d8 45%,#207cca 52%,#00ba3a 100%);
        width: 100%;  
        height: 30px
    }
    .imagem-miolo {
        text-align: center
    }
    .imagem-bolinhas {
        margin-top: 20px;
        max-width: 100%;
        max-height: 260px;
        min-height: 200px
    }
    .texto {
        max-width: 600px;
        height: 300px; 
        margin: auto;
        text-align: center;
        font-size: 25px;  
        padding: 20px
    }
    .botao {
        font-weight: bold;
        margin-top: 10px
    }
    .bt {     
        text-decoration:none;   
        font-size: 15px;
        color:white;
        padding: 10px 20px;
        background: linear-gradient(#0083ab, #00ba3b);
        border-radius: 10px;
        border: 1px solid;
        box-shadow: 0px 1px 3px rgba(0,0,0,0.5) 
    }
    .rodape {
        color: #c1c1c1;
        background-color: #252323;
        height: 60px
    }
    .direitos-reservados {
        padding: 20px;
        float: right
    }

     

    Um ponto que notei que não vai ficar legal é a imagem "imagem-bolinhas", eu pessoalmente faria um composto de alguns elementos para gerar algo similar ou idêntico ao da imagem, uso de ícones vetoriais seria de grande utilidade nessa situação.

    Outro ponto que devo ressaltar... Evite ao máximo uso de imagem PNG principalmente se são grandes, pois são muito pesadas para carregar, prefira usa JPG ou JPEG.

     

    É de muito prático aderir a framework's ou css padronizados para construir a base do layout.

    Caso interesse eu mesmo criei um arquivo css para definições básicas de estrutura https://github.com/Spell-Master/sm-web/blob/master/css/sm-default.css


  7. A solução irá gerar mais problema do que o problema em sí.

    Quando se acessa um website pela primeira vez, o browser faz o download de arquivos js e css e armazena-os em cache, para que da próxima vez aquele website seja carregado mais rápido. Ou seja ele não fará o download novamente e sim reutilizará os dados já em cache.

     

    Se pensar também sobre as tarifas mobile cobrado no brasil que são abusivamente caras, forçar um novos downloads dos arquivos é "dar um tiro no pé".

     

    O ideal é que termine a aplicação só então disponibilize online para acesso assim você evita qualquer problema.

    Você pode configurar navegadores para não salvar cache durante o processo de produção, assim terminar sua ferramenta só então colocar-la em nuvem.

     

    Não irei postar como você pode forçar esses novos downloads porque isso vai contra as boas práticas na web e muitos leigos adotariam esse método poluindo ainda mais a web. Mas posso lhe responder por MP, caso seja vitalmente necessário "coisa que não acho que seja".


  8. 7 horas atrás, gramosiri2 disse:

    no caso a variavel comparar vai receber os valores de [cargo_id] que faz relacionamento com o id_cargo?

    Sim... Digamos que o usuário X tem seu ID 3, logo a comparação será feita com isso.

     

    Eu sugiro que você armazene esse ID do usuário em uma sessão durante o login.

    Então ao acessar essa página você faz a comparação dos dados no loop "no caso id_cargo" é o mesmo da sessão daquele usuário.

     

    Seria o mesmo que um debug desses

    $comparar = 3;
    $voltas_no_loop = 0;
    while ($linha = mysqli_fetch_array($consulta_cargo)) {
        $voltas_no_loop++;
        echo 'Volta atual: ' . $voltas_no_loop . ' / ' . ($linha['id_cargo'] == $comparar ? "Sim esse é o ID: {$comparar}" : "Não é o id: {$comparar}") . '<br />';
    }

     


  9. Unicamente você tem um bloco a esquerda e outro a direita.

    Você pode alinhar eles com float por exemplo.

    <style>
        .base:after,
        .base:before {content:""; display:table; clear:both}
        .base > .esquerda,
        .base > .direita {display: table-cell; float:left}
        .base > .esquerda,
        .base > .direita {padding:10px}
        
        .base {
            height:600px
        }
        .esquerda {
            width:200px;
            height:inherit
        }
        .direita {
            width:600px;
            height:inherit
        }
        .filho_esquerda {
            width:200px;
            height:140px;
            margin-bottom:10px;
            background:red;
        }
        .filho_direira {
            background:red;
            width:590px;
            height:590px
        }
    </style>
    
    <div class="base">
        <div class="esquerda">
            <div class="filho_esquerda">A</div>
            <div class="filho_esquerda">B</div>
            <div class="filho_esquerda">C</div>
            <div class="filho_esquerda">D</div>
        </div>
        <div class="direita">
            <div class="filho_direira"></div>
        </div>
    </div>
    

    Porém esse exemplo temos o bloco base que incorpora todos os outros á esquerda do se elemento pai no caso o body.

    Para centralizar-lo temos que definir que ele possui uma largura, essa largura deve ser o suficiente para compor o tamanho de todos elementos internos para não causar um overflow. Tendo isso em mente bastar automatizar sua margem exemplo:

    .base {
      height:600px;
      width:900px;
      margin:auto
    }

     

    Outra forma que podemos fazer é dizer que a base possui sua largura automatizada,

    E que seus filhos vão cer centrais.

    Assim sendo quando esses filhos possuem uma largura fixa ou relativa eles vão centralizar. Então para alinhar-los usamos o inline-block.

    Exemplo só mudando o css da questão acima:

    .base {
        width:auto;
        text-align:center
    }
    .esquerda, .direita {
        display:inline-block;
        vertical-align:top
    }
    .filho_esquerda {
        background:red;
        width:200px;
        height:140px;
        margin-bottom:10px;
    }
    .filho_direira {
        background:red;
        width:590px;
        height:590px
    }

     

    Quando se tem a noção que tudo que existe em tela são blocos sobrepondo outros blocos fica muito simples projetar e criar qualquer tipo de layout.

     


  10. Toda vez que o loop faz a volta ele escreve a opção com os dados de acordo com os valores obtidos naquela volta.

    Então é simples, bastando fazer uma comparação se o que vai ser escrito na volta atual condiz com o valor que você queira que seja selecionado.

    echo "<option value=\"{$linha['id_cargo']}\" ". ($linha['id_cargo'] == $comparar ? 'selected' : null) .">{$linha['nome_cargo']}</option>";

    $linha['id_cargo'] == $comparar

    Ou seja se na volta atual id_cargo for igual ao $comparar irá escrever a atual opção como selecionado.

    Essa variável $comparar você terá que definir ela fora do laço de repetição sendo seu valor o mesmo que será transcrito como selecionado.


  11. Isso depende do ambiente e do que realmente quer validar...

    Em resumo fica a dica:

    if (preg_match('/^([a-zA-Z À-ú]+)$/i', $texto) {
        // O texto repassado é um tipo de nome válido
    } else {
       // O texto repassado não é um nome válido 
    }
        
    if (preg_match('/^([a-zA-Z]+)$/i', $texto)) {
      // O texto repassado só possui caracteres alfabéticos
    } else {
      // O texto repassado não possui caracteres alfabéticos
    }

     


  12. Não precisa e nem é o ideal que manipule isso com javascript piorou ainda usando jQuery...

    <html>
      <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      </head>
      <style>
        * {
          box-sizing: border-box
        }
        body {
          margin: 0;
          padding: 0
        }
        .imagem-ajustavel {
          min-height: 200px; /* A imagem nunca terá menos de 200px */
          max-height: 500px; /* A imagem nunca terá mais de 500px, sendo ela maior a isso ou igual */
          width: 100% /* A imagem terá total extensão do seu elemento pai */
        }
      </style>
      <body>
        <img src="sua_imagem.formato" class="imagem-ajustavel"/>
      </body>
    </html>

     


  13. Aqui você obtém a extensão:

    $extension = $file->getClientOriginalExtension();

    Aqui você cria o novo nome do arquivo:

    $new = rand(); // Sugiro que use a função time(); rand() pode gerar nomes duplicados a longo prazo....

     

    O que podemos fazer é criar um atributo que será tratado como array e a cada volta do loop adicionamos um novo índice a esse atributo:

    Na verdade você já está fazendo isso aqui:

    $images[]=$new. '.' .$extension;

     

    Então basta que não trate $images como array de escopo e sim como atributo da classe:

     

    private $images = []; // Adicione esse novo atributo em sua classe

     

    Removendo isso:

    $images=array();

    E substituindo isso

    $images[] = $new. '.' .$extension;

    Por

    $this->images[] = $new. '.' .$extension;

     

    Basta então criar um método para retornar esse valor:

    public function verArray() {
      return ($this->images);
    }
    

     

    Agora então poderá consultar o nome de todas as imagens geradas pelo método

    cadastro_info

     

    Citar

    Caso queira associar numericamente cada índice basta criar uma variável com indicar quantas voltas o loop deu.

    Antes do foreach entre com a variável

    $contagem = 0;

    então ao registrar os índices:

    $contagem++;

    $this->images[$contagem] = $new. '.' .$extension;

     


  14. @paulojk

    Um jeito mais simples para você validar números de telefone é usando expressões regulares.

    Aceita todos formatos de telefone de acordo com a agência ANATEL aqui do brasil

    Citar

         +55 (99) 99999-9999
         99 99999-9999
         9999-9999
         9999999999999

     

    Exemplo:

    function telefone($numero) {
      if (preg_match('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $numero)) {
        return (true);
      }
    }

     

    Demostração:

    $valido = "99 99999-9999";
    
    if (telefone($valido)) {
      // Numero de telefone é valido
    } else {
      // Numero de telefone é inválido
    }

     

×

Informação importante

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