-
Total de itens
3968 -
Registro em
-
Última visita
-
Dias vencidos
47
Tudo que Williams Duarte postou
-
Criando uma seleção no banco de dados quando produto estiver vencendo
Williams Duarte respondeu ao tópico de Marcio_123 em PHP
Frequentemente deixo algumas Schedules rodando! docker run -d image_name '*/30 * * * * ___cmdstring___' Se é uma recorrencia mensal, que vence daqui 7 dias, jogo em uma fila e disparo a cobrança. Um dia antes do vencimento, vejo quem ainda no pagou e disparo um outro aviso. 3 dias depois outro, nao pagou, dispara um aviso de bloqueio após alguns dias , isto você controla em flags no DB Se a recorrencia é trimestral, semestral ou anual, não faz diferença na consulta, o importante é declarar no select, qual é o intervalo. SELECT DATE_ADD( CURDATE(), INTERVAL 7 days ); SELECT DATE_ADD( CURDATE(), INTERVAL 1 days ); E fazer o filtro. Obs, você tem que ter outros Jobs analisando cadastro etc, para nao ter erro nas cobranças, mas tudo depende das regras de negocios. -
Group By https://www.devmedia.com.br/desvendando-a-clausula-group-by-artigo-sql-magazine-47/8082
-
Quais extensões ativar para funções PHP funcionarem?
Williams Duarte respondeu ao tópico de guilhermefdavid em PHP
Básicas "Or you can specify individual packages like this instead:" https://www.colinodell.com/blog/201911/how-to-install-php-74 -
Criando uma seleção no banco de dados quando produto estiver vencendo
Williams Duarte respondeu ao tópico de Marcio_123 em PHP
Normalize seu banco, data ou é date, datetime ou timestamp etc, menos varchar. ou use strtotime para esta modificação da data! $day = date('d-m-Y'); $newDate = date('d/m/Y', strtotime($day . " +6 month")); echo $newDate; // 26/11/2020 SELECT * FROM tb_renovacao WHERE data_pgto = $newDate -
Ao colocar um código aqui no forum, ajude a te ajudar, ja deixe o formatado. use reduce para chegar onde quer, depois use as funções de array_map, array_filter oque for necessario. Aqui fiz um exemplo de uso do reduce Leia sobre https://www.php.net/manual/pt_BR/ref.array.php
- 1 resposta
-
- listar array
- array
-
(e mais 1 )
Tags:
-
Criando uma seleção no banco de dados quando produto estiver vencendo
Williams Duarte respondeu ao tópico de Marcio_123 em PHP
Aparentemente sua query esta errada, não tenho como testar no momento. Mas o correto seria algo assim: mysql> SELECT DATE_ADD( '2011-01-01', INTERVAL 6 month ); +--------------------------------------------+ | DATE_ADD( '2011-01-01', INTERVAL 6 month ) | +--------------------------------------------+ | 2011-07-01 | +--------------------------------------------+ SELECT * FROM tb_renovacao WHERE data_pgto = DATE_ADD(CURDATE(), INTERVAL 180 DAY)"); SELECT * FROM tb_renovacao WHERE data_pgto = DATE_ADD(NOW(), INTERVAL 180 DAY)"); Observaçao: Não use acentução etc em nomes de bancos e tabelas. -
Adicionar https://www.php.net/manual/pt_BR/function.array-push.php Somar https://www.php.net/manual/pt_BR/function.array-sum.php
-
Agora explicou direito. Utilize having com count De uma olhada no link abaixo: https://www.w3schools.com/sql/sql_having.asp
- 5 respostas
-
- mensagens
- mensagens não lidas
- (e mais 2 )
-
- 5 respostas
-
- mensagens
- mensagens não lidas
- (e mais 2 )
-
https://www.php.net/manual/pt_BR/pdostatement.rowcount.php + ID do usuário armazenado na sessão, junto ao select.
- 5 respostas
-
- mensagens
- mensagens não lidas
- (e mais 2 )
-
Você pode se conectar a quantos bancos quiser! Só tenha em mente que, tem que especificar qual é a conexão, na model ou diretamente na query, como o exemplo abaixo. $users = DB::connection('mysql')->select(...); $users2 = DB::connection('sql_server')->select(...); senao ira sempre pegar a conexao padrão declara em: 'default' => env('DB_CONNECTION', 'mysql'), https://github.com/laravel/laravel/blob/master/config/database.php Maiores detalhes abaixo: https://laravel.com/docs/6.x/database#using-multiple-database-connections https://stackoverflow.com/questions/31847054/how-to-use-multiple-databases-in-laravel
-
Sem entender o que é escopo de uma função e de variáveis, fica dificil mesmo. http://linguagemc.com.br/funcoes-e-escopo-de-variaveis/
-
Use regex $re = '/^.*#+\w*/m'; $str = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eu iaculis augue, eget hendrerit lorem. Vestibulum id dui rhoncus, sagittis libero in, lacinia diam. Sed id ultricies justo. Ut consequat mauris est, et iaculis turpis semper vitae. Quisque vel turpis bibendum, blandit nunc eu, dignissim nisi. Nullam vehicula, risus a consequat aliquam, massa massa consectetur tortor, ac venenatis ante metus eu nisi. Nunc quis ipsum non lorem luctus efficitur vitae et lorem. #hospital: Santa Rita, Santa Casa, Hosp Corp; #metro: Paraiso, Sé; #shopping: Avenida Center, Catuaí; Suspendisse hendrerit, tortor sed consectetur sollicitudin, urna urna sollicitudin nisi, ac facilisis lacus quam non nulla. Quisque lobortis id sem non laoreet. Integer varius, eros porttitor iaculis eleifend, mauris nisi rutrum metus, non aliquam ipsum magna sagittis sapien. Etiam ultrices nulla in ante lobortis, tempor fermentum libero laoreet. ";'; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); var_dump($matches); Saída array(3) { [0]=> array(1) { [0]=> string(9) "#hospital" } [1]=> array(1) { [0]=> string(6) "#metro" } [2]=> array(1) { [0]=> string(9) "#shopping" } } Se quiser até o ponto e virgula mude a variavel $re para $re = '/^.*#.* .+$/m'; Saida será array(3) { [0]=> array(1) { [0]=> string(45) "#hospital: Santa Rita, Santa Casa, Hosp Corp;" } [1]=> array(1) { [0]=> string(21) "#metro: Paraiso, Sé;" } [2]=> array(1) { [0]=> string(35) "#shopping: Avenida Center, Catuaí;" } }
-
Faz anos que não via código assim, este tipo de código que deu ao PHP a má fama "anos atrás", não se sabe se é procedural, funcional ou outra coisa! Modifique seu banco para ser autoincrement Depois adicione ao código de inserts, as seguintes linhas: $thread_id = $SQL->lastInsertId(); die($thread_id); E veja oque retorna
-
Bibliotecas de Assinatura Digital de Documentos
Williams Duarte respondeu ao tópico de fernandohenrique.dev em PHP
Ve se te ajuda a dar um norte! https://github.com/thiagomatrix/Assinatura-Digital -
arrays Dificuldades para criar arrays de outro array multidimensional
Williams Duarte respondeu ao tópico de lordzyrium em PHP
Faz o seguinte, use primeiro array_reduce e pega as notas e monte o array diciplina_notas, depois ou use map/filter para os demais dados e faça um merge. De uma olhada aqui no manual e estude funções para array https://www.php.net/manual/pt_BR/ref.array.php Exemplo $data = array_reduce($dados, function($accumulator, $item) { $accumulator['nome'][] = $item['nome']; $accumulator['etapa'][] = $item['etapa']; $accumulator['pos'][] = $item['pos']; $accumulator['not_dados'][] = $item['not_dados']; return $accumulator; }, []); print_r($data); Saída Array ( [nome] => Array ( [0] => Nome do Aluno [1] => Nome do Aluno [2] => Nome do Aluno ) [etapa] => Array ( [0] => 7º ANO [1] => 8º ANO [2] => 9º ANO ) [pos] => Array ( [0] => 7 [1] => 8 [2] => 9 ) [not_dados] => Array ( [0] => Array ( [0] => Array ( [0] => PORTUGUES [1] => 7,5 [2] => 120H [3] => AP ) [1] => Array ( [0] => REDAÇÃO [1] => 8,5 [2] => 40H [3] => AP ) [2] => Array ( [0] => HISTÓRIA [1] => 9,0 [2] => 80H [3] => AP ) [3] => Array ( [0] => GEOGRAFIA [1] => 7,0 [2] => 80H [3] => AP ) ) [1] => Array ( [0] => Array ( [0] => PORTUGUES [1] => 7,0 [2] => 120H [3] => AP ) [1] => Array ( [0] => HISTÓRIA [1] => 8,5 [2] => 80H [3] => AP ) [2] => Array ( [0] => REDAÇÃO [1] => 9,0 [2] => 40H [3] => AP ) [3] => Array ( [0] => GEOGRAFIA [1] => 8,5 [2] => 80H [3] => AP ) ) [2] => Array ( [0] => Array ( [0] => PORTUGUES [1] => 8,0 [2] => 120H [3] => AP ) [1] => Array ( [0] => HISTÓRIA [1] => 8,5 [2] => 80H [3] => AP ) [2] => Array ( [0] => REDAÇÃO [1] => 9,0 [2] => 40H [3] => AP ) [3] => Array ( [0] => GEOGRAFIA [1] => 8,0 [2] => 80H [3] => AP ) [4] => Array ( [0] => QUIMICA [1] => 8,5 [2] => 80H [3] => AP ) ) ) ) Bom não vou fazer para você, que o trampo é seu, estamos aqui só para orientar. Vai postando oque fez, que a comunidade te ajuda!- 4 respostas
-
- dificuldade array
- problema arrays
- (e mais 2 )
-
Como mantar o usuário logado e dar logoff por inatividade?
Williams Duarte respondeu ao tópico de Sapinn em PHP
Segue um tutorial de exemplo: http://www.devwilliam.com.br/php/sistema-de-login-com-cookies-no-php http://www.devwilliam.com.br/php/sistema-de-login-com-ajax-e-php -
Como mantar o usuário logado e dar logoff por inatividade?
Williams Duarte respondeu ao tópico de Sapinn em PHP
Cookie ou localStorage Armarzene o id do User em algum lugar com data de expiração, Verifique se a data esta expirada e pede para logar novamente, excluindo os Cookies ou localStorage Nada mais que um if, se o checkbox for marcado, mantenha os dados no Cookie ou localStorage, Senão, mantenha o logado em Session do PHP ou SessionStorage do Browser https://www.treinaweb.com.br/blog/quando-usar-sessionstorage-e-localstorage/ -
Input não recebe valor pelo $("input").val("meu novo valor");
Williams Duarte respondeu ao tópico de quimera em Javascript
Faz um teste com uma callback $("input[type=text]").keyup(function(){ alert(this.value); });- 3 respostas
-
- input
- javascript
-
(e mais 2 )
Tags:
-
Pegar dados de um While de uma Classe com Estrutura Preprada através de um novo objeto
Williams Duarte respondeu ao tópico de Jeovane Carvalho em PHP
De uma olha nestes padrões https://code.tutsplus.com/pt/tutorials/design-patterns-the-simple-factory-pattern--cms-22345 https://code.tutsplus.com/pt/tutorials/design-patterns-the-facade-pattern--cms-22238 -
Pegar dados de um While de uma Classe com Estrutura Preprada através de um novo objeto
Williams Duarte respondeu ao tópico de Jeovane Carvalho em PHP
Tente separar lógica, banco de dados, regras de negócio de seu algoritimo, e hospedagens será o de menos. Exemplo, com um único objeto, voce ilimina praticamente sete foreachs iguais, oque muda são os parâmetros public function retornarDadosDoElemento($dados_elet) { if(is_array($dados_elet)){ $tipos = array(); foreach ($dados_elet as $key => $thing) { $tipos[$key] = $thing; } return $tipos; } return false; } // uso $var = $this->retornarDadosDoElemento($dados_elet->valor); Estes SQL, também estao se repetindo $ativo=$this->ativo=1; $sql_1=$conexao->prepare("SELECT i.id,i.id_produto_tipo,i.id_produto_subtipo,t.tipo,n.tipo_nome FROM dados_anuncio i LEFT JOIN tipo_produto t ON (t.id = i.id_produto_tipo)LEFT JOIN subtipo_produto n ON (n.id = i.id_produto_subtipo) WHERE i.ativo=? AND n.tipo_nome LIKE '%el%' ORDER BY i.id DESC LIMIT ".$limit.""); $sql_1->bind_param('s',$ativo); $sql_1->execute(); $sqlL_1=$sql_1->bind_result($id,$id_produto_tipo,$id_produto_subtipo,$tipo, $tipo_nome); O que muda são alguns parametros, repare que, se a dados se repetindo, ha uma necessidade de refatoração. Sendo assim abstrai em uma outras classes. Depois injete por meio de dependencias Abaixo é nescessario em OOP while ($sql_1->fetch()) { $this->id[]=$id; $this->tipo[]=$tipo; $this->tipo_nome[]=$tipo_nome; $this->foto_exibicao[]=$foto_exibicao; $this->foto_grande[]=$foto_grande; $this->foto_titulo[]=$foto_titulo; $this->valor[]=$valor; } separe isto em uma função da classe e retorne somente o fetch return $sql->fetch(); Voce pode passar a conexão como dependencia. Resumindo, seu problema não é qualquer lib, mas sim compreender oque é orientação objetos, e a conexão sera de menos. Há não ser que, o php não de suporte a algumas funções de conexão. Por hora desconheço. -
retirar aspas e colchetes vindos de um select no banco de dados (dependente id)
Williams Duarte respondeu ao tópico de Jonas_Britto em PHP
$result['data'][$key] = array( $img, $value['n_titulo'], $value['name'], $value['cpf'], implode(json_decode($value['dependente_id']), ','), $availability, $buttons );- 2 respostas
-
- retirar aspas
- retirar colchetes
- (e mais 1 )
-
Já verificou se existe esta possbilidade de envio, por esta API?
-
arrays Dificuldades para criar arrays de outro array multidimensional
Williams Duarte respondeu ao tópico de lordzyrium em PHP
Com as novidades versão do php, a 7.4, você consegue fazer isto de uma forma mais simples. Entrou na parada Arrow Functions e Spread Operator duas funções no maximo você extrai tudo isto ai, e monta da forma como quer! https://www.php.net/manual/pt_BR/function.array-map.php https://www.php.net/manual/pt_BR/function.array-filter.php- 4 respostas
-
- dificuldade array
- problema arrays
- (e mais 2 )
-
Neste caso, entra o ACL "Regras de Acesso" https://pt.wikipedia.org/wiki/Lista_de_controle_de_acesso Mas as autorizações continuam pelo JWT, independente que se tenha um endpoint para Users Admin e outro para Users "comuns", vou dar um exemplo do meu endpoint users Quando eu autentico no sistema, me retorna o seguinte resultado. { "data": { "id": 1, "username": "DUARTE", "email": "example@outlook.com", "email_verified_at": null, "active": true, "admin": true, "last_login": "2020-04-21 00:44:42" }, "meta": { "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODAwMFwvYXBpXC9hZG1pbmlzdHJhdGl2ZVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1ODc0OTIxNDQsImV4cCI6MTU4NzQ5NTc0NCwibmJmIjoxNTg3NDkyMTQ0LCJqdGkiOiJUS1hRY3JRcmVxaUZqb0R0Iiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.UeTE5E4eYZOO9S5wNWCU3I3nA1CZYfc3nxchn6_NE9k", "token_type": "bearer", "expires_in": 3600 } } A segunda chamada, envio o token de volta, "invalido este token, renovo e trago outro no corpo do json". E o ID do usuario envio via post e seleciono todos o meus dados do banco e as regras de acesso "ACL" e as mantenho em Local Storage no navegador, para uso da aplicação SPA. { "data": { "id": 1, "username": "WSDUARTE", "email": "example@outlook.com", "email_verified_at": null, "active": true, "admin": true, "last_login": "2020-04-21 15:02:24", "profiles": null, "phones": [ { "id": 1, "user_id": 1, "phone": "(24) 95922-7390" } ], "addresses": [], "roles": [ { "id": 1, "name": "admin", "label": "Administrator", "standard": true, "permissions": [ { "id": 1, "name": "browser", "label": "Browser", "standard": true, }, { "id": 2, "name": "create", "label": "Create", "standard": true, }, { "id": 3, "name": "list", "label": "List", "standard": false, }, { "id": 4, "name": "edit", "label": "Edit", "standard": true, }, { "id": 5, "name": "delete", "label": "Delete", "standard": true, } ] } ] }, , "meta": { "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODAwMFwvYXBpXC9hZG1pbmlzdHJhdGl2ZVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1ODc0OTIxNDQsImV4cCI6MTU4NzQ5NTc0NCwibmJmIjoxNTg3NDkyMTQ0LCJqdGkiOiJUS1hRY3JRcmVxaUZqb0R0Iiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.UeTE5E4eYZOO9S5wNWCU3I3nA1CZYfc6sxchn6_8s9k", "token_type": "bearer", "expires_in": 604800 } } Há várias formas de se fazer isto, enviar o id no corpo do token, fora, pegar por id, sessão e comparar o que está no token, a lógica é esta e usar SSL. PS. eu tenho aplicação php, que se comunica com Endpoints em Node, com a mesma secret. Não há uma receita de bolo! Obs.: Na duvida e use um Framework tipo o Lumen, e instala o pacote de JWT e já estara pronto para usar. Mas ele vai pela mesma logica acima. Fiz uma com node.js ea mesma filosofia. Voce tem que saber a base de como tudo funciona.