Ir para conteúdo

Guilherme Luiz

Members
  • Total de itens

    354
  • Registro em

  • Última visita

  • Dias vencidos

    3

Tudo que Guilherme Luiz postou

  1. Guilherme Luiz

    Tabela MYSQL

    utilize a função explode $letras = "A;B;C;D;E"; $separa = explode(";",$letras); foreach($separa as $letra){ echo "{$letra} <br>"; }
  2. Guilherme Luiz

    Integração com Instagram

    consulte a documentação oficial do site. la existem sdks e apartir dai e so personalizar pra sua necessidade https://www.instagram.com/developer
  3. Guilherme Luiz

    Fputcsv insere apenas uma linha

    Consegui resolver... No indice texto do array $stats eu apliquei um utf8_encode e trim e agora está funcionando perfeitamente.
  4. Guilherme Luiz

    Fputcsv insere apenas uma linha

    Olá pessoal, Estou com um problema para escrever um arquivo csv utilizando a função FPUTCSV. <?php $queryList = "SELECT wzap.id as id, wzap.mobile as mobile, wzap.ddi as ddi, wzap.pushname as pushname, wzap.photo as photo, wzap.dlr_date as dataDlr, case when wzap.status = '0' then 'Pendente' when wzap.status = '1' then 'Enviado' when wzap.status = '2' then 'Entregue' when wzap.status = '3' then 'Não entregue' when wzap.status = '4' then 'Rejeitado' when wzap.status = '5' then 'Expirou' when wzap.status = '6' then 'Agendado' when wzap.status = '7' then 'Falha' end as status, case when wzap.status = '1' and wzap.substatus = '1' then 'Processado' when wzap.status = '2' and wzap.substatus = '1' then 'Ok' when wzap.status = '6' and wzap.substatus = '1' then 'Processado' when wzap.status = '7' and wzap.substatus = '1' then 'Sem saldo' when wzap.status = '7' and wzap.substatus = '2' then 'Erro no processamento' end as descricao, wzap.cost as tarifa, wzap.currency as moeda, wzap.text as texto, w.country as pais, channel.name as canalNome FROM wzap_mt as wzap INNER JOIN worldwide as w ON w.ddi = wzap.ddi LEFT JOIN wzap_channel as channel ON channel.id = wzap.channel_id WHERE wzap.user_id='{$userID}' and wzap.channel_id {$canalID} and wzap.dlr_date BETWEEN '".$inicio." 00:00:00' and '".$final." 23:59:59' UNION ALL SELECT wzap.id as id, wzap.mobile as mobile, wzap.ddi as ddi, null as pushname, null as photo, wzap.dlr_date as dataDlr, case when wzap.status = '0' then 'Pendente' when wzap.status = '1' then 'Enviado' when wzap.status = '2' then 'Entregue' when wzap.status = '3' then 'Não entregue' when wzap.status = '4' then 'Rejeitado' when wzap.status = '5' then 'Expirou' when wzap.status = '6' then 'Agendado' when wzap.status = '7' then 'Falha' end as status, case when wzap.status = '1' and wzap.substatus = '1' then 'Processado' when wzap.status = '2' and wzap.substatus = '1' then 'Ok' when wzap.status = '6' and wzap.substatus = '1' then 'Processado' when wzap.status = '7' and wzap.substatus = '1' then 'Sem saldo' when wzap.status = '7' and wzap.substatus = '2' then 'Erro no processamento' end as descricao, wzap.cost as tarifa, wzap.currency as moeda, wzap.text as texto, w.country as pais, channel.name as canalNome FROM wzap_mt_temp as wzap INNER JOIN worldwide as w ON w.ddi = wzap.ddi LEFT JOIN wzap_channel as channel ON channel.id = wzap.channel_id WHERE wzap.user_id='{$userID}' and wzap.channel_id {$canalID} and wzap.dlr_date BETWEEN '".$inicio." 00:00:00' and '".$final." 23:59:59' UNION ALL SELECT wzap.id as id, wzap.mobile as mobile, wzap.ddi as ddi, wzap.pushname as pushname, wzap.photo as photo, wzap.dlr_date as dataDlr, case when wzap.status = '8' then 'Recebido' end as status, case when wzap.status = '8' and wzap.substatus = '1' then 'Resposta recebida' end as descricao, wzap.cost as tarifa, wzap.currency as moeda, wzap.text as texto, w.country as pais, channel.name as canalNome FROM wzap_mo as wzap INNER JOIN worldwide as w ON w.ddi = wzap.ddi LEFT JOIN wzap_channel as channel ON channel.id = wzap.channel_id WHERE wzap.user_id='{$userID}' and wzap.channel_id {$canalID} and wzap.dlr_date BETWEEN '".$inicio." 00:00:00' and '".$final." 23:59:59' ORDER BY dataDlr DESC"; $sqlList = mysqli_query($connect_sql,$queryList); while($data = mysqli_fetch_assoc($sqlList)){ $stats[] = [ "id" => $data['id'], "mobile" => $data['mobile'], "pais" => $data['pais'], "nome" => $data['pushname'], "canal" => $data['canalNome'], "dataDlr" => date("d/m/y H:i:sa", strtotime($data['dataDlr'])), "status" => $data['status'], "desc" => $data['descricao'], "tarifa" => $data['tarifa'], "moeda" => $data['moeda'], "texto" => $data['texto'] ]; } $filename = sha1($userID.date("Y-m-d").rand(1,100000)); $header = ["ID","Número","País","Nome","Canal","DataStatus","Status","Descrição","Tarifa","Moeda","Texto"]; $file = fopen(BASEPATH."/export/{$filename}.csv", 'w'); //TRECHO PROBLEMATICO ABAIXO fputs($file, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); fputcsv($file,$header,","); foreach ($stats as $line) { fputcsv($file, $line,","); } //TRECHO PROBLEMATICO ACIMA $fileSize = filesize(BASEPATH."/export/{$filename}.csv"); ?> Meu código traz uma lista de uma consulta do meu banco de dados que fica salva no array $stats. Ao fazer o debug do array $stats vejo que os dados são recebidos perfeitamente neste modelo Array ( [id] => 25 [mobile] => 5511945658451 [pais] => Brasil [nome] => Guilherme [canal] => guilherme business [dataDlr] => 19/11/18 11:51:36am [status] => Entregue [desc] => Ok [tarifa] => 0.1 [moeda] => BRL [texto] => envio via portal - teste de agenda - 11h50m ) Array ( [id] => 28 [mobile] => 5511950917200 [pais] => Brasil [nome] => Comercial [canal] => guilherme business [dataDlr] => 19/11/18 11:51:27am [status] => Entregue [desc] => Ok [tarifa] => 0.1 [moeda] => BRL [texto] => envio via portal - teste de agenda - 11h50m ) Ao fazer o debug também do foreach da variavel $line eu também tenho todos os dados ou seja, minha busca no bd está ok e meu foreach também. Assim deveria ser escrito meu CSV onde cada indice do array $stats é uma linha separados por virgula. Porem meu csv quando visualizo, traz apenas uma linha no seguinte formato ID,Número,País,Nome,Canal,DataStatus,Status,Descrição,Tarifa,Moeda,Texto 27,5511945658451,Brasil,Guilherme,"guilherme business","21/11/18 13:16:41pm",Entregue,Ok,0.1,BRL,"teste foto perfil Já tentei de tudo e não consigo identificar o porque meu fputcsv está escrevendo apenas uma linha do meu array. Vendo este código alguem conseguiria me dar uma luz/orientação?
  5. Guilherme Luiz

    Tirar link e colocar um botão php

    no seu button adicione um evento onlick ou estilize com css o seu link igual um button... o bootstrap tem facil essa estilizacao
  6. Guilherme Luiz

    Passar conteúdos de variáveis php para um javascript?

    salve os valores numa session com php e as recupere com o js... simples assim.
  7. Guilherme Luiz

    PHP - Imprimir uma Lista de dados do Mysql

    voce precisa aplicar o while em <td> e usar o operador % para aplicar <tr> a cada linhas pares. procure por lista ordenada horizontalmente qie você encontrará varios exemplos
  8. Guilherme Luiz

    Acesso ao web services e interaçao na pagina php

    basicamente você tem que definir. o que chamar como chamar metodo de chamada forma de processamento resultado dado inicialmente seria o que chamar minha url como chamar formato da minha url de requisicao metodo de chamada get, post, put, etc forma de processamento assincrona, sincrona, php, asp, java, etc resultado dado raw, xml, json, texto defina o que você quer com base nestes itens e isso vai ajudar voce a se orfanizar e saber o que buscar e perguntar melhor.
  9. Guilherme Luiz

    Escrever resultado de pesquisa do mysql utilizando while

    veja se a sua session de table_base traz algum valor... além disso, ja que você esta pondo as variaveis dentro dos colchetes, inclui aspas simples coluna = '{$variavel}' mais ainda... se o table_base traz o nome da tabela corretamente, quantos registros existem nessa tabela? as vezes o seu erro acontece pq você tem muitos registros para iterar e o servidor da crash/timeout assim como o navegador do usuario por ser muitos dados para imprimir... afim de apenas teste implemente um limit 10 na sua query... aplique a condicao mysqli_error apos a execucao da qiery para identificar possiveis erros
  10. Guilherme Luiz

    Erro ao enviar e-mail

    SMTP connect() failed. Seu proprio erro já diz o que está acontecendo. A conexão SMTP falhou. Motivos: Dados incorretos de conexão Revise os dados de endereço smtp, porta, usuario, senha... Enquanto os seus dados de conexão estiverem errados, isso vai seguir acontecendo. Pergunte ao seu Host (servidor web) quais são os dados de conexão do email via smtp
  11. Guilherme Luiz

    PHP puro x Frameworks

    Pense assim: E se amanha o framework não existir mais? Os frameworks estão surgindo aos montes pq é uma trend do mercado porque pelo mercado a fora é "linha de produção" e os frameworks ajudam nesse quesito de acelerar o trabalho e também de padroniza-lo de modo que outros devs saberão o que você quis dizer com cada linha do seu código. Mas, e se o framework amanha não existir mais e você "sabia" php apenas pelo framework?! Isso acontece aos montes com devs de front-end. 9 em 10 utilizam o bootstraap mas na hora que aparece uma personalização ou algo que o framework não atende, os problemas surgem porque não dominam a base dele que é CSS e JS basicamente. Minha recomendação é: Faça o PHP puro, seja ele estruturado ou orientado a objeto. Eu particularmente prefiro trabalhar sempre com php estruturado sem frameworks. Depois disso se você ver que precisa de algo rapido e padronizado, ai sim parta para os frameworks. Os que eu vejo mais utilizarem é o Laravel, Symfoni e o Zend Abraço.
  12. Guilherme Luiz

    Descobrir Pedidos não pagos

    Não seria mais facil incluir algum flag na tabela? por exemplo ID | idpedido | idproduto | qtd | valorunitario | valor total | pago 1 | 2 | 2 | 200 | 1 | 200 | 0 2 | 2 | 1 | 50 | 1 | 50 | 1 3 | 1 | 10 | 200 | 1 | 200 | 0 4 | 2 | 1 | 50 | 1 | 50 | 0 4 | 3 | 1 | 50 | 1 | 50 | 1 ai na sua query você faz um WHERE condicionando a coluna PAGO Desta forma você até poderá criar indices de consulta que melhorará a sua performance para pesquisas com grandes volumes WHERE pago=1 (1 para pago e 0 para não pago)
  13. Guilherme Luiz

    Meio de como cadastrar diversos valores em tabela Mysql ?

    mysqli_multi_query $query = "INSERT INTO montadora... $query .="INSERT INTO carro...; mysqli_multi_query($conexao,$query);
  14. Guilherme Luiz

    Foreach com fputcsv - PHP

    aplica o foreach no indice que você quer iterar.
  15. Guilherme Luiz

    Otimização de SELECT

    Resolvi o problema... O que deixava a query lenta era o LEFT JOIN que eu estava aplicando... Eu o retirei e a consulta com 100k de registros nao demora nem 2 segundos. Agora, porque esse LEFT estava atrasando tanto assim a minha consulta?
  16. Guilherme Luiz

    Otimização de SELECT

    Olá pessoal, Tenho a seguinte consulta $queryList = "SELECT sms.id as id, sms.mobile as mobile, sms.ddi as ddi, sms.send_date as dataEnvio, sms.dlr_date as dataDlr, sms.status as status, sms.substatus as descricao, sms.route as rota, sms.cost as tarifa, sms.currency as moeda, w.flag as flag, w.country as pais, ctt.nome as nome FROM sms_mt as sms INNER JOIN worldwide as w ON w.ddi = sms.ddi LEFT JOIN (SELECT concat(ddi,mobile) as mobile, nome as nome FROM phonebook WHERE user_id='{$userID}') as ctt on ctt.mobile = sms.mobile WHERE sms.user_id='{$userID}' and sms.campaing_id='{$x['id']}' UNION ALL SELECT sms.id as id, sms.mobile as mobile, sms.ddi as ddi, sms.dlr_date as dataEnvio, sms.dlr_date as dataDlr, sms.status as status, sms.substatus as descricao, sms.route as rota, sms.cost as tarifa, sms.currency as moeda, w.flag as flag, w.country as pais, ctt.nome as nome FROM sms_mo as sms INNER JOIN worldwide as w ON w.ddi = sms.ddi LEFT JOIN (SELECT concat(ddi,mobile) as mobile, nome as nome FROM phonebook WHERE user_id='{$userID}') as ctt on ctt.mobile = sms.mobile WHERE sms.user_id='{$userID}' and sms.campaing_id='{$x['id']}' and sms.billed=1 ORDER BY dataEnvio DESC"; $sqlList = mysqli_query($connect_sql,$queryList); while($list = @mysqli_fetch_assoc($sqlList)){ $stats[] = [ "id" => (int)$list['id'], "mobile" => $list['mobile'], "flag" => "/includes/images/flags/{$list['flag']}.png", "ddi" => $list['ddi'], "pais" => $list['pais'], "nome" => ((empty($list['nome'])) ? null : $list['nome']), "dataEnvio" => date("d/m/y H:i:s A", strtotime($list['dataEnvio'])), "dataDlr" => date("d/m/y H:i:s A", strtotime($list['dataDlr'])), "status" => $list['status'], "desc" => $list['descricao'], "rota" => $list['rota'], "tarifa" => $list['tarifa'], "moeda" => $list['moeda'] ]; } Onde eu tenho a seguinte estrutura de tabelas sms_mt sms_mo Com a consulta que estou utilizando, eu estou tendo problemas de atraso na resposta. Para consultas com mais de 3.000 registros, minha aplicação demora mais de 2 minutos para trazer tais resultados. o que eu acho muito tempo. Se eu faço uma pesquisa de mais de 20k de linhas, a aplicação demora mais de 8 minutos... Essa consulta eu puxo sem paginação porque a faço através do PHP + AngularJs que aplica a paginação com base no objeto json total recebido do banco de dados. Como posso otimizar essa query ou a tabela para ter melhor performance? Todas as colunas com a chavinha cinza de indice, estão agrupadas num indice indez unico.
  17. Guilherme Luiz

    Notice: Undefined variable:

    Leia o erro: Undefined variable significa que a variável chamada não foi declarada/definida.
  18. Guilherme Luiz

    Requisições GET assincronas com cURL

    Olá pessoal, Vamos abaixo: Meu carma Possuo uma aplicação que faz requisições a uma API em Rest via cURL. Durante o consumo desta API eu tenho diversas requisições e variaveis paralelas que fazem validação, inserção e edição de dados no banco de dados. Durante este processo, mesmo realizando a utilização de PHP + AngularJS a requisição até ser finalizada, deixa a pagina travada até que venha um response final da API requisitada. Possíveis técnicas a serem utilizadas Estive estudando algumas técnicas de threading e sockets, porem o servidor atual que utilizo não possui acesso a biblioteca pthreads para o threading e a utilização via socket não consegui compreender e faze-la funcionar rsrs. O que estou aplicando Fazendo alguns testes, percebi que ao aplicar o cURL com um timeout de 1 segundo "resolve" o problema porque desta forma realizo o fluxo: Capturo todos os dados que serão enviados a API Salvo dados capturados no BD (mysqli) Faço a requisição via cURL com timeout em 1 segundo para um script que fará a leitura destes dados pendentes de envio a API Com os dados capturados, faço a requisição a API e então salvo o retorno e faço as devidas validações ao meu BD em "segundo plano". De ante mão já reparei um "problema" que é justamente na requisição cURL com timeout em 1 segundo porque, uma vez que faço isso eu não tenho um retorno do meu script se ele foi requisitado ou não porque nem o http_code consigo recuperar para poder fazer qualquer tratativa e além disso também acredito que terei problemas no momento que o navegador do usuário atualizar porque a requisição feita será stopada e os dados serão salvos de forma parcial. Então, além destes problemas, temos algum outro "contra" a utilizar desta forma? Ao meu ver o que estou fazendo é mais uma gambiarra do que um código bem executado. O que eu preciso Uma orientação de como e qual a melhor técnica, tendo em vista minhas limitações de servidor citada acima (em relação ao pthreads), para poder realizar essa requisição GET de forma assíncrona. cURL "async" que estou utilizando error_reporting(E_ALL); $url = "www.meusite.com.br/pending/read.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); $result = curl_exec($ch); if($result){ var_dump(curl_getinfo($ch)); }else{ var_dump(curl_error($ch)); var_dump(curl_getinfo($ch)); } var_dump($result); curl_close($ch);
  19. Guilherme Luiz

    Requisições GET assincronas com cURL

    Pessoal, Consegui realizar via socket o que preciso vejam o exemplo: error_reporting(E_ALL); /* Get the port for the WWW service. */ $service_port = getservbyname('www', 'tcp'); /* Get the IP address for the target host. */ $url = parse_url("https://www.meusite.com.br/read.php"); $address = gethostbyname($url['host']); /* Create a TCP/IP socket. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } else { echo "OK.\n"; } echo "Attempting to connect to '$address' on port '$service_port'..."; $result = socket_connect($socket, $address, $service_port); if ($result === false) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; } else { echo "OK.\n"; } $in = "GET {$url['path']} HTTP/1.1\r\n"; $in .= "Host: {$url['host']}\r\n"; $in .= "Connection: Close\r\n\r\n"; $out = ''; echo "Sending HTTP HEAD request..."; socket_write($socket, $in, strlen($in)); echo "OK.\n"; // echo "Reading response:\n\n"; // while ($out = socket_read($socket, 2048)) { // echo $out; // } echo "Closing socket..."; socket_close($socket); echo "OK.\n\n"; Peguei este código do proprio manual do PHP. Neste modelo eu posso optar por não ler o response que o servidor roda em "segundo-plano" a requisição em GET e tenho o resultado esperado mesmo quando o navegador é fechado e o servidor não "trava" a navegação do usuário. De todas as formas, gostaria de comentários de quem entende um pouco mais sobre estes tipos de requisições para poder me ajudar na formação da logica com foco em melhor desempenho.
  20. Guilherme Luiz

    MySQL Workbench

    Desconheço
  21. Guilherme Luiz

    Duplicando registros mesmo com verificação?

    Para casos assim nas aplicações que crio eu não faço uma consulta para depois inserir registros, ainda mais se eu não quero tal ação.Você pode modificar seu banco de dados criando INDEXes que não permitem duplicação de registro baseado em colunas chaves. E no proprio código, na querie, você pode user o INSERT ON DUPLICATE KEY UPDATE - http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/ Desta forma o mysql vai atualizar o registro caso a querie de insert retorne algum erro sobre registro duplicado com base nas indexes criadas que eu comentei no inicio.
  22. Guilherme Luiz

    Select na tabela

    Eu não montaria essa tabela desta forma porque está agrupando valores diferentes a colunas identicas. Eu faria algo como: ID / PRODUTO / COR / TAMANHO 1 / Produto 1 / Azul / Grande 2 / Produto 2 / Vermelho / Pequeno etc... Criaria colunas para cada uma das especificações, mas dentro do seu caso a consulta ficaria algo como: SELECT * FROM tabela WHERE valor IN ('azul','grande') GROUP BY produto E dai então daria um fetch_assoc para listar os produtos 4 e 1 com seus respectivos valores. Essa querie vai buscar todos os registros que tenham AZUL e GRANDE na coluna VALOR e agrupar os resultados pela coluna PRODUTO.
  23. Guilherme Luiz

    Criptografar arquivos PHP

    Tenha em mente que qualquer coisa que você tenha elaborado em PHP hoje em dia, em algum lugar do mundo já existe algo similar porque tudo se resume a edição, inserção e exclusão de dados! Então essa preocupação para pequenos projetos é desnecessária no meu ponto de vista Venda de sistemas acaba esbarrando neste quesito. O ideal é o Saas para evitar "problemas". O que você pode fazer é simplesmente vender o seu código seguido de um "pacote de suporte" para futuras implementações/ajustes que o seu cliente precise. Assim você o amarra a você. Uma outra forma é "minificar" os códigos para dificultar as alterações mas indiferente disto se o seu cliente for curioso ele vai achar um meio de realizar modificações se quiser e se tiver o conhecimento.
  24. Guilherme Luiz

    Como enviar acão com jquery

    Você precisa ver sobre Onclick e Innerhtml... https://www.devmedia.com.br/ajax-tutorial/24797 bons estudos
  25. Guilherme Luiz

    Login

    https://pt.wikihow.com/Aprender-PHP-e-MySQL Bons estudos.
×

Informação importante

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