Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.411
  • Registro em

  • Última visita

4 Seguidores

Sobre Frank K Hosaka

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Frank K Hosaka's Achievements

0

Reputação

  1. Quando comecei a estudar o Laravel eu usei o Bootstrap. Com o surgimento da inteligência artificial em 2024, ficou bem mais fácil usar o Tailwinds. Hoje fiz uma experiência para saber se dava para usar os dois ao mesmo tempo, e deu certo: arquivo testeView.blade.php <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> @vite(['resources/css/app.css', 'resources/js/app.js']) <table class='m-0 m-auto'> <tr class=bg-secondary> <td>{{'limão'}}<td> <td><form class=m-0 style=height:10px> @csrf <input value=1 size=1 class="form-control text-end bg-transparent border-0" style=height:10px> </form> <td>{{'x 1'}} <td>{{'='}} <td>{{1}} </table> <div class=h-1></div> <div class="flex bg-secondary m-0 m-auto w-[160]"> <div>{{'limão'}}</div> <div> <form class="m-0 h-[10px]"> @csrf <input value=1 size=1 class="text-right bg-transparent border-none h-[10px] mt-1"> </form> </div> <div>{{'x 1'}}</div> <div>{{'='}}</div> <div>{{1}}</div> </div>
  2. arquivo testeView.blade.php @include('appView') @php $class='class="text-red-500"' @endphp <span <?=$class?>>Teste</span> <!--funciona--> <span {{$class}}>Teste</span> <!-- não --> <span {{{$class}}}>Teste</span> <!-- não --> <span {!! $class !!}>Teste</span> <!-- modo blade de usar caracteres HTML sem escapar -->
  3. Eu não tenho VBA, mas eu tenho Excel. Criei uma nova planilha, e na planilha Plan1 eu escrevi teste na célula a1, a2 e a3. Eu fui no painel de programação do Excel e com a ajuda do Copilot, eu ajustei o seu código: Sub Gerar_Pdf() Dim criarpasta As String, caminho_arquivo As String Dim ws As Worksheet 'Define a planilha explicitamente Set ws = ThisWorkbook.Sheets("Plan1") criarpasta = ThisWorkbook.Path & "\Formularios" If Dir(criarpasta, vbDirectory) = "" Then MkDir criarpasta End If With ws .Activate caminho_arquivo = ThisWorkbook.Path & "\Formularios\" & .Range("A3").Value & ".PDF" .Range("A1:A2").ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho_arquivo End With End Sub Na Janela Imediata, eu escrevi Gerar_Pdf e deu certo. Se não der certo, veja em Ferramentas > Referências se estão marcados as seguintes: Visual Basic for Applications Microsoft Excel 16.0 Object Libray OLE Automation Microsoft Office 16.0 Object Library Se você estiver trabalhando com o VBA puro, sugiro procurar os comandos equivalentes.
  4. Estou estudando Tailwinds com o Copilot, estou aprendendo a usar o marcador <div>. Para colocar uma <div> em cima da outra, você não precisa fazer nada. Para colocar uma <div> do lado da outra, aí você precisa usar <div class="flex">. Para colocar diferentes números de <div> em cada linha, aí você precisa usar <div class="flex flex-wrap">. O problema é alinhar as colunas. O Tailwinds tem ótimas ferramentas para fazer ajustes, do tipo margem negativa. Isso é uma grande maravilha, desde que a linha não seja sombreada. O Copilot ofereceu uma sugestão, mas o código iria ficar enorme. Eu resolvi apelar para a velha gambiarra do &nbsp. Mas eu tive que usar 7 &nbsp. Na internet encontrei a sugestão do &ensp, ele é maior que o &nbsp: arquivo outrosView.blade.php @include('menuView') <script> btmenu.innerHTML = 'Outros'; document.title = "Outros"; </script> <div class="px-2 bg-gray-200"><a href="estoqueBaixar">Baixar Estoque</a></div> <div class=px-2><a href="balanceteTBW">Criar tbw</a></div> <div class="px-2 bg-gray-200"><a href="produtoDescontinuar">Descontinuar Produto</a></div> <div class=px-2><a href="estoqueDiferenca">Diferença no Estoque</a></div> <div class="px-2 bg-gray-200"><a href="blingDiferenca">Diferença na Bling</a></div> <div class=px-2><a href="estoqueEntrada">Entrada de Produtos</a></div> <div class="px-2 bg-gray-200"><a href="outrosMegaSena">Mega-Sena</a></div> <div class=px-2><a href="estoqueNota">Nota do Fornecedor</a></div> <div class="px-2 bg-gray-200"><a href="blingFalta">Nota Faltante</a></div> <div class="flex flex-wrap"> <div class="w-1/2 px-2">session('codp')</div> <div class="w-1/2">{{$sessao['codp']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('pessoa')</div> <div class="w-1/2 bg-gray-200">{{$sessao['pessoa']}}</div> <div class="w-1/2 px-2">session('criterio')</div> <div class="w-1/2">{{$sessao['criterio']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('criterioPessoa')</div> <div class="w-1/2 bg-gray-200">{{$sessao['criterioPessoa']}}</div> <div class="w-1/2 px-2">session('dia')</div> <div class="w-1/2">{{dbr($sessao['dia'])}}</div> <div class="w-1/2 px-2 bg-gray-200">session('end')</div> <div class="w-1/2 bg-gray-200">{{$sessao['end']}}</div> <div class="w-1/2 px-2">session('id')</div> <div class="w-1/2">{{$sessao['id']}}</div> <div class="w-1/2 px-2 bg-gray-200">session('lcto')</div> <div class="w-1/2 bg-gray-200">{{$sessao['lcto']}}</div> <div class="w-1/3 px-2">env('lctoBaixaEstoque')</div> <div class="w-1/3 text-center ml-4">{{$baixa}}</div> <div class="w-1/3 text-right text-red-500 -ml-4"> {{dec($valorBaixa)}}</div> <div class="w-1/3 px-2 bg-gray-200">env('lctoAcertoMais')</div> <div class="w-1/3 text-center bg-gray-200">&ensp;&ensp;&ensp;&nbsp;{{$mais}}</div> <div class="w-1/3 text-right text-red-500 bg-gray-200">{{dec($valorMais)}}</div> <div class="w-1/3 px-2 ">env('lctoAcertoMenos')</div> <div class="w-1/3 text-center ml-4">{{$menos}}</div> <div class="w-1/3 text-right text-red-500 -ml-4">{{dec($valorMenos)}}</div> <div class="w-1/2 px-2 bg-gray-200">env('diaAcerto')</div> <div class="w-1/2 bg-gray-200">{{dbr($diaAcerto)}}</div> </div>
  5. 10 gb ou 21 gb é muita coisa! Desconfio que tem muito vídeo dentro do WhatsApp. Aconselho a entrar em configurações, Armazenamento e dados, Gerenciar Armazenamento, espere um pouco, e o WhatsApp vai apontar todos os arquivos maiores que 5 mb. Analise com calma, se você não precisar, elime. Sugiro fazer o mesmo no aplicativo Galeria, elimine os vídeos que não são necessários.
  6. Gastei dois dias para transformar um arquivo com o CSS Bootstrap para o Tailwinds, tive que trocar um monte de <td> por um monte de <div>: arquivo balanceteView.blade.php @include('menuView') <script>btMenu.innerHTML="Balancete";document.title="Balancete"</script> <div class="flex bg-gray-200"> <div style=width:350px><a href='balanceteApura'>{{$apuracao->apuracao}}</a></div> <div style=width:200px class=text-right>Anterior</div> <div style=width:200px class=text-right>Débito</div> <div style=width:200px class=text-right>Crédito</div> <div style=width:200px class=text-right>Saldo</div> </div> @foreach($balancete as $conta) <div class="flex bg-gray-200 odd:bg-white even:bg-gray-200"> <div style=width:50px><a href="balanceteRazao?conta={{$conta->conta}}">{{$conta->conta}}</a></div> <div style=width:300px>{{$conta->descricao}}</div> <div style=width:200px class=text-right>{{dec($conta->inicio)}}</div> <div style=width:200px class=text-right>{{dec($conta->debito)}}</div> <div style=width:200px class=text-right>{{dec($conta->credito)}}</div> <div style=width:200px class=text-right>{{dec($conta->fim)}}</div> </div> @if($conta->conta==304) <div class="flex bg-white"> <div style=width:950px class="text-right font-semibold">Receita</div> <div style=width:200px class="text-right font-semibold">{{dec($receita)}}</div> </div> @endif </div> @endforeach <div class="flex bg-white"> <div style=width:950px class="text-right font-semibold">Despesa</div> <div style=width:200px class="text-right font-semibold">{{dec($despesa)}}</div> </div> <div class="flex bg-gray-200"> <div style=width:550px class="text-right font-semibold">{{dec($anterior)}}</div> <div style=width:400px class="text-right font-semibold">{{$nota}}</div> <div style=width:200px class="text-right font-semibold">{{dec($resultado)}}</div> </div> e apenas alguns segundos para acabar com a lentidão da minha função balancete: arquivo Balancete.php (listagem parcial) <?php // ... function inicio (Request $request) { $previa=$this->balancete(); $balancete=$previa->balancete; $apuracao=$previa->apuracao; $anterior=$previa->anterior; $receita=$previa->receita; $despesa=$previa->despesa; $resultado=$previa->resultado; $nota=$previa->nota; return view('balanceteView',['balancete'=>$balancete, 'apuracao'=>$apuracao,'anterior'=>$anterior,'despesa'=>$despesa, 'receita'=>$receita,'resultado'=>$resultado,'nota'=>$nota]); } function balancete() { $receita = 0; $despesa = 0; $anterior = 0; $balancete = []; $contas = tbconta::all(); if (!session()->has('dia')) { session(['dia' => date('Y-m-d')]); } $apuracao = apuracao(session('dia')); $primeiroDia = $apuracao->primeiroDia; $ultimoDia = $apuracao->ultimoDia; // Agregações para melhorar a performance $debitosAnteriores = tbdiario::where('dia', '<', $primeiroDia) ->select('contad', \DB::raw('SUM(valor) as debito_anterior')) ->groupBy('contad') ->pluck('debito_anterior', 'contad')->all(); $creditosAnteriores = tbdiario::where('dia', '<', $primeiroDia) ->select('contac', \DB::raw('SUM(valor) as credito_anterior')) ->groupBy('contac') ->pluck('credito_anterior', 'contac')->all(); $debitos = tbdiario::whereBetween('dia', [$primeiroDia, $ultimoDia]) ->select('contad', \DB::raw('SUM(valor) as debito')) ->groupBy('contad') ->pluck('debito', 'contad')->all(); $creditos = tbdiario::whereBetween('dia', [$primeiroDia, $ultimoDia]) ->select('contac', \DB::raw('SUM(valor) as credito')) ->groupBy('contac') ->pluck('credito', 'contac')->all(); $debitosFinais = tbdiario::where('dia', '<=', $ultimoDia) ->select('contad', \DB::raw('SUM(valor) as debito_fim')) ->groupBy('contad') ->pluck('debito_fim', 'contad')->all(); $creditosFinais = tbdiario::where('dia', '<=', $ultimoDia) ->select('contac', \DB::raw('SUM(valor) as credito_fim')) ->groupBy('contac') ->pluck('credito_fim', 'contac')->all(); foreach ($contas as $conta) { $debitoAnterior = isset($debitosAnteriores[$conta->conta]) ? $debitosAnteriores[$conta->conta] : 0; $creditoAnterior = isset($creditosAnteriores[$conta->conta]) ? $creditosAnteriores[$conta->conta] : 0; $inicio = $debitoAnterior - $creditoAnterior; $anterior += $inicio; $debito = isset($debitos[$conta->conta]) ? $debitos[$conta->conta] : 0; $credito = isset($creditos[$conta->conta]) ? $creditos[$conta->conta] : 0; $debitoFim = isset($debitosFinais[$conta->conta]) ? $debitosFinais[$conta->conta] : 0; $creditoFim = isset($creditosFinais[$conta->conta]) ? $creditosFinais[$conta->conta] : 0; $fim = $debitoFim - $creditoFim; if ($conta->conta >= 301 && $conta->conta <= 304) { $receita += $fim; } if ($conta->conta > 304) { $despesa += $fim; } $balancete[] = [ 'conta' => $conta->conta, 'descricao' => $conta->descricao, 'inicio' => $inicio, 'debito' => $debito, 'credito' => $credito, 'fim' => $fim, ]; } $resultado = $receita + $despesa; $nota = ($resultado < 0) ? "Lucro" : "Prejuízo"; $balancete = json_decode(json_encode($balancete)); return json_decode(json_encode([ 'balancete' => $balancete, 'apuracao' => $apuracao, 'anterior' => $anterior, 'despesa' => $despesa, 'receita' => $receita, 'resultado' => $resultado, 'nota' => $nota, ])); } Esse Copilot é fora de série!
  7. Eu uso o VBA for Aplications do Microsoft Access, mas acredito que a solução seja válida no VBA. Ao invés de usar três rotinas, a minha sugestão é usar apenas duas, assim: Option Compare Database Private Sub ListBox1_DblClick(Cancel As Integer) Me.txt_data = ListBox1.Value Call txt_data_Exit(Cancel) End Sub Private Sub txt_data_Exit(Cancel As Integer) If IsDate(txt_data.Value) Then Me.txt_mes.Value = Format(txt_data.Value, "mmmm") Me.txt_ano.Value = Format(txt_data.Value, "yyyy") Else MsgBox "Por favor, insira uma data válida.", vbExclamation Me.txt_mes.Value = "" Me.txt_ano.Value = "" Me.txt_data.Value = "" End If End Sub
  8. Depois de criar o meu projeto, criar o meu API_KEY, ativar o recurso do Google Maps, finalmente eu consegui pegar o valor do place.formatted_address. Isso não é lá grande coisa. Pelo que eu entendi, para obter as informações mais detalhadas do place, é preciso fazer outra solicitação, primeiro você tem que ter o place.id, depois você faz a solicitação do place details. Mas eu estou contente, esse é o meu primeiro código com o Google Maps: <!DOCTYPE html> <html> <head> <title>Maps and Places Autocomplete</title> <script> async function init() { await customElements.whenDefined('gmp-map'); const map = document.querySelector('gmp-map'); const marker = document.querySelector('gmp-advanced-marker'); const placePicker = document.querySelector('gmpx-place-picker'); const infowindow = new google.maps.InfoWindow(); map.innerMap.setOptions({ mapTypeControl: false }); placePicker.addEventListener('gmpx-placechange', () => { const place = placePicker.value; if (!place.location) { window.alert("No details available for input: '" + place.name + "'"); infowindow.close(); marker.position = null; return; } if (place.viewport) { map.innerMap.fitBounds(place.viewport); } else { map.center = place.location; map.zoom = 17; } marker.position = place.location; infowindow.setContent( `<strong>${place.displayName}</strong><br> <span>${place.formattedAddress}</span>` ); infowindow.open(map.innerMap, marker); conteudo.value = place.formattedAddress; }); map.innerMap.addListener('click', function(event) { const lat = event.latLng.lat(); const lng = event.latLng.lng(); const geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'location': { lat: lat, lng: lng } }, function(results, status) { if (status === 'OK' && results[0]) { const place = results[0]; const formattedAddress = place.formatted_address; infowindow.setContent(`<div><strong>${formattedAddress}</strong></div>`); infowindow.setPosition(event.latLng); infowindow.open(map.innerMap); conteudo.value= formattedAddress; } else { console.error('Nenhum resultado encontrado: ' + status); } }); }); } document.addEventListener('DOMContentLoaded', init); </script> <script type="module" src="https://unpkg.com/@googlemaps/extended-component-library@0.6"></script> <style> html, body { height: 90%; margin: 0; padding: 0; } .place-picker-container { padding: 20px; } </style> </head> <body> <gmpx-api-loader key="YOUR_API_KEY" solution-channel="GMP_GE_mapsandplacesautocomplete_v1"></gmpx-api-loader> <gmp-map center="40.749933,-73.98633" zoom="13" map-id="DEMO_MAP_ID"> <div slot="control-block-start-inline-start" class="place-picker-container"> <gmpx-place-picker placeholder="Enter an address"></gmpx-place-picker> </div> <gmp-advanced-marker></gmp-advanced-marker> </gmp-map> <div style="width:500px; margin-left:50px; margin-top:50px"> <form action="cadastro.php" method="post"> Conteudo <input id="conteudo" name="conteudo" size="80"> <input type="submit"> </form> </div> </body> </html>
  9. Eu não consegui trabalhar com o API do Places, mas se você conseguiu a informação na forma de texto, aqui segue a sugestão: <!DOCTYPE html> <html> <head> <title>Obter Conteúdo dos Spans de uma Variável</title> </head> <body> <div id="output"></div> <script> // Suponha que esta seja a string contendo o HTML const htmlString = ` <span class="street-address">Av. Paulista, 302</span> - <span class="extended-address">Bela Vista</span>, <span class="locality">São Paulo</span> - <span class="region">SP</span>, <span class="postal-code">01310-904</span>, <span class="country-name">Brasil</span> `; // Parsear a string HTML para um documento DOM const parser = new DOMParser(); const doc = parser.parseFromString(htmlString, 'text/html'); // Função para obter o conteúdo de um span com uma classe específica function getContentByClass(className) { return doc.querySelector(`.${className}`).textContent; } // Obter o conteúdo de cada span const streetAddress = getContentByClass('street-address'); const extendedAddress = getContentByClass('extended-address'); const locality = getContentByClass('locality'); const region = getContentByClass('region'); const postalCode = getContentByClass('postal-code'); const countryName = getContentByClass('country-name'); // Exibir o conteúdo obtido const outputDiv = document.getElementById('output'); outputDiv.innerHTML = ` <p><strong>Endereço:</strong> ${streetAddress}</p> <p><strong>Endereço Extendido:</strong> ${extendedAddress}</p> <p><strong>Cidade:</strong> ${locality}</p> <p><strong>Estado:</strong> ${region}</p> <p><strong>CEP:</strong> ${postalCode}</p> <p><strong>País:</strong> ${countryName}</p> `; </script> </body> </html>
  10. Usando o PHP, hoje eu aprendi como desenhar o logotipo do Laravel no HTML e também na guia do navegador: arquivo index.html <link rel="icon" type="image/svg+xml" href="favicon.svg"> <div style="height:50px;width:50px"> <embed src="favicon.svg" type="image/svg+xml" /> </div> arquivo favicon.svg <svg viewBox="0 0 316 316" xmlns="http://www.w3.org/2000/svg"> <path d="M305.8 81.125C305.77 80.995 305.69 80.885 305.65 80.755C305.56 80.525 305.49 80.285 305.37 80.075C305.29 79.935 305.17 79.815 305.07 79.685C304.94 79.515 304.83 79.325 304.68 79.175C304.55 79.045 304.39 78.955 304.25 78.845C304.09 78.715 303.95 78.575 303.77 78.475L251.32 48.275C249.97 47.495 248.31 47.495 246.96 48.275L194.51 78.475C194.33 78.575 194.19 78.725 194.03 78.845C193.89 78.955 193.73 79.045 193.6 79.175C193.45 79.325 193.34 79.515 193.21 79.685C193.11 79.815 192.99 79.935 192.91 80.075C192.79 80.285 192.71 80.525 192.63 80.755C192.58 80.875 192.51 80.995 192.48 81.125C192.38 81.495 192.33 81.875 192.33 82.265V139.625L148.62 164.795V52.575C148.62 52.185 148.57 51.805 148.47 51.435C148.44 51.305 148.36 51.195 148.32 51.065C148.23 50.835 148.16 50.595 148.04 50.385C147.96 50.245 147.84 50.125 147.74 49.995C147.61 49.825 147.5 49.635 147.35 49.485C147.22 49.355 147.06 49.265 146.92 49.155C146.76 49.025 146.62 48.885 146.44 48.785L93.99 18.585C92.64 17.805 90.98 17.805 89.63 18.585L37.18 48.785C37 48.885 36.86 49.035 36.7 49.155C36.56 49.265 36.4 49.355 36.27 49.485C36.12 49.635 36.01 49.825 35.88 49.995C35.78 50.125 35.66 50.245 35.58 50.385C35.46 50.595 35.38 50.835 35.3 51.065C35.25 51.185 35.18 51.305 35.15 51.435C35.05 51.805 35 52.185 35 52.575V232.235C35 233.795 35.84 235.245 37.19 236.025L142.1 296.425C142.33 296.555 142.58 296.635 142.82 296.725C142.93 296.765 143.04 296.835 143.16 296.865C143.53 296.965 143.9 297.015 144.28 297.015C144.66 297.015 145.03 296.965 145.4 296.865C145.5 296.835 145.59 296.775 145.69 296.745C145.95 296.655 146.21 296.565 146.45 296.435L251.36 236.035C252.72 235.255 253.55 233.815 253.55 232.245V174.885L303.81 145.945C305.17 145.165 306 143.725 306 142.155V82.265C305.95 81.875 305.89 81.495 305.8 81.125ZM144.2 227.205L100.57 202.515L146.39 176.135L196.66 147.195L240.33 172.335L208.29 190.625L144.2 227.205ZM244.75 114.995V164.795L226.39 154.225L201.03 139.625V89.825L219.39 100.395L244.75 114.995ZM249.12 57.105L292.81 82.265L249.12 107.425L205.43 82.265L249.12 57.105ZM114.49 184.425L96.13 194.995V85.305L121.49 70.705L139.85 60.135V169.815L114.49 184.425ZM91.76 27.425L135.45 52.585L91.76 77.745L48.07 52.585L91.76 27.425ZM43.67 60.135L62.03 70.705L87.39 85.305V202.545V202.555V202.565C87.39 202.735 87.44 202.895 87.46 203.055C87.49 203.265 87.49 203.485 87.55 203.695V203.705C87.6 203.875 87.69 204.035 87.76 204.195C87.84 204.375 87.89 204.575 87.99 204.745C87.99 204.745 87.99 204.755 88 204.755C88.09 204.905 88.22 205.035 88.33 205.175C88.45 205.335 88.55 205.495 88.69 205.635L88.7 205.645C88.82 205.765 88.98 205.855 89.12 205.965C89.28 206.085 89.42 206.225 89.59 206.325C89.6 206.325 89.6 206.325 89.61 206.335C89.62 206.335 89.62 206.345 89.63 206.345L139.87 234.775V285.065L43.67 229.705V60.135ZM244.75 229.705L148.58 285.075V234.775L219.8 194.115L244.75 179.875V229.705ZM297.2 139.625L253.49 164.795V114.995L278.85 100.395L297.21 89.825V139.625H297.2Z"/> </svg>
  11. Eu não sei o que é franquia, assim vou imaginar que você quer vender pastel em São Paulo e em Curitiba. O primeiro problema é você ser dono de um domínio tipo pastel.com.br, se você conseguir comprar esse domínio, lá você pode hospedar o seu banco de dados, o seu código e suas imagens. No caso das imagens, eu acredito que ele vai ficar no endereço pastel.com.br/imagens. Mesmo que você fabrique pastel em Curitiba, não vejo nenhum motivo para criar um novo site. O usuário digita "pastel.com.br", digita "3 pastel de carne", digita o endereço "Manaus", paga o pastel, mas é o código que vai decidir de onde vai sair o pastel, se de São Paulo ou de Curitiba. Mas se você acha que é negócio ter um site para cada fábrica de pastel, acredito que o primeiro seria coisa do tipo saopaulo.pastel.com.br e o segundo curitiba.pastel.com.br, você pode hospedar um banco de dados para cada site, ou usar o mesmo banco de dados para os dois, mas as imagens, cada um deve ter o seu conjunto, mesmo que sejam iguais.
  12. O meu banco de dados Diario tem muitas tabelas como cache e sessions que foram criadas quando instalei o recurso do Breezer que é usado para fazer login. O problema é que não tem nada nessas tabelas. Outro problema é que não existe nenhum Model para cada uma das tabelas que o Breezer criou. O Copilot me informou que o Laravel consegue acessar diretamente a tabela no MySQL sem precisar criar um Model para a tabela. Então, joguei fora todas as tabelas que não tinham nada. Resultado: não consegui logar no Laravel. Conclusão: mesmo que as tabelas não tenham nada, elas servem para logar no Laravel.
  13. Frank K Hosaka

    Problema

    arquivo grupoA.txt elemento1:senha elemento2:senha arquivo grupoB.txt elemento elemento1 elemento2 arquivo index.php <?php class config // isso eu improvisei { public $passwd = 'grupoA.txt'; public $users = 'grupoB.txt'; public $advanced_users = 'grupoB.txt'; public $semi_admins_proxy = 'grupoB.txt'; public $admins_proxy = 'grupoB.txt'; static function proxy(){ } } function global_no_assoc() { $config = new config(); $config->proxy(); $array = file($config->passwd); $pass = array(); for($i=0; $i<count($array); $i++) { $narray = explode(':',$array[$i]); array_push($pass,$narray[0]); // alterei aqui e acrescentei nova regra no comando file } $array_users = file($config->users, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $array_advanced_users = file($config->advanced_users, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $array_semi_admins_proxy = file($config->semi_admins_proxy, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $array_admins_proxy = file($config->admins_proxy, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $result = array_diff($pass,$array_users,$array_advanced_users, $array_admins_proxy,$array_semi_admins_proxy); return $result; } var_dump(global_no_assoc()); // o resultado é um array vazio, pois coloquei // o elemento1 e elemento2 no grupoB.txt // gostei desse trabalho, não sabia que era possível montar um // array com um arquivo de texto, o problema é que // o espaço e o pulo da linha altera o tamanho dos elementos // e isso provoca uma baita diferença no comando array_diff.
  14. O Copilot alertou várias vezes para não mexer no id da tabela, mesmo assim ele me ensinou e criei esse código: <?php // ... (new conn)->update("tbdiario set valor=0 where lcto=$lcto"); (new conn)->delete("tbhistprod where lcto=$lcto"); $idPosterior=(new conn)->select("id from tbhistprod order by id desc")[0]->id; $idPosterior++; (new conn)->exec("alter table tbhistprod auto_increment = $idPosterior"); Comigo funcionou, mas que dá medo, isso dá!
  15. O cálculo vetorial do Copilot é muito inteligente, o problema é que levei um tempão para entender, mas eu consegui: Se o vetor do código não existir, então crie o vetor. Se ele existir, então atualize o vetor se a data for mais recente. Depois de entender, fica bem mais fácil memorizar.
×
×
  • Criar Novo...