Jump to content

Omar~

Members
  • Content count

    754
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Omar~


  1. Eu faria em uma tabela só. Visando que todas três tabelas são praticamente idênticas

    No caso das colunas cpf/cnpj/cnh poderia criar uma documento_id e salvar os valores, tambem criaria uma coluna só para o tipo se é funcionário, cliente ou grupo.

    nome

    tipo                     - Salvaria se é Funcionário, Cliente e Grupo 

    documento_id  - Salvaria CPF CNPJ e CNH

    matricula

    nome_usuario

    senha_usuario

    email_usuario

    contato_usuário


  2. Provavelmente 99% de certeza que essa função (antiInjection) está limpando todos os caracteres indesejáveis como Tags ou laços que são usados como código operador de programação, SQL-Injecj nada mais é que passar um código para execução, toda vez que um dado é lido se ele for código é executado.

     

    Citar

    <?php
    $string = "<b>Olá</b>";
    $stringSemCode = htmlspecialchars($string);
    echo $stringSemCode; // Isso vai mostrar: <b>Olá</b>
    echo "<hr>";
    $stringNormal = htmlspecialchars_decode($stringSemCode);
    echo $stringNormal; // Isso vai mostrar: Olá em font BOLD

     


  3. Aqui a solução: (Resolvido)

     

    A ordem de acesso ao índice stdClass será pela ordem da busca na query. Foi só usar a lógica do FETCH_NUM

    Assim sendo pode-se acessar o valor específico portanto que seja na ordem que esteja na array.

    <?php
    $arr = (object) [
        $a = ['Nome' => 'Luiza', 'Idade' => '10'],
        $b = ['Nome' => 'Miau', 'Animal' => 'Gato']
    ];
    echo "<pre>";
    var_dump($arr);
    echo "</pre>";
    
    foreach ($arr as $value) {
        extract($value);
    }
    echo "A menina {$Nome} tem {$Idade} anos de Idade, e seu animal de estimação é um {$Animal} que se chama {$Nome}";

     


  4. Primeiro pelo que ja foi dito:

    <link href="../css/estilo.css" media="screen and (min-width: 1500px)" rel="stylesheet" type="text/css">

     

    - É obrigatório que a resolução seja esse para que seja lido esse arquivo.

    - Outro caso... Também tenho problemas em usar min-width para medias sempre dar certo usando max-width, pelo menos comigo.

    Limpe o histórico do navegador, e limpe seu cache na pasta do sistema. Abra o navegador pressione Crtl+Shift+N, em janela anônima acesse o site. Deve resolver se o problema for cache. (Janela Anônima não salva cache)


  5. Usei o Avast por um bom tempo... De volta e meia (praticamente todo mês) tinha que formatar minhas máquinas por causa de Malware, depois fiz uma experiência com EssetNod32, também tive problemas.

    Já estou para completar 2 anos que uso o Kaspesky Total Security, e desde que comecei a usar-lo nunca tive problemas.

    O preço pode ser meio salgado, mas mediante a tranquilidade que ele passa, se levar em consideração é até barato.


  6. Opa!

    Não sei se é isso que procura mas, fiz algo aqui que atende meus requisitos, talvez seja o mesmo que procura...

    Citar

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)$ ?page=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ ?page=$1

     

    Nesse caso no .htaccess vai  fazer o seguinte:

    Tudo que for url que tiver www.meusite?get=minha_pagina vai se tornar www.meusite/minha_pagina

     

    No caso um link como estou usando com ajax e aplicando uma função para pegar o que vem da global GET e carregar o arquivo pelo nome do GET recebido.

    <a href="?page=nome_do_arquivo">LINK</a> 

    Eu posso deixar assim:

    <a href="nome_do_arquivo">LINK</a> 

     

    Na url vai ficar www.meusite/nome_do_arquivo

    Se digitar também isso vai carregar o mesmo se digitar www.meusite?page=nome_do_arquivo


  7. 4 horas atrás, wootzor disse:

    Antes de mais, acho que é pertinente rever a estrutura de tabelas pois essas entidades (marido e mulher) não fazem muito sentido.

     

    Dito isto, qual a estrutura das tabelas?

     

    Hipoteticamente, pode ser feito algo do tipo:

     

    
    SELECT marido.nome AS Marido, esposa.nome AS Esposa FROM marido INNER JOIN esposa ON marido.PK = esposa.FK;

     

    E usar o método PDO::FETCH_ASSOC para aceder aos campos respectivos.

     

     

    Falei só como exemplo no nome de tabelas para chegar onde queria, que é ter uma tabela X com índice Y, e outra tabela W com índice também Y. Porque como fazer a busca é simples, o problema é distinguir na array multidimensional os mesmos índices.

     

    Vou tentar explicar novamente.

    Na tabela X eu tenho o Dono com uma coluna nome que é para armazenar o nome do proprietário, sei lá de um carro por ser... Lembrando que é um exemplo....

    Na tabela W eu tenho uma coluna nome, que é para armazenar a marca do carro.

    Mais expecífico ficaria uma query assim (Sem usar prepare pois é só um exemplo!)

    Citar

    SELECT 
    `dono`.`nome`,  
    `dono`.`compras`, 
    `dono`.`carro_id`, 
    `carro`.`nome`, 
    `carro`.`marca`, 
    `carro`.`carro_id` 
    FROM `dono`, `carro` 
    LEFT JOIN `login` ON `login`.`id_propietario` = `carro`.`id_propietario` 
    WHERE `dono`.`carro_id` = `carro`.`carro_id`
    AND `dono`.`comprado` > '1' 
    ORDER BY `dono`.`compras` 
    DESC, `carro`.`marca` 
    DESC LIMIT 0, 100

     

    Note que tenho a tabela dono que é para armazenar os dados do dono do carro, e a tabela carro que é para armazenar os dados dos carros, e chego ao ao nome do proprietário relação pelo "id_propietario" que está na 3º tabela login por exemplo.

    Ou seja se eu usar FETCH_OBJ para chegar o nome, vou somente ter o resultado do nome ao qual coloquei primeiro na ordem de busca na query, se se eu usar FETCH_ASSOC (Coisa que não gosto) também vai dar no mesmo.

     

    Obs.: Não usaria tabelas assim, e se chegasse até mim um sistema desorientado desse sugeria a modificação.

    Mas pode ser que um cliente me venha com um banco de dados mal construído assim e não queira que ele seja modificado.

    No mais com FETCH_NUM vai tranquilo:

    Seria mais ou menos assim:

    Citar

    echo $resultado[0]; // Aqui mostra o `dono`.`nome`,

    echo $resultado[3]; // Aqui mostra o `carro`.`nome`, 

     

    O objetivo é ter um resultado como esse:

    echo "O dono do carro é: {$resultado[0]}, ele comprou o carro: {$resultado[3]}, de marca {$resultado[4]}, esse propietário já comprou {$resultado[1]} carros";

     


  8. Bom tenho uma dúvida sobre isso, digamos que eu vá fazer a leitura de 2 tabelas ao mesmo tempo com LEFT JOIN, RIGHT JOIN ou INNER JOIN tanto faz.

    Digamos que seja 1 tabela marido a outra esposa. Então tenho a coluna "nome" em ambas tabelas para armazenar o nome do marido e da esposa.

    Então se eu fazer a query recebo os dados em array e faço um forech e pegar o resultado de cada nome.

    Citar

    foreach ($array as $value) {
        echo $value->nome;
    }

     

    Como faço para separar no nome de cada 1, como eu faria para distinguir numa exibição os nomes?

    Exemplo:

    Citar

    foreach ($array as $value) {
        echo "O Marido é: {$value->nome}";

        echo "E a Esposa dele é: {$value->nome}";
    }

     

    Porque até então só consigo fazer com PDO::FETCH_NUM relacionando o número com o índice dos dados na array.


  9. O mais ideal é você aplicar um filtro veja:

    <?php
    $post = (object) filter_input_array((htmlspecialchars(INPUT_POST)), FILTER_DEFAULT);
    
    if ($post && isset($post->ENVIAOK)) {
        $cadastrar = new Registrar();
        $cadastrar->InsertDados($post->nome, $post->sobrenome);
    }

    Só que de nada adianta se não houver tratamento de strings antes de solicitar o cadastro.

    Porque o filtro acima somente converterá códigos com base em string, já garantindo uma leve segurança contra injeção de código malicioso.

    Ou seja antes deve-se enviar esse dados para uma função limpar todo caractere ou decodificar-los de forma a que não sejam códigos de programação, ou simplesmente retornar um erro forçando a pessoa a não usar certos caracteres, se tudo estiver ok, só aí então com os dados já limpos pode-se requisitar o registro.

    • +1 1

  10. Não. Provavelmente exite alguma outra função que esteja vinculada a div PAI e ainda não foi encerrada.

    Ou alguma outra função delimita as instruções da div PAI, assim sendo todo seu conteúdo é a div PAI

    Portanto todo função para elementos internos não vão disparar.

     

    Veja um exemplo:

    Spoiler
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="jquery-3.2.1.js" type="text/javascript"></script>
            <script type="text/javascript">
                $(document).ready(function () {
                    $('.move-a-caixa').click(function () {
                        $('.caixa1').appendTo('.caixa2');
                    });
                });
            </script>
            <style>
                .caixa1 {
                    background-color: #ff0000;
                    width: 200px;
                    height: 200px
                }
                .caixa2 { 
                    background-color: #000000;
                    width: 200px;
                    height: 200px;
                    padding: 20px
                }
                .move-a-caixa {
                    padding: 10px 18px;
                    background-color: #929292;
                    border: none;
                    cursor: pointer
                }
                .move-a-caixa:hover {
                    background-color: #0080ff
                }
            </style>
        </head>
        <body>
            <div class="caixa1"></div>
            <div class="caixa2"></div>
            <br/>
            <button class="move-a-caixa">Clique para mover</button>
        </body>
    </html>

     

     


  11. Acho que assim vai, "não testei mas acho que vai de boa!"

     

    Primeiro criei a função com jQuery para executar o ajax

    Spoiler
    
    function ajaxCarrega(campo, arquivo) {
        $.ajax({
            dataType: 'html',
            method: 'GET',
            url: arquivo,
            success: function (html) {
                $(campo).html(html);
            }
        });
        return false;
    }

     

    Note que possui 2 parâmetros:

    • Campo é o nome da div onde vai ser carregado um arquivo
    • Arquivo é o nome e diretório para o arquivo que vai ser exibido, exemplo '../../pasta/arquivo.php'

     

    Vou simular que estou na index e o arquivo que vai ler está na pasta raiz do site e não em sub pastas.

    Então na index eu coloco a chamo a função:

    Spoiler
    
    <script type="text/javascript">
        $(document).ready(function () {
            ajaxCarrega('.mostra-o-ajax', 'meu-arquivo.php');
        });
    </script>
    
    <!-- #Local para abrir o arquivo que virá do ajax -->>
    <div class="mostra-o-ajax"></div>

     

     

    Nesse caso tenho a div.class mostra-o-ajax  que vai se onde a mágica vai acontecer e o meu-arquivo.php que fará todas as demais funções PHP de leitura de banco ou qualquer coisa.

     

    No meu-arquivo.php

    Spoiler
    
    <script type="text/javascript">
        $(document).ready(function () {
            setTimeout(function () {
                ajaxCarrega('.mostra-o-ajax', 'meu-arquivo.php');
            }, 3000);
        });
    </script>
    
    <p>Coloque o conteúdo que fará a leitura de dados e mostrará</p>
    <?php
    
    /*
    Seu conteúdo como desejar
    No caso tudo que tenha no arquivo que tá escrito isso:
    <div id="list"> ... bla bla bla...
    */

     

    Note que no arquivo que vai ser carregado eu usei o setTimeout com delay de 3 segundos.

    Assim sendo toda vez que o arquivo for carregado ele novamente iniciará a contagem dos 3 segundos e carregará ele mesmo na mesma div através da função ajaxCarrega.

     

    Por fim também acho mais viável usar um foreach no array associativo de retorno da PDO "FETCH_ASSOC"


  12. Só para constar, para se fazer isso requer um grau de conhecimento amplo em CSS e PHP.

    Porque você deverá criar uma página que fará a leitura dos elementos e conteúdos em alguma lugar seja num banco de dados ou seja em um arquivo (XML nesse último caso é mais ágil para se fazer).

    Esse fórum usa-se tanto de banco quanto e XML para elaborar o disign que pode ser editado pela IDE que consta no painel administrativo. Uma vez editado e salvo re-escreverá os arquivos XML e salvará os dados necessários no banco, ficando com o PHP a responsabilidade de ler e aplicar o disign.

     

    Enfim o que quero dizer, que é complicado, como sugestão procure pelo ckEditor, existem plugins para ele para se construir web pages, e documentação necessária como proceder (ckEditor é esse mesma aplicação que usamos aqui para postar "escrever" conteúdos)

    • +1 1

  13. 1º - Se não me falha a memória Maria DB só aceita códigos de versões do PHP 7 em diante.

    2º - Separe o que é instrução e o que é sintaxe, coloque a variável entre colchetes: {$login}

    3º - A estrutura da tabela está errado por que você não definiu o limite do campo INT:

    Citar

    product_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT

    4º - Veja se realmente a variável $login é um inteiro e não string.


  14. Primeiro troque isso "<div id="menu">" por "<div class="menu">"

     

    Citar

    .menu ul li .a1:hover {
        background-color: #ffffff
    }

    .menu ul li .a2:hover {
        background-color: #0080ff
    }

    E assim vai editando todos....

     

    Citar
    
    <div class="menu">
      <ul>
        <li><a href="#" class="a1">INICIO</a></li>
        <li><a href="registro.php" class="a2">REGISTRO</a></li>
        <li><a href="#" class="a3">DOWNLOAD</a></li>
        <li><a href="#" class="a4">CONTATO</a></li>
        <li><a href="#" class="a5">DOAÇÕES</a></li>
        <li><a href="#" class="a6">SERVIDOR</a></li>
        <li><a href="#" class="a7">PAINEL</a></li>
      </ul>
    </div>

     

     

     


  15. Sua solução : <div clas="produtos">

    Regras CSS:

    Spoiler
    
    <html>
    	<head>
    		<style>
    			div {
    				font-weight: bold
    			}
    			#identificador {
    				color: blue
    			}
    			.atribuidor {
    				color: green
    			}
    		</style>
    	</head>
    	<body>
    		<div style="color:red">CSS não pode editar esse bloco porque tem grau de importância máxima (Recomendado só em cituações expecíficas)</div>
    		<div id="identificador">CSS pode editar, mas pode não funcionar em disign complexos (Não recomendado em hipótese alguma!)</div>
    		<div class="atribuidor">CSS pode editar e pode existir quantos quiser (Melhor aplicação)</div>
    	</body>
    </html>

     

     

    DIV - ID usa-se uma tralha : #

    DIV - CLASS usa-se um ponto : .


  16. Crie um arquivo PHP e coloque isso nele, após acesse-o:

    Citar

    if (!extension_loaded('PDO') || !extension_loaded('PDO_MYSQL')) {
        echo "<b>SEM DRIVER</b>";
    } else {
        echo "Drives PDO estão instalados!";
    }

     

    Com isso você poderá ver se os drives de funcionamento estão instalados, se não tiver tem que instalar.

     

    E 90% de certeza que o problema é no arquivo conexao.php

     

    Também veja se os drives para o firebird estão devidamente instalados:

    Citar

    foreach (PDO::getAvailableDrivers() as $driver) {
        echo $driver . '<br>';
    }

     

    Normalmente a pessoa habilita as extensões mas não instala os drivers.

    No mais é tudo dizer, porque nunca me mexi com conexões do firebird

     

    Os outros 10% restantes da certeza é:

    Citar

        $login = isset($_POST['login']) ? $_POST['login']: '';
        $senha = isset($_POST['senha']) ? $_POST['senha']: '';

     

    Porque isso são condições ternárias que retornam resultado BOOL

     


  17. Eu não sei qual o truque o geralmente se usa, mas minha técnica para desenvolver responsivos é o seguinte:

    crio um div por exemplo...

    <div class="conteniner">

     aqui dentro crio todo conteúdo do site

    </div>

    No css primeiro faço isso:

    Spoiler
    Citar

    *, *:before, *:after {
        margin: 0; padding: 0;
        -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -moz-box-sizing: border-box;
        box-sizing: border-box; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%
    }

     

    Com isso já previno metade dos problemas de posicionamento, removendo margis padrão e tratando todos elementos como box

     

    Aí para meu conteiner

    Citar

    .conteiner {
        width: 100%;
        margin: 0 auto;
        max-width: 1280px
    }

     

    1280 é a largura de tela do meu monitor, como eu dei um uma largura fixa de 100% e o máximo que pode alcançar é a largura o meu monitor e a margin para o topo é 0 e para direita e esquerda vão ver automáticas

     

    Assim sendo não preciso me preocupar com resoluções maiores do que a minha porque independente do tamanho for maior com outra pessoa meu site só terá isso de largura máxima e centralizada. E como a largura é 100% se for menor a div conteiner vai se ajustar ao novo tamanho.

     

    Outro truque que desenvolvi para me ajudar no ajuste para resposivo é saber em tempo real qual a largura da tela, quando vou redimensionando a a janela do navegador, assim fica muito fácil saber estipular um media query com o elemento que vai ser tratado.

    Veja o código:

    Spoiler
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <script src="jquery-3.2.1.js" type="text/javascript"></script>
            <script type="text/javascript">
                $(document).ready(function () {
                    function larguradatela() {
                        var tamanho = $(window).width();
                        $('.teste-largura').text('LARGURA : ' + tamanho);
                    }
                    $(window).resize(function () {
                        larguradatela();
                    });
                    larguradatela();
                });
            </script>
        </head>
        <body>
            <div class="teste-largura"></div>
        </body>
    </html>

     

     

    #EDIT

    Enquanto a devices Desktop não se preocupe, mais ou menos você deve se preocupar mesmo é com esses ajustes que são de dispositivos móveis:

    Spoiler
    
    /****************************************************************************
    * Tablets em modo paisagem
    *****************************************************************************/
    @media screen and (max-width: 1024px) {
    
    }
    
    /****************************************************************************
    * Tablets em modo paisagem ajuste
    *****************************************************************************/
    @media screen and (max-width: 900px) {
    
    }
    
    /****************************************************************************
    * Tablets em modo retrato
    *****************************************************************************/
    @media screen and (max-width: 768px) {
    
    }
    
    /****************************************************************************
    * Tablets em modo retrato ajuste
    *****************************************************************************/
    @media screen and (max-width: 700px) {
    
    }
    
    /****************************************************************************
    * eReaders
    *****************************************************************************/
    @media screen and (max-width: 600px) {
    
    }
    
    /****************************************************************************
    * eReaders ajuste
    *****************************************************************************/
    @media screen and (max-width: 530px) {
    
    }
    
    /****************************************************************************
    * Smartphones
    *****************************************************************************/
    @media screen and (max-width: 480px) {
    
    }
    
    /****************************************************************************
    * Smartphones ajuste
    *****************************************************************************/
    @media screen and (max-width: 400px) {
    
    }
    
    /****************************************************************************
    * Iphone
    *****************************************************************************/
    @media screen and (max-width: 360px) {
    
    }
    
    /****************************************************************************
    * Iphone ajuste 
    *****************************************************************************/
    @media screen and (max-width: 320px) {
    
    }

     

     

     

    Por que como você disse monitor de 32 polegadas é relativo, porque quem vai definir a resolução em pixels não é o monitor e sim a placa de video/driver do mesmo

    • +1 1

  18. Coloca isso aqui e poste o resultado

     

    Citar

    <?php

    echo "<pre>";

    var_dump($nivel_usuario);

    echo "</pre>";

     

    Se for o que estou pensando isso deve resolver:  $nivel_usuario = (int) $row_nivel['Nivel'];


  19. Nossa que dificuldade numa coisa tão banal :sweat_smile:

     

    Primeiro isso aqui é uma alternativa já que você tem um campo Nivel INT :

    Em 28/06/2017 at 18:51, Gleyson Abreu disse:

    Um exemplo bem básico mesmo:

    
    $nivel = 0 /* 0 para usuario normal e 1 para admin etc.. */
    
    if($nivel == 0 ){
    	echo "Ola você é um usuário comun";
    	echo "<a href=''>Painel de Usuário</a>";
    }else{
    	echo "Olá Administrador (Fulano);
    	echo "<a href=''>Painel de Admin</a>";
    }

     

     

    Agora vamos ao intendimento: Ao logar um user o sistema deve armazenar o valor do campo Nivel em uma sessão, a partir dos índices você define o que vai acontecer.

    Exemplo:

    No arquivo que fará o login

    $_SESSION['nivel'] = // Aqui coloca o resultado da query da coluna Nivel;

    Então toda vez que precisar filtrar o nível é só trocar a variável $nivel do exemplo já citado pela cessão.

     

    Outra caso pode-se fazer assim:

    Spoiler
    
    <?php
    if (isset($_SESSION['nivel'])) {
        switch ($_SESSION['nivel']) {
            case 1:
                // Aqui o menu de todos os usuários com nível 1
                break;
            case 2:
                // Aqui o menu de todos os usuários com nível 2
                break;
            case 3:
            case 4:
                // Aqui o menu de todos os usuários com nível 3 e 4
                break;
            default:
                // Aqui o menu de todos os usuários com nível que não está em nenhuma das condições dessa bateria
                break;
        }
    } else {
        // Aqui o menu de quem está deslogado
    }

     

     


  20. Bom dar para fazer tudo com uma busca só, porém requer atenção na hora de tratar cada coisa.

    Criei esse exemplo bem simples e completo como você pode proceder.

    Spoiler
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="jquery-3.2.1.js" type="text/javascript"></script>
            <script type="text/javascript">
                $(document).ready(function () {
                    // Remove o comportamento original no envio de formulário
                    $('form').submit(function () {
                        return false;
                    });
    
                    // A partir do primeiro select tenho os dados passados por string
                    $('.form-control').change(function () {
                        // Pego o valor do atributo value
                        var str = $('.form-control option:selected').attr('value');
                        // Faço a busca pelas barras que estão na extring assim crio uma array em relação a cada barra
                        var result = str.split('/');
                        // Inejeto os índices da array no value do segundo select
                        $('.contres').val(result[0]);
                        $('.mailres').val(result[1]);
                        $('.foneres').val(result[2]);
    
                        // Isso seria caso quisesse mostrar os resultados
                        //$('.contres').html(result[0]);
                        //$('.mailres').html(result[1]);
                        //$('.foneres').html(result[2]);
    
                        // Exibo o segundo select
                        $('.form-control-contato').show();
                        return false;
                    });
                });
    
                function enviarContato() {
                    var cliente = $('input[name="cliente"]').val();
                    var contato = $('select[name="contato"]').val();
                    var mensagem = $('textarea[name="mensagem"]').val();
                    if (!mensagem) {
                        $('.mostrar-resultado').html('<font color="#ff0000">Digite uma mensagem!</font>');
                    } else {
                        $('.mostrar-resultado').html('<p>Post foi enviado para:' + cliente + '</p><p>O contato é: ' + contato + '</p><p>Memsagem enviada:' + mensagem + '</p>');
                    }
                    return false;
                }
            </script>
        </head>
        <body>
            <?php
            // Essa é a simulação do resultado obtido do objeto $Clientes
            $Clientes = [
                array('login' => 'João',   'mail' => 'maildojoao@joao.com',     'fone' => '11-11-11'),
                array('login' => 'Marcos', 'mail' => 'maildomarcos@marcos.com', 'fone' => '22-22-22'),
                array('login' => 'Lucas',  'mail' => 'maildolucas@lucas.com',   'fone' => '33-33-33'),
            ];
            ?>
            <select class="form-control">
                <?php
                foreach ($Clientes as $value) {
                    ?>
                    <option value="<?= "{$value['login']}/{$value['mail']}/{$value['fone']}"; ?>"><?= $value['login']; ?></option>
                    <?php
                }
                ?>
            </select>
            <form method="post" onsubmit="return enviarContato();">
                <input name="cliente" class="contres" type="hidden" value=""/>
                <select name="contato" class="form-control-contato" style="display: none">
                    <option class="mailres" value="">E-Mail</option>
                    <option class="foneres" value="">Telefone</option>
                </select>
                <br>
                <textarea name="mensagem"></textarea>
                <br>
                <button>Enviar</button>
            </form>
            
            <!-- Isso é só para mostrar o resultado de tudo -->
            <div class="mostrar-resultado"></div>
            
        </body>
    </html>

     

     

    No mais com o formulário você deve enviar os dados para uma arquivo php que tratará dos dados.

    Se quiser saber como manipular facilmente POO junto a jQuery está aqui o exemplo que precisa:

    https://www.youtube.com/playlist?list=PLC60WB-CP2vqZNJXj6XWakU7tEDHb0RQ2

     

    • +1 1

  21. Poste a classe ClienteDAO.

    Porque:

    $ClienteDAO = new ClienteDAO(); // Instância de classe (objeto)

    $Clientes = $ClienteDAO->ConsultaCliente() // Requisição de método da classe ClienteDAO

     

    E o que a classe faz, em particular o método ConsultaCliente? Não deveria ter parâmetros nisso?

     

     


  22. É só ir ajustando cada coisa:

     

    Spoiler

    @media screen and (max-width: 1024px) {
        /* Ajuste os elementos necessários do layout com a resolução de tela até 1024px aqui */
    }

    @media screen and (max-width: 768px) {
        /* Ajuste os elementos necessários do layout com a resolução de tela até 768px aqui */
    }

    /* E assim vai ajustando para as resoluções que forem preciso */

     

    E detalhe: No resposivo no caso flex evite dizer que um elemento tal tem px calcule seu tamanho real em %.

     

    Exemplo:

    Citar

    Digamos que meu conteiner seja de 1280px e eu tenho um bloco de 410px. Ao invés de dizer que ela tem 410px eu digo que ela tem 32%

     

    Digamos que meu conteiner seja de 900px e eu tenho um bloco de 410px. Ao invés de dizer que ela tem 410px eu digo que ela tem 55%

     

    É simples veja: 410 dividido por 1280px =  0,3203125

     

    • +1 1
×

Important Information

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