Ir para conteúdo
Fórum Script Brasil

wash

Membros
  • Total de itens

    406
  • Registro em

  • Última visita

Tudo que wash postou

  1. Não exponha dados sensíveis na url, use o método post https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods/POST
  2. Olá! Alinhe com CSS Mas perceba que para a última coluna o sr. usou riqht ao invés de right 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>';
  3. Olá! porque não usa o ip de cada um? Com $_SERVER['REMOTE_ADDR'] php.net/remote_addr
  4. 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.
  5. 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.
  6. wash

    Conexão PHP para MySQL

    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.
  7. O switch case avalia apenas um único valor. No caso específico que você enviou, será analisado o resultado da conta, que é um bool É bem mais complicado ficar fazendo operações aritméticas dentro de um switch. É muita gambiarra. Há formas melhores do que switch. Já ouvi muita gente dizendo que trabalhou em sistemas enormes a vida inteira e nunca usaram switch. Sugestão de solução: <?php $digitado = 0; $result = ''; switch($digitado) { case ($digitado > 0 ? $digitado : -1): $result = 'Valor Positivo'; break; case ($digitado < 0 ? $digitado : 1); $result = 'Valor Negativo'; break; default: $result = 'Igual a Zero'; } echo $result;
  8. Olá! Não retorna mensagem de erro alguma? acrescente or die, depois de fechar parenthesis: ...ario) or die(mysqli_error($conn)); execute novamente e veja se aparece alguma mensagem de erro
  9. Entendi. É porque você faz a matemática no php Nem precisava. Pode ser resolvido somente com js. mas segue sugestão: arquivo .php <?php $trab = 0; $apost = 0; $prova = 0; $trilha1 = 0; $trilha2 = 0; $med = 0; $showModal = false; if (isset($_POST['acao'])) { $trab = $_POST['trab'] * 8; $apost = $_POST['apost'] * 2; $prova = $_POST['prova'] * 6; $trilha1 = $_POST['trilha1'] * 1; $trilha2 = $_POST['trilha2'] * 1; $peso1 = (($trilha1 + $trilha2) / 2) * 1; $peso3 = (($trab + $apost) / 10) * 3; $peso6 = $prova; $med = ($peso1 + $peso3 + $peso6) / 10; $rec = (($med * 0.6) - 6) / (0.4 * (-1)); $showModal = true; } ?> <!DOCTYPE html> <html lang="pt=br"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Fundamental I e II - Cálculo de notas</title> <link rel="stylesheet" type="text/css" href="assets/css/fundamentaal.css"> </head> <body> <section id="fund_I_II"> <div class="container"> <div class="box_form"> <div class="title texto"> <h1>Média Ensino Fundamental I e II</h1> </div> <div class="form_inputs"> <form method="POST" action=""> <label>Nota de trabalho</label> <input type="number" name="trab" required autofocus min="0" max="10" step=".01"></input> <label>Nota de apostila</label> <input type="number" name="apost" required min="0" max="10" step=".01"></input> <label>Nota de prova</label> <input type="number" name="prova" required min="0" max="10" step=".01"></input> <label>Nota de trilha 1</label> <input type="number" name="trilha1" required min="0" max="10 step=" .01"></input> <label>Nota de trilha 2</label> <input type="number" name="trilha2" required min="0" max="10" step=".01"></input> <input class="enviar " type="submit" name="acao" /> </form> </div> </div> <div id="modal-notas-aprovacao" class="modal-container<?= $showModal ? ' mostrar' : '' ?>"> <div class="modal"> <button class="fechar">x</button> <div class="aprovacao"> <?php if (isset($_POST['acao']) && $med >= 6) { echo 'Sua média do bimestre é: ' . number_format($med, 2) . '<br>' . 'Você foi aprovado'; } ?> </div> <div class="reprovacao"> <?php if (isset($_POST['acao']) && $med < 6) { echo 'Sua média do bimestre é: ' . number_format($med, 2) . '<br>' . 'Você está de RECUPERAÇÃO!' . ' É necessário tirar ' . number_format($rec, 2) . ' na prova de recuperação.'; } ?> </div> </div> </div> </div> </section> <script> const modalID = 'modal-notas-aprovacao' const modal = document.getElementById(modalID); modal.addEventListener('click', (e) => { if (e.target.id == modalID || e.target.className == 'fechar') { modal.classList.remove('mostrar'); } }); </script> </body> </html> Arquivo .css *{ box-sizing: border-box; } body { margin: 0; padding: 0; font-family: Arial; background-color: #0344f7; overflow: hidden; } h1 { margin: 0; padding: 0; } .container { height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; } .box_form { width: 420px; background-color: #0095cf; border: 1px solid white ; border-radius: 15px; } .title { display: flex; align-items: flex-end; justify-content: center; color: #FFF; height: 80px; } .form_inputs form { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 330px; } .form_inputs label { text-align: center; color: white; } .form_inputs input { text-align: center; width: 200px; margin-top: 5px; padding: 5px; border:none; border-radius: 5px; } .form_inputs .enviar { width: 100px; margin-top: 8px; border-radius: 7px; padding: 10px; color: white; font-weight: bold; font-size: 16px; border:0; background-color: green; } .aprovacao, .reprovacao { color: #000; text-align: center; } .aprovacao { padding: 10px; } .modal-container{ width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, .5); position: fixed; top: 0 ; left: 0; z-index: 2000; display: none; justify-content: center; align-items: center; } .modal { background-color: white; max-width: 60%; min-width: 300px; padding: 40px; box-shadow: 5px 5px 6px 4px #000; border-radius: 10px; position: relative; } @keyframes modal { from { opacity: 0; transform: translate3d(0,-60px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } .mostrar .modal { animation: modal .3s; } .modal-container.mostrar { display: flex; } .fechar { position: absolute; top: 5px; left: 5px; width: 30px; height: 30px; border-radius: 50%; border: 0; background-color: white; font-size: 25px; cursor: pointer; }
  10. Olá! Mostre-nos o trecho que marca os checkboxes que deveriam estar marcados e em que momento ele é executado.
  11. Olá! É bem difícil adivinhar o que aconteceu sem poder reproduzir o script. Certa vez escrevi um que funcionou muito bem. Tente adaptá-lo e veja se funciona pra você tb: <?php // carrega o arquivo.csv ignorando quebras de linha no final da linha e linhas vazias $file = file('seu-arquivo.csv', FILE_TEXT | FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // o caracter delimitador $delimitier = ';'; // caso a primeira linha seja o cabeçalho (essa linha será removida da variável $file) $header = array_shift($file); // verifica se o delimitador existe if (!strpos($header, $delimitier)) { die('O delimitador: ( <b>' . $delimitier . '</b> ), não foi encontrado!'); } // separa cada elemento do cabeçalho $header = explode($delimitier, $header); // inicia a variável para guardar os erros(se houver algum) $errors = []; // para cada linha em $file foreach ($file as $i => $line) { $arrayLine = explode($delimitier, $line); // verifica se a quantidade de colunas é igual às do header if (sizeof($arrayLine) != sizeof($header)) { $errors[] = 'A linha: <b>' . ($i + 2) . 'não tem o mesmo número de colunas!'; continue; } // tratar os dados foreach ($arrayLine as $index => $value) { // se o valor estiver entre aspas simples, serão removidas $value = trim($value, "'"); // se for numérico if (preg_match('/^[0-9.,]+$/', $value)) { // não precisa tratar o valor $arrayLine[$index] = $value; } else { // se não for numérico, o valor será tratato com utf-8, terá caracteres escapados e será colocado entre aspas simples $arrayLine[$index] = "'" . addslashes(utf8_encode($value)) . "'"; } } // coloca cada linha entre parenthesis $file[$i] = '(' . implode(', ', $arrayLine) . ')'; } // se houver erros if (sizeof($errors)) { foreach ($errors as $error) { // mostra cada erro encontrado na tela echo '<p>' . $error . '</p>'; } } // considera o cabeçalho como sendo iguais aos nomes das colunas do database $keys = $header; // quebra as linhas em grupos de 100 linhas $inserts = array_chunk($file, 100, true); // para cada grupo de 100 linhas foreach ($inserts as $v) { // adiciona a query de inserção no array $dump $dump[] = "insert into $table(`" . implode('`, `', $keys) . "`) values\n " . implode(",\n ", $v) . "\n"; } // para cada grupo de 100 inserções por insert em $dump foreach ($dump as $query) { // mostra na tela como ficou cada query de 100 inserções por insert echo '<pre>$query: '; print_r($query); echo '</pre>'; // execute a sua query de inserção no banco de dados aqui } Ao invés de inserir cada linha uma a uma, inserir em grupos de 100 diminui em muito a quantidade de requisições ao database, aumentando em muito o desempenho.
  12. Olá! Os checkboxes precisam ter o atributo name vai ser o nome da variável enviada com o valor do checkbox <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="opcao2" name="variavel1"> No exemplo acima, variavel1 = opcao2, claro, se o checkbox estiver marcado Se não estiver marcado, esta variável não será enviada.
  13. Olá! Os valores inicio e fim, são gerados assim q a página é carregada. Mova a declaração desses valores pra dentro da função contar, assim: ... function contar() { var inicio = Number(document.getElementById("inicio").value); var fim = Number(document.getElementById("fim").value); ...
  14. Olá! O intelephense está correto. Toda função em uma interface é implicitamente abstrata. Não há necessidade de usar a keyword abstract quando declarar métodos em interfaces. Veja em: https://www.w3schools.com/php/php_oop_interfaces.asp
  15. Olá! A mensagem está dizendo que o sr. tem métodos com o mesmo nome da classe. Isso só funcionava em php 5- peça ao seu serviço de hospedagem para usar uma versão de php antigo, talvez 4 ou 5.0.1 mas o ideal e mais seguro, seria o sr. atualizar seu sistema, usando apenas as novidades do php 8. Q já está no 8.1. O php é uma liguagem muito viva, a comunidade mantenedora está sempre trabalhando parar torná-lo melhor e mais seguro. Acompanhe os chage logs pra saber o que ficou obsoleto e acompanhe sempre atualizando seus scripts: https://www.php.net/ChangeLog-8.php#8.1.0
  16. wash

    Olá

    Olá! No início do arquivo, ative a exibição de erros com: <?php error_reporting(E_ALL); Troque esse trecho: por este: $qlog = mysqli_query($bd, "SELECT * FROM 'usuarios' WHERE login_user = '$nome_user' and senha = '$password' ") or die(mysqli_error()); e veja se aparece alguma mensagem de erro. Essas aspas simples no nome da tabela são desnecessárias.
  17. Olá! Acredito que não há uma forma automágica de se descobrir isso. O sr. pode observar o script e ver se foram utilizados elementos específicos de php7+ como o operador null coalescing, tipagem de retorno das classes ou variáveis... Se o tipo de conexão com o database usa extensões obsoletas como mysql_*, vai ser php5- Ou pode ir testando até encontrar uma falha. Execute em php7(e suas minor versions), se não der nenhum erro, funciona. Execute em php8(e suas minor versions), em php5(e suas minor versions)
  18. Certifique-se de que não haja espaços em branco antes e depois da palavra, no arquivo lido
  19. Olá! Pode acontecer de, no final da linha ser carregado tb o metacaracter da quebra de linha. para evitar isso use as seguintes flags com a função file: file($filePath, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES); onde $filePath é o caminho para o arquivo que o sr. pretente q seja lido.
  20. wash

    Erro com imagecreatefromjpeg

    Olá! Ao invés de ['name'] use ['tmp_name']
  21. Olá! O sr. não postou a mensagem de erro que apareceu, mas presumo que seja porque ao abrir o script nada ainda foi postado. Então coloque o trecho de script selecionado dentro de: if(isset($_POST['nome'])){ // aqui } Assim o trecho php só será executado, depois que pelo menos 'nome' for postado
  22. Olá! Aqui tem um bom exemplo de como fazer isso, veja: php.net/mysqli_fetch_all Pra ficar bem fácil vou colar um trecho aqui: // guarda o resultado da execução da query em $result $result = $mysqli->query('select * from table'); // guarda cada linha de $result em $rows $rows = $result->fetch_all(MYSQLI_ASSOC); // inicie a tabela $displayTable = '<table><thead><tr><th>Title</th></tr></thead>'; // para cada linha em rows foreach ($rows as $row) { // monte as linhas da tabela aqui $displayTable.= '<tr><td>' .implode('<br>', $row) .'</td></tr>'; } // mostre a tabela onde precisar: echo $displayTable.'</table>'
  23. Olá! Qual a versão de PHP que o sr. está usando? Desde 2012(ou antes) o php recomenda fortemente a não usar mais as extensões mysql_* veja no screenshot. Se o sr. não estiver usando o php4, recomendo atualizar seu script. Pra ter certeza de que pode ser essa a questão. Ative a exibição de erros no seu php.ini ou em php mesmo com: error_reporting(E_ALL); sendo a primeira linha de script do seu arquivo .php
  24. Olá! Segue sugestão: SELECT sum( statuselev ) AS total FROM (select statuslev from elevatoria1 WHERE linha LIKE '%999981697%' ORDER BY registro DESC LIMIT 2 )
×
×
  • Criar Novo...