Jump to content

Williams Duarte

Members
  • Content count

    3840
  • Joined

  • Last visited

  • Days Won

    47

Williams Duarte last won the day on November 2 2017

Williams Duarte had the most liked content!

Community Reputation

431 Incrível

About Williams Duarte

  • Birthday 05/17/1989

Informações Pessoais

  • Sexo
    Masculino
  • Interesses
    Tecnologia, Engenharia de Software, PHP, Design Pattern, JavaScript, SQL, NoSQL e Empreendedorismo

Recent Profile Visitors

8796901 profile views
  1. Williams Duarte

    Pesquisar um documento em um diretório incluindo subdiretórios.

    Com a Função RecursiveDirectoryIterator, você consegue fazer isto, aqui tem um exemplo Porem eu faria diferente, armazenaria o path absoluto em um banco de dados, ou todo o documento em banco NoSQL.
  2. Williams Duarte

    replicar código

    As funções são blocos reutilizáveis de códigos, e é justamente para este fim. E quando o programa é subdividido em funções, se ocorrer algum erro, você sabe exatamente qual função está causando o erro e onde encontrá-lo. Portanto, a correção de erros se torna muito mais fácil. Qualquer outra coisa diferente disto, seja ela em escopo global ou não, é puro amadorismo.
  3. Williams Duarte

    Venda de carros

    Aconselho fazer umas aulinhas básica da linguagem! Curso completo e Gratuito. https://www.youtube.com/watch?v=XwpsxPmQN2E&list=PLwXQLZ3FdTVEITn849NlfI9BGY-hk1wkq
  4. Williams Duarte

    Relacionamento 1:N replica os dados

    Utilize a cláusula Group By https://www.devmedia.com.br/desvendando-a-clausula-group-by-artigo-sql-magazine-47/8082
  5. Williams Duarte

    PHP - Mostrar resultado na sequencia.

    Ao invés de usar tabelas para tal, use gride e terá um resultado melhor e semântico. https://www.origamid.com/projetos/css-grid-layout-guia-completo/
  6. Williams Duarte

    Dúvida MVC para fins didáticos [Respondida]

    Sim! As duas formas são corretas, você declara no construct, se quiser usar em mais de um lugar na classe! Não traballho mais com Cake, mas sim Laravel, mas o Cake nas primeiras versões usava da maneira como descreveu. Não sei como ele esta hoje, se mudou a forma de carregar as models.
  7. Saiba mais aqui Desta forma use $pdo->query("..."), mas entenda sobre SQL Injection Há outras formas e um pouco menos verbosa, utilizando o prepared statements, ao invés de query. Passe o array no método execute() da PDO. $sql = "INSERT INTO usuarios (nome, email, telefone, senha) VALUES (?,?,?,?)"; $stmt= $pdo->prepare($sql); $stmt->execute([$nome, $telefone, $email, $senha]); Ou nomeados Prefira sempre o uso de espaços nomeados "placeholders", igual ao exemplo abaixo: $sql = "INSERT INTO usuarios (nome, email, telefone, senha) VALUES (:n, :t, :e, :s)"; $stmt= $pdo->prepare($sql); $stmt->execute([":n" => $nome, ":t" => $telefone, ":e" => $email, ":s" => $senha]); Quando evoluir na linguagem php, verás que a ultima a opção é a melhor para se trabalhar com objetos.
  8. Williams Duarte

    Apagando foto do registro e da pasta

    Como assim nao aparece nada? Faça um debug do código <> https://www.php.net/manual/pt_BR/function.error-reporting.php Abra seu codigo, e cole o código abaixo, ao abrir a tag php, veja que colei parte de seu código para saber onde deve dar um CTRL+V. Se mostrar algum erro, faça o mesmo, copia e cole aqui. <?php // Turn off all error reporting error_reporting(0); // Report simple running errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reporting E_NOTICE can be good too (to report uninitialized // variables or catch variable name misspellings ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Report all errors except E_NOTICE // This is the default value set in php.ini error_reporting(E_ALL ^ E_NOTICE); // Report all PHP errors error_reporting(E_ALL); // Same as error_reporting(E_ALL); ini_set('error_reporting', E_ALL); //Aqui começa seu codigo, cole a parte de cima, a que esta no manual // Conexão com o banco de dados include "conexao.php"; // pegar a id do cliente na url (se existir) $id_cliente = isset($_GET['id']) ? $_GET['id'] : null; $fotoNova = null;
  9. Williams Duarte

    Apagando foto do registro e da pasta

    <?php // Conexão com o banco de dados include "conexao.php"; // pegar a id do cliente na url (se existir) $id_cliente = isset($_GET['id']) ? $_GET['id'] : null; $fotoNova = null; // se algo for postado, e existir a id do cliente if (sizeof($_POST) && $id_cliente) { $foto = $_FILES['foto']; // Se a foto estiver sido selecionada if (!empty($foto['name'])) { // Largura máxima em pixels $largura = 700; // Altura máxima em pixels $altura = 1000; // Tamanho máximo do arquivo em bytes $tamanho = 1000; // Verifica se o arquivo é uma imagem if (preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto['type'])) { $error[1] = "Isso não é uma imagem."; } // Pega as dimensões da imagem $dimensoes = getimagesize($foto['tmp_name']); // Verifica se a largura da imagem é maior que a largura permitida if ($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar " . $largura . " pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if ($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar " . $altura . " pixels"; } { // Pega extensão da imagem preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto['name'], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "fotos/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($foto['tmp_name'], $caminho_imagem); $image = new Imagick(); $image->thumbnailImage($largura, $altura); $image->readImage($caminho_imagem); $image->setImageFormat($ext[1]); $image->setImageCompressionQuality(85); $image->stripImage(); $image->writeImage($caminho_imagem); } } // atualiza os dados no banco $sql = $sqli->query("update clientes set foto = '$nome_imagem' where id_cliente = $id_cliente"); // Se os dados forem inseridos com sucesso if ($sqli->error) { echo "<p>Erro ao atualizar.</p>" . $sqli->error; } else { // vai forçar o recarregamento da imagem nova $fotoNova = '?' . microtime(true); } } ?> <!doctype html> <html> <head> <meta charset='utf-8'> <title>CLIENTES</title> <link href="estilo.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="#E8E8E8"> <form id="atualizar" method="post" enctype="multipart/form-data" onsubmit="return validaCampo(); return false;" > <?php // Seleciona apenas a foto do cliente id = $id_cliente $result = $sqli->query("SELECT foto FROM clientes WHERE id_cliente=$id_cliente"); if ($sqli->error) { die($sqli->error); } else { // Exibe as informações de cada usuário while ($cliente = $result->fetch_assoc()) { // Exibimos a foto if (empty($cliente['foto'])) { echo "<img src='fotos/sem_foto.jpg' width='135' height='180'>"; } else { echo "<img src='fotos/" . $cliente['foto'] . "$fotoNova' alt='Foto de exibição' width='145' height='180'><br>"; } // Exibimos o nome e email..continua o resto do codigo aqui } } ?> <input type="file" name="foto" accept="image/*"><br><br> <input type="hidden" name="enviar" value="1"> <input type="submit" name="atualizar" value="Enviar" /> </form> </body> </html>
  10. Williams Duarte

    Gravando data no mysql

    Se a data vem neste formato brasileiro 00/00/0000, faz um reverse e grava no BD em formato americano 0000-00-00 $created = isset($_POST['created']) ? implode("-",array_reverse(explode("/", $_POST['created']))) : null ;
  11. Williams Duarte

    Fazendo Upload de vídeo

    Hoje em dia não é mais viável fazer upload de videos para servidor próprio, pelo fato de que exige alocação de espaço, memória e tráfego. Há não ser que você esteja montando um servidor de streaming. Senão for um servidor de streaming, melhor utilizar o plataformas como youtube e vimeo para upar o videos, caso "não queira" que apareça para usuários das plaformas youtube/vimeo, coloque os videos como não listados, e incorpore os videos em seu site. https://support.google.com/youtube/answer/171780?hl=pt-BR Se mesmo assim, deseja enviar, segue abaixo os formatos. https://en.wikipedia.org/wiki/Video_file_format Ao detectar qual é o formato do arquivo, faça as operações que não seja de foto, mas sim de video. Basicamente, if e else, separe a logica de cada coisa, não ha porque adaptar
  12. Williams Duarte

    Retornar dados de um campo texto do banco de dados

    Para decodificar html_entity_decode
  13. Williams Duarte

    Passar objeto para JSON

    O valor atual do elemento em $callBack['nome'], esta sendo substistuido a cada interação do foreach. E sempre vai adicionar o último item. Você pode fazer isto, sem utilizar o foreach: $callBack['items'] = $items; Caso queira remover um item do array, antes de adicionar na variavel $callBack, use unset Ou array_map, para mapear só item nome $callBack["nome"] = array_map(function ($item) { return $item['nome']; }, $itens);
  14. Williams Duarte

    Salvar dados de uma tabela html no banco de dados mysql

    Dois exemplos em UM: $( "form" ).submit(function( event ) { console.log( $( this ).serializeArray() ); event.preventDefault(); var ativo = $("input[name='ativo[]']") .map(function(){ return $(this).val(); }).get(); console.log(ativo); }); https://api.jquery.com/serializeArray/ https://api.jquery.com/jQuery.map/ Para enviar para o php, use ajax, só montar o payload, caso queira validar os dados, no lado cliente, senão, envie os dados serializados, que estão em $( this ).serializeArray(). Exemplo da documentação, substitua o data pelo seu payload. $.ajax({ method: "POST", url: "some.php", data: { name: "John", location: "Boston" } }) .done(function( msg ) { alert( "Data Saved: " + msg ); }); https://api.jquery.com/jquery.ajax/
  15. Williams Duarte

    Dificuldade em adaptar regex para javascript - matches não batem

    Em Js Troque as flags (?i) por (.*) E set i "insensitive" na option da Regex, ficando /mgi /(?:(.*)(?:https:|http:)?\/\/)?(?:(.*)(?:www\.youtube\.com\/(?:embed\/|watch\?v=)|youtu\.be\/|youtube\.googleapis\.com\/v\/)(?<YoutubeID>[a-z0-9-_]{11,12})|(?:vimeo\.com\/|player\.vimeo\.com\/video\/)(?<VimeoID>[0-9]+))/mgi; https://regex101.com/r/npUFe1/1
×

Important Information

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