Você está aqui: Laravel ::: Artigos e Tutorias ::: CRUD - CREATE, READ, UPDATE, DELETE |
Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 3Quantidade de visualizações: 2604 vezes |
Na parte 2 deste tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB) nós criamos uma rota de direcionamento do tipo recursos, ou seja, para um controlador LivroController que contém todos os métodos necessários para manipular o modelo (model) Livro. Fizemos também toda a parte do CREATE do nosso CRUD. Dessa forma, a gravação do livro no banco de dados MySQL já está completo. Nessa terceira parte do tutorial nós vamos listar os livros já cadastrados e oferecer as opções para exibir os detalhes de um livro, editá-lo ou excluí-lo. Vamos começar com a listagem. Como listar os livros já cadastrados O primeiro passo para listar os livros cadastrados na tabela do banco de dados MySQL é acrescentar um método index() no controle LivroController. Abra o arquivo LivroController.php e modifique-o para a versão abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php namespace App\Http\Controllers; use App\Models\Livro; use Illuminate\Http\Request; class LivroController extends Controller{ // mostra a view listando os livros cadastrados public function index(){ // obtém todos os livros cadastrados $livros = Livro::all(); // direciona para a view e fornece um vetor // contendo os livros return view('livros.index', compact('livros')); } // mostra a view para cadastrar um novo livro public function create(){ return view('livros.create'); } // recebe as informações do formulário e as grava // no banco de dados public function store(Request $request){ // valida o formulário $request->validate([ 'titulo' => 'required', 'autor' => 'required', 'paginas' => 'required']); // obtém os valores do form Livro::create($request->all()); // direciona para página cadastro novamente, // com uma mensagem de sucesso return redirect()->route('livros.create') ->with('mensagem', 'Livro salvo com sucesso.'); } } ?> Veja que no método index() nós fazemos uma chamada ao método all() do Eloquent para obter todos os registros da tabela livros. Em seguida nós fornecemos o vetor retornado para a view index. Vamos agora criar a view e aprender como obter a lista de livros enviada pelo controller e exibí-la. Como listar na view os dados recebidos do controller LivroController Vá até o diretório C:\xampp\htdocs\biblioteca\resources\views\livros e crie um arquivo chamado index.blade.php. Modifique o seu código para a listagem abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <html> <head> <meta charset="utf-8"> <title>Biblioteca</title> </head> <body> <h1>Livros Cadastrados</h1> @if($status = Session::get('mensagem')) <h2>{{ $status }}</h2> @endif <h4><a href="{{ route('livros.create') }}">Cadastrar Novo Livro</a></h4> <table width="709" border="1" cellspacing="0" cellpadding="3"> <tr> <td width="85" align="center"><strong>Id</strong></td> <td width="161" align="center"><strong>Título</strong></td> <td width="156" align="center"><strong>Autor</strong></td> <td width="98" align="center"><strong>Páginas</strong></td> <td width="167" align="center"><strong>Opções</strong></td> </tr> @foreach($livros as $livro) <tr> <td align="center">{{ $livro->id }}</td> <td>{{ $livro->titulo }}</td> <td>{{ $livro->autor }}</td> <td align="center">{{ $livro->paginas }}</td> <td align="center"> <form action="{{ route('livros.destroy', $livro->id) }}" method="post"> <a href="{{ route('livros.show', $livro->id) }}">Detalhes</a> | <a href="{{ route('livros.edit', $livro->id) }}">Editar</a> @csrf @method('DELETE') <button type="submit">Excluir</button> </form> </tr> @endforeach </table> </body> </html> Novamente eu mantive a formatação mínima para facilitar o entendimento do código. Já no topo da página nós temos um link que leva para a rota route('livros.create'). Isso permite cadastrar um novo livro. Em seguida temos um laço @foreach($livros as $livro) que percorre o vetor recebido a partir do controller LivroController. Para cada item desse vetor nós criamos uma nova linha na tabela HTML. Note que já forneci as opções para manipular os livros individuais, a saber, Detalhes, Editar e Excluir. Já temos tudo pronto! Direcione o seu navegador para a URL http://localhost/biblioteca/public/livros e teremos o seguinte resultado: É claro que se você clicar em uma das opções exibidas para cada registro, um erro ocorrerá. Experimente, por exemplo, clicar no botão Excluir de algum dos livros listados. De imediato teremos a seguinte mensagem de erro: BadMethodCallException Method App\Http\Controllers\LivroController::destroy does not exist. http://localhost/biblioteca/public/livros/5 Bad Method Call Did you mean App\Http\Controllers\LivroController::store() ? Isso aconteceu porque o nosso controller LivroController ainda não possui o método que permite excluir o livro. Vamos finalizar esta parte adicionando mais este método ao controller? Como excluir um livro usando o método destroy() do LivroController Abra novamente o arquivo LivroController.php e modifique-o para o código abaixo (note que vamos somente incluir o método destroy(): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php namespace App\Http\Controllers; use App\Models\Livro; use Illuminate\Http\Request; class LivroController extends Controller{ // mostra a view listando os livros cadastrados public function index(){ // obtém todos os livros cadastrados $livros = Livro::all(); // direciona para a view e fornece um vetor // contendo os livros return view('livros.index', compact('livros')); } // mostra a view para cadastrar um novo livro public function create(){ return view('livros.create'); } // recebe as informações do formulário e as grava // no banco de dados public function store(Request $request){ // valida o formulário $request->validate([ 'titulo' => 'required', 'autor' => 'required', 'paginas' => 'required']); // obtém os valores do form Livro::create($request->all()); // direciona para página cadastro novamente, // com uma mensagem de sucesso return redirect()->route('livros.create') ->with('mensagem', 'Livro salvo com sucesso.'); } // método que permite excluir um livro public function destroy(Livro $livro){ // vamos chamar o método delete() do Eloquent $livro->delete(); // vamos chamar a view com uma mensagem de // de sucesso. return redirect()->route('livros.index') ->with('mensagem','Livro excluído com sucesso.'); } } ?> Veja que, no método destroy(), nós fazemos uma chamada ao método delete() do Eloquent e redirecionamos o usuário para a view index, juntamente com uma mensagem indicando que o livro foi excluído com sucesso. Vamos lá. Sua vez. Clique no botão Excluir de um dos livros e veja o resultado. Na parte 4 do tutorial nós vamos concluir as opções de mostrar os detalhes do livro e permitir alterá-lo. Até lá! Leia a parte 4 aqui: Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 4 |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular juros compostos e montante usando CQuantidade de visualizações: 11347 vezes |
O regime de juros compostos é o mais comum no sistema financeiro e portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte. Chamamos de capitalização o momento em que os juros são incorporados ao principal. Após três meses de capitalização, temos: 1º mês: M = P .(1 + i) 2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) 3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i) Simplificando, obtemos a fórmula: M = P . (1 + i)^n Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses. Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período: J = M - P Vejamos um exemplo: Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros? Veja o código C para a resolução: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { float principal = 2000.00; float taxa = 0.03; // 3% int meses = 3; float montante = principal * pow((1 + taxa), meses); float juros = montante - principal; printf("O total de juros a ser pago é: %f\n", juros); printf("O montante a ser pago é: %f", montante); printf("\n\n"); system("pause"); return 0; } Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { float principal = 2000.00; float taxa = 0.03; // 3% int meses = 3; float anterior = 0.0; float montante; float juros; for(int i = 1; i <= meses; i++){ montante = principal * pow((1 + taxa), i); juros = montante - principal - anterior; anterior += juros; printf("Mês: %d - Montante: %f - Juros %f\n", i, montante, juros); } printf("\n\n"); system("pause"); return 0; } |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercícios Resolvidos de Python - Como calcular salário líquido em Python - Calculando o salário líquido de um professorQuantidade de visualizações: 809 vezes |
Pergunta/Tarefa: Escreva um programa Python que calcule o salário líquido de um professor. Seu programa deverá solicitar que o usuário informe o valor da hora aula (como float), o número de horas trabalhadas no mês (como inteiro) e o percentual de desconto do INSS (como float). Em seguida mostre o salário líquido, formatado de acordo com a moeda brasileira em vigor (na resolução eu usei o Real). Dica: Use locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8'). Sua saída deverá ser parecida com: Informe o valor da hora aula: 28 Informe o número de horas trabalhadas no mês: 12 Informe o percentual de desconto do INSS: 8 Salário Bruto: R$ 336,00 Total de Descontos: R$ 26,88 Salário Líquido: R$ 309,12 Veja a resolução comentada deste exercício usando Python: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- import locale # função principal do programa def main(): locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8') # vamos ler o valor do hora aula valor_hora_aula = float(input("Informe o valor da hora aula: ")) # vamos ler o número de horas trabalhadas no mês horas_trabalhadas = int(input("Informe o número de horas trabalhadas no mês: ")) # vamos ler o percentual de desconto do INSS percentual_desconto_inss = float(input("Percentual de desconto do INSS: ")) # vamos calcular o salário bruto salario_bruto = valor_hora_aula * horas_trabalhadas # agora calculamos o total do desconto total_desconto = (percentual_desconto_inss / 100) * salario_bruto # finalmente calculamos o salário líquido salario_liquido = salario_bruto - total_desconto # mostramos o resultado print("Salário Bruto: R$ {0}".format(locale.currency(salario_bruto, grouping=True, symbol=None))) print("Total de Descontos: R$ {0}".format(locale.currency(total_desconto, grouping=True, symbol=None))) print("Salário Líquido: R$ {0}".format(locale.currency(salario_liquido, grouping=True, symbol=None))) if __name__== "__main__": main() |
Java ::: Dicas & Truques ::: Formatação de datas, strings e números |
Java para iniciantes - Como controlar a quantidade de casas decimais na exibição de um valor double ou floatQuantidade de visualizações: 26111 vezes |
Este trecho de código mostra como usar o método printf() do Java 5.0 para definir a quantidade de casas decimais na exibição de um valor double. Obs: Veja que há arredondamento durante a redução das casas decimais. Eis o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String[] args){ double valor = 54.235344213; // exibe o valor original System.out.println(valor); // exibe o valor com duas casas decimais System.out.printf("%.2f\n", valor); // exibe o valor com quatro casas decimais System.out.printf("%.4f\n", valor); // exibe o valor com cinco casas decimais System.out.printf("%.5f\n", valor); // exibe o valor com uma casa decimal System.out.printf("%.1f", valor); } } Ao executar este código Java nós teremos o seguinte resultado: 54.235344213 54,24 54,2353 54,23534 54,2 |
C# ::: Coleções (Collections) ::: ArrayList |
Como escrever um método C# que retorna uma ArrayListQuantidade de visualizações: 17038 vezes |
Estudantes C# ficam um pouco confusos quando solicitados a escrever funções que retornam objetos de classes. E essa confusão é maior ainda quando precisam retornar uma ArrayList, mais precisamente um objeto da classe ArrayList. Esta dica mostra como isso pode ser feito. Veja que temos um método que define, em sua assinatura, que o tipo de retorno não é void (sem retorno) mas sim um objeto da classe ArrayList. No corpo deste método temos a criação da ArrayList propriamente dita, a adição de cinco inteiros e finalmente o uso da palavra-chave return para retornar o ArrayList já preenchido ao chamador do método. Note que o método Main é responsável por efetuar uma chamada ao método, obter o ArrayList resultante e em seguida usar o laço foreach para exibir seus valores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // método que retornará uma ArrayList static ArrayList obterLista(){ // Cria o ArrayList ArrayList lista = new ArrayList(); // Adiciona 5 inteiros lista.Add(1); lista.Add(2); lista.Add(3); lista.Add(4); lista.Add(5); // retorna o ArrayList preenchido return lista; } static void Main(string[] args){ // obtém um ArrayList preenchido a partir do // método obterLista ArrayList mLista = obterLista(); // exibe os valores do ArrayList foreach (int valor in mLista){ Console.Write("{0} ", valor); } // pausa o programa Console.ReadKey(); } |
Java ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o seno de um número ou ângulo em Java usando o método sin() da classe MathQuantidade de visualizações: 2711 vezes |
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem: Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula: \[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \] Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função sin() da linguagem Java. Esta método, que faz parte da classe Math, recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String args[]){ System.out.println("Seno de 0 = " + Math.sin(0)); System.out.println("Seno de 1 = " + Math.sin(1)); System.out.println("Seno de 2 = " + Math.sin(2)); } } Ao executar este código Java nós teremos o seguinte resultado: Seno de 0 = 0.0 Seno de 1 = 0.8414709848078965 Seno de 2 = 0.9092974268256817 Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo: |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |