Ir para conteúdo
Fórum Script Brasil

wash

Membros
  • Total de itens

    400
  • Registro em

  • Última visita

Posts postados por wash

  1. Olá!
    Claro!

    2 horas atrás, Frank K Hosaka disse:
    <a href='#apuracao.php'>Apuração</a>

    para ir diretamente a um outro arquivo, remova as #
    deixando apenas o endereço do arquivo  no href: <a href='apuracao.php'>Apuração</a>
    lembrando que apuracao.php deve estar no mesmo nível de pastas que o arquivo atual.
    do contrário, é só colocar o endereço relativo: <a href='pasta-qualquer/apuracao.php'>Apuração</a>
       
       

  2. beleza @Frank K Hosaka?
    Tomei a liberdade de escrever uma versão de menu usando apenas html e css pro sr. visualizar.

    image.thumb.png.df846faa3d83488b310d9694264ada81.pngimage.thumb.png.535640ebfa8d8f4a0dcf93c7649e38ca.png

    Só lembrando que eu adoro javascript.
    Mas como o sr. diz sempre que está começando, acredito que somente html e css é uma linguagem a menos pra entender.

    O exemplo pode ser testado aqui:
    https://w-studies.github.io/html-css-only-hamburger-menu/

    E pode ser baixado aqui:
    https://github.com/w-studies/html-css-only-hamburger-menu

    Basta clicar ali em Code -> Download ZIP

    image.png.f9bf1faa1642be4127bf58acea215e68.png

  3. Olá!
    Testei aqui, mas não percebi o desalinhamento:
    image.png.f48f07ec639f5f8c1cfed3f4b02ec720.png

    Há muitas tags abertas sem fechado e no lugar inadequado
     

    2 horas atrás, Frank K Hosaka disse:
    echo "<table><tr><th><th><th></tr>"

    1) As <th> devem ser usadas dentro de <thead>
    Da forma como foi escrito, as <th> vão ficar dentro de <tbody>
    2) As <th> precisam da declaração de suas tags de fechamento: </th>
     

    3 horas atrás, Frank K Hosaka disse:
    . "<td><form method='post'><input type='submit' value='novo'></form></tr>"
    . "<tr>"
    . "<td>Cliente:<td>$cliente</tr></table>";

    <td> também precisam da declaração de suas respectivas tags de fechamento: </td>

  4. Humm...
    Acho que entendi.
    Trabalhar com datas realmente não é simples. Mas é possível!
    Ao invés de usar apenas data: aaaa-mm-dd
    Use um datetime pro js entender direito: aaaa-mm-dd hh:ii:ss

    Coloquei um exemplo aqui: https://github.com/w-studies/date-from-database-to-js

    Assim que puder, gentileza testar e conferir se entendi.

    Abra o arquivo api/connection.php e configure sua conexão
    Execute o arquivo database.sql
    segue screenshot para referência
     

    image.png

  5. Olá!
    Segue sugestão em js
     

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <style>
        body {
          font-family: sans-serif;
        }
    
        div {
          padding: 12px;
        }
      </style>
    </head>
    <body>
    <div>
      <small>sem abreviação:</small>
      <br> <span class='long'></span>
    </div>
    <div>
      <small>com abreviação:</small>
      <br> <span class='short'></span>
    </div>
    <script>
      document.querySelector('.long').innerText = new Date().toLocaleDateString('pt-br', {
        month: 'long', day: 'numeric', weekday: 'long', year: 'numeric',
      })
      document.querySelector('.short').innerText = new Date().toLocaleDateString('pt-br', {
        month: 'short', day: 'numeric', weekday: 'short', year: 'numeric',
      })
    </script>
    </body>
    </html>

    Referência:
    https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
     

    Exemplo em execução:
    https://w-studies.github.io/js-date-br/

    image.png.867822910b7f3cf7a9ea14265eadf418.png

  6. Olá!
    Mas a pasta public_html já deveria existir.
    Sugiro que crie um ambiente para testes. Talvez num subdomínio.
    Onde o sr. possa ativar a exibição de erros do php. (Em produção não exiba os erros na tela)

    Então, a partir dos erros que vão aparecer o sr. pode ir perseguindo-os e solucionando-os um a um, até que o sistema todo esteja funcionando.

    Se criar um ambiente para testes localmente, vai ser bem mais rápido!

  7. Olá!
    Acredito que não há nada de ajax aí.
    o AJ do ajax =  Asynchronous Javascript
    E no trecho acima não há nadinha de assíncrono.
    Não entendi muito bem o que o sr. quis fazer.
    Uma vez que todos esses elementos poderiam ter sido criados diretamente no html.
    Mas se precisar criar/mover elementos via javascript, segue um exemplo/sugestão:
     

    <!doctype html>
    <html lang='en'>
    <head>
      <meta charset='UTF-8'>
      <meta name='viewport' content='width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'>
      <meta http-equiv='X-UA-Compatible' content='ie=edge'>
      <title>Javascript</title>
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    </head>
    <body>
    <div class='container'>
      <div class='row justify-content-center'>
        <div class='col-md-6'>
          <h1 class='fw-light'>Javascript</h1>
          <div id='app'></div>
        </div>
      </div>
    </div>
    <script>
      // define qual é o elemento que vai conter a aplicação
      const myApp = document.getElementById('app')
    
      // cria um um novo input
      const myInput = document.createElement('input')
      // adiciona class
      myInput.classList.add('form-control')
    
      // cria uma div, que vai conter os list items
      const lisContainer = document.createElement('div')
    
      // cria um elemento de lista não ordenada
      const myUl = document.createElement('ul')
      // adiciona class
      myUl.classList.add('list-group')
    
      // cria um elemento li
      const myLi = document.createElement('li')
    
      for (let i = 1; i < 11; i++){
        // faz uma cópia de myLi
        const newLi = myLi.cloneNode(true);
        // adiciona class
        newLi.classList.add('list-group-item')
        // alimenta a cópia com texto e número
        newLi.innerHTML = `<a href='#'>List Item #${i}</a>`
    
        // adiciona um listener à newLi para que, quando clicado, mova o myInput para dentro
        newLi.querySelector('a').addEventListener('click', (e)=>{
          e.target.innerText = `Fui Clicado #${i}`
          newLi.append(myInput)
          newLi.classList.add('bg-light')
        })
    
        // coloca a newLi dentro de myUl
        myUl.append(newLi)
      }
    
      // coloca myUl dentro de lisContainer
      lisContainer.append(myUl)
    
      // colona lisContainer dentro de myApp
      myApp.append(lisContainer)
    </script>
    </body>
    </html>

    Preencha o input, e depois clique em outra li qualquer. Perceba que o input foi movido pra outra li, não copiado.

    Ah!
    E Java é uma linguagem server side
    E Javascript é client side
    Ou seja Java é completamente diferente de Javascript

  8. Usando apenas php
    pra permanecer no arquivo index.php e mesmo assim carregar outras views, estude um pouco sobre MVC
    A lógica é a seguinte:
    php é interpretado/executado no servidor
    html, css, js são interpretados no cliente(browser)

    por isso a importância de separar a lógica(php)
    da apresentação(html, css, js)

    O php recebe uma requisição(ou nenhuma) e devolve uma resposta qualquer(ou nenhuma)
    Então, o php acontece primeiro.
    Quando você entra numa página qualquer(feita em php), o php foi executado lá no server e somente depois de entregar o que deveria, o browser carregou/intepretou o css, depois o html e por fim, carregou e executou o js

    Então, pense que, pro seu sistema funcionar adequadamente, primeiro o php é executado(no servidor)
    somente depois o front(css, html e js entregues ao browser).

    A separação dessas camadas de responsabilidade são assim:
    Controllers: camada da lógica (o que acontece primeiro), php
    Views: conteúdo a ser entregue para o browser(css, html, js)
    Models: a camada responsável por se comunicar com o database

  9. Olá! Alinhe com CSS
    Mas perceba que para a última coluna o sr. usou riqht ao invés de right

    8 horas atrás, Frank K Hosaka disse:

    <td align='right'>$qt</td><td></td><td align='riqht'>

     

    Segue sugestão, com possibilidade de reusar para qualquer tabela, para as colunas: 1, 3 e/ou 5

    <style>
      table.border{
        border-collapse: collapse;
      }
      table.border td,
      table.border th{
        border:thin solid #333;
        padding:12px;
      }
      table.col-1-right td,
      table.col-3-right td,
      table.col-5-right td {
        text-align: right;
      }
    </style>
    <?php
      $qt = 10;
      echo "<table class='border col-1-right col-3-right col-5-right'>"
        . "<tr><th>Quantidade</th><th>X</th><th>Quantidade</th><th>=</th><th>Total</th></tr>"
    
        . '<tbody>'
        . "<tr><td>$qt</td><td></td><td>$qt</td><td></td><td>" . $qt * $qt . "</td></tr>"
        . "<tr><td>$qt</td><td></td><td>$qt</td><td></td><td>" . strval($qt * $qt) . '</td></tr>'
        . '</tbody>'
    
        . '</table>';

     

  10. Olá!
    Não sei se entendi direito.
    Mas pensando no cenário que poderá haver mais de 1 user e mais de 1 orçamento, acredito que seria interessante criar mais tabelas sim.
    ex:
    users
    logs (pra salvar os logs de acesso dos users)
    budgets (orçamentos)
    products
    budgets_products (tabela intermediária que vai associar products a um budget)

    Não acredito que algum banco de dados tenha a inteligência de "se virar sozinho"
    Então vai ser preciso que o sr. programe o acesso de cada user.
    E que cada um tenha acesso somente ao seus próprios budgets.
    Com a possibilidade de um admin do sistema ter acesso a todos.

  11. Parabéns pelo aprendizado e capacidade de assimilação do conhecimento.
    Para uma possibilidade maior de detectar falhas na conexão/execução de queries:
    escreva seu arquivo de conexão assim:
     

    <?php
    
    // definição de variáveis para conexão
      $host     = 'localhost';      // servidor
      $user     = 'root';           // nome do utilizador
      $pass     = 'your-secret-pw'; // senha ou password
      $database = 'base';  		    // nome da base de dados
    
    // estabelecer conexão:
      $sqli = new mysqli($host, $user, $pass);
    
    // verificando se conectou de boas:
      if ($sqli->connect_error) {
        // se houver alguma falha, exibe mensagem específica da falha:
        die('<p class="error">Falha na conexão: ' . $sqli->connect_error . '</p>');
      }
    
    // definir o padrão de caracteres
      if (!$sqli->set_charset('utf8')) {
        // se não conseguir definir o padrão de caracteres, exibe o padrão disponível
        die("<p class='error'>Seu charset não é utf8, chefe!<br>$sqli->character_set_name()</p>");
      }
    
    // selecionar/abrir o banco de dados para trabalhar
      if (!$sqli->select_db($database)) {
        // se o banco de dados não for encontrado
        die("<p class='error'>Banco de dados não encontrado, chefe!</p>");
      }

    E nos arquivos onde precisar da conexão, execute queries de busca assim:
     

    <?php
      require 'connection.php';
    
      // define a query de busca
      $query = 'SELECT * FROM gruposusuarios';
    
      // executa a query e guarda o resultado em $result
      $result = $sqli->query($query);
    
      // se houver alguma falha
      if ($sqli->error) {
        // exibe mensagem específica da falha na busca:
        die('<p class="error">Falha na consulta: ' . $sqli->error . '</p>');
      } else if ($result->num_rows) {
        // se não houve erro e há algum resultado, fetch data
        $data = $result->fetch_all(MYSQLI_ASSOC);
    
        echo '<pre>Total de resultados : ';
        print_r($result->num_rows);
        echo '</pre>';
    
        echo '<pre>Resultados: ';
        var_dump($data);
        echo '</pre>';
    
        die(__FILE__ . ' at line: ' . __LINE__);
      } else {
        // se nenhum resultado foi encontrado
        echo '<p>Nenhum resultado encontrado, chefe!</p>';
      }

    Só lembrando que é apenas minha sugestão.
    Também pode ser feito de outras maneiras.

  12. Rapaz...
    Qual foi a mensagem de erro que apareceu? A mensagem acusa em qual arquivo/linha está o erro?
    Tem erro demais aí, viu?
    Sugiro ler as mensagens de erro que vão aparecendo e ir corrigindo uma a uma.

    Pra começar, php é sensitive case (ele diferencia letras maísuculas e minúsculas). Assim sendo A é diferente de a

    a) não existe session_star()
        é session_start(), tem uma letra t no final de start
    b) você tenta receber $_POST['nome'] Mas o form envia Nome, com N maiúsculo
    c) você tenta receber $_POST['email'] Mas o form envia Email, com E maiúsculo
    d) você tenta receber $_POST['ddd'] Mas o form envia DDD, tudo maiúsculo
    e) você tenta receber $_POST['dddCel'] Mas o form envia dddc, tudo minúsculo
    f) não existe $_POST['MelhorHorario']
    g) não existe $_POST['Data']
    h) não existe $_POST['Origem']
    i) você tenta receber $_POST['Tel'] Mas essa variável não existe
    j) você recebe $_POST['celular'] Mas não é usado
    k) você recebe $_POST['Fone'] Mas não é usado
    ...

    Crie um padrão para os nomes de variáveis e use em todas, pra evitar de se perder em qual começa com maiúscula, qual é toda minúscula, etc...

    Vá observando as mensagens de erro e corrigindo cada situação até que seu script esteja funcional.

×
×
  • Criar Novo...