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 4 - Final

Quantidade de visualizações: 3266 vezes
Na parte 3 deste tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB) nós concluímos as ações de listar e excluir livros na base de dados MySQL.

Nessa última parte veremos como implementar os detalhes individuais de cada livro e também como permitir a edição dos dados cadastrados. Vamos começar então?

Como mostrar os detalhes de cada livro cadastrado na base de dados - A parte READ do CRUD

Na parte nós criamos uma view chamada index que contém uma tabela HTML na qual listamos todos os livros já cadastrados. Para cada registro nós fornecemos as opções de ver detalhes, editar e excluir. Sendo assim, abra o arquivo LivroController.php e vamos implementar seu método show():

----------------------------------------------------------------------
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.');
  }

  // vamos mostrar os detalhes do livro informado
  // como argumento
  public function show(Livro $livro){
    return view('livros.show', compact('livro'));
  }  

  // 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 o método show() recebe um Livro como argumento e o envia para a view show. Vamos criá-la agora. Vá até o diretório C:\xampp\htdocs\biblioteca\resources\views\livros e crie um arquivo chamado show.blade.php. Altere o seu conteúdo para a o código 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>

  <style>
    a {color: blue}
  </style>
</head>
<body>

<h1>Detalhes do Livro</h1>

<table width="500" border="1" cellspacing="0" cellpadding="3">
  <tr>
    <td><strong>Id</strong></td>
    <td>{{ $livro->id }}</td>
  </tr>
  <tr>
    <td><strong>Titulo</strong></td>
    <td>{{ $livro->titulo }}</td>
  </tr>
  <tr>
    <td><strong>Autor</strong></td>
    <td>{{ $livro->autor }}</td>
  </tr>
  <tr>
    <td><strong>Páginas</strong></td>
    <td>{{ $livro->paginas }}</td>
  </tr>
</table>

</body>
</html>

Com a view devidamente criada, vá até a listagem de livros novamente e clique na opção Detalhes de um deles. Você terá o seguinte resultado:



Pronto? Já podemos passar para a última parte do tutorial, ou seja, a edição dos livros cadastrados?

Finalizando o tutorial - A parte UPDATE do CRUD

Agora que já fizemos o CREATE, o READ e o DELETE do nosso CRUD, chegou a hora do UPDATE. Para isso, abra o nosso controller LivroController.php novamente e vamos adicionar um método chamado edit. Veja o código completo:

----------------------------------------------------------------------
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.');
  }

  // vamos mostrar os detalhes do livro informado
  // como argumento
  public function show(Livro $livro){
    return view('livros.show', compact('livro'));
  }  

  // 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.');
  }

  // permite editar o livro recebido como argumento
  public function edit(Livro $livro){
    // chama a view e passa o livro para ela
    return view('livros.edit', compact('livro'));
  }
}

?>

Veja que o método edit recebe um objeto da classe Livro e o envia para a view edit. Essa view ainda não existe. Portanto, vá até o diretório C:\xampp\htdocs\biblioteca\resources\views\livros e crie um arquivo chamado edit.blade.php. Altere o seu conteúdo para a o código 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>Atualizar Livro</h1>

@if($errors->any())
  <h2>Houve alguns erros ao processar o formulário</h2>
  <ul>
     @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
     @endforeach
  </ul>
@endif

<form action="{{ route('livros.update', $livro->id) }}" method="post">
@csrf
@method('PUT')

<table width="200" border="0" cellspacing="3" cellpadding="3">
  <tr>
    <td>Título:</td>
    <td><input type="text" value="{{ $livro->titulo }}" 
      name="titulo" id="titulo" placeholder="Título"></td>
  </tr>
  <tr>
    <td>Autor:</td>
    <td><input type="text" value="{{ $livro->autor }}" 
      name="autor" id="autor" placeholder="Autor"></td>
  </tr>
  <tr>
    <td>Páginas</td>
    <td><input type="text" value="{{ $livro->paginas }}" 
      size="10" name="paginas" id="paginas" 
      placeholder="Quant. Páginas"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><button type="submit">Salvar Alterações</button></td>
  </tr>
</table>
</form>

</body>
</html>

Com essa view também devidamente pronta, vá até a listagem de livros novamente. Clique na opção Editar de um dos livros e você terá o seguinte resultado:



Note que a propriedade action do formulário HTML está apontando para o método route('livros.update', $livro->id) do controller LivroController. Então, tudo que precisamos fazer para finalizar a nossa aplicação, é implementar este método. Abra o arquivo LivroController.php e adicione este método. Veja o código completo:

----------------------------------------------------------------------
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.');
  }

  // vamos mostrar os detalhes do livro informado
  // como argumento
  public function show(Livro $livro){
    return view('livros.show', compact('livro'));
  }  

  // 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.');
  }

  // permite editar o livro recebido como argumento
  public function edit(Livro $livro){
    // chama a view e passa o livro para ela
    return view('livros.edit', compact('livro'));
  }

  // permite atualizar os dados de um livro
  public function update(Request $request, Livro $livro){
    // vamos validar os dados vindo do formulário
    $request->validate([
      'titulo' => 'required',
      'autor' => 'required',
      'paginas' => 'required']);
    
    // vamos atualizar o livro na tabela do banco de dados
    $livro->update($request->all());
    
    // agora vamos voltar para a listagem de livros
    return redirect()->route('livros.index')
      ->with('mensagem', 'Livro atualizado com sucesso.');
  }
}

?>

Note que o método update() recebe os dados do formulário e também o livro cujos dados estão sendo atualizados. No corpo deste método nós fazemos a validação dos dados e, se estiver tudo correto, nós enviamos o usuário para a listagem de livros novamente, junto com uma mensagem indicando que o livro foi atualizado com sucesso.

E aqui finalizamos o nosso tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB). Espero que você tenha conseguido seguir todos os passos com sucesso. Agora é só fazer as alterações desejadas de acordo com os requisitos de sua aplicação.

Link para compartilhar na Internet ou com seus amigos:

C++ ::: STL (Standard Template Library) ::: Vector C++

Como retornar a quantidade de elementos em um vector do C++ usando a função size()

Quantidade de visualizações: 6949 vezes
Em algumas situações nós precisamos obter o tamanho, ou seja, a quantidade de elementos contidos em um container vector da STL (Standard Template Library). Isso pode ser feito por meio da função-membro size(). Veja sua assinatura:

size_type size() const;


Aqui size_type é um tipo integral sem sinal. Veja um exemplo no qual obtemos a quantidade de elementos atualmente no vector:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá inteiros
  vector<int> valores;

  // vamos inserir três elementos
  valores.push_back(54);
  valores.push_back(13);
  valores.push_back(87);

  // vamos obter a quantidade de elementos no vector
  int quant = valores.size();

  // exibe o resultado
  cout << "O vector contém " << quant << " elementos." << endl;

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

O vector contém 3 elementos.

Note que o número de elementos em um vector é diferente de sua capacidade. Um vector pode ter uma capacidade de 10 elementos mas conter apenas 3 elementos no momento. A capacidade de um vector é aumentado automaticamente à medida que novos elementos são adicionados.


Delphi ::: Dicas & Truques ::: Data e Hora

Delphi para iniciantes - Como criar uma data e hora em Delphi usando a função EncodeDateTime()

Quantidade de visualizações: 20248 vezes
Em algumas situações precisamos contruir uma determinada data e hora e retornar um TDateTime. Isso pode ser feito com o auxílio da função EncodeDateTime(). Esta função requer valores inteiros representando o ano, mês, dia, horas, minutos, segundos e milisegundos.

Veja um exemplo no qual construímos a data 22/10/2009:


----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  data_hora: TDateTime;
begin
  // não esqueça de incluir DateUtils no uses

  // vamos construir a data 22/10/2009
  data_hora := EncodeDateTime(2009, 10, 22, 0, 0, 0, 0);

  // vamos exibir o resultado
  ShowMessage('A data é: ' + DateTimeToStr(data_hora));
end;

Note que deixamos os valores de horas, minutos, segundos e milisegundos como 0. Experimente construir a mesma data fornecendo também os valores de horas, minutos, segundos e milisegundos. Há, contudo, alguns cuidados a serem tomados. Os valores fornecidos para a função EncodeDateTime() devem obedecer as regras de limites mínimos e máximos:

a) O valor do ano deve estar entre 1 e 9999;

b) Os valores de meses devem estar entre 1 e 12 (incluindo);

c) Os valores válidos para os dias variam de 1 até 28, 29, 30 ou 31, dependendo do valor do mês. Por exemplo, os valores possíveis para o mês 2 (fevereiro) são de 1 até 28 ou até 29, dependendo ou não se o valor do ano especificado for um ano bissexto;

d) Valores para a hora devem estar entre 0 e 24. Se a hora for definida como 24, os valores dos minutos, segundos e milisegundos deverão ser 0, e o TDateTime resultante representará a meia-noite no final do dia especificado e o início do próximo dia;

d) Os valores dos minutos devem variar de 0 até 59;

e) Os valores de segundos devem variar de 0 até 59;

f) Os valores de milisegundos devem variar de 0 até 999.

Se os valores informados para a função EncodeDateTime() estiverem fora destas faixas, uma exceção EConvertError será lançada. Esta exceção ocorrerá em tempo de execução.


Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Java ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar o modificador final em classes, variáveis e métodos Java - Programação Orientada a Objetos em Java

Quantidade de visualizações: 13173 vezes
O modificador final pode ser usado com classes, variáveis e métodos. É claro que o significado varia dependendo do uso. Por exemplo, ao marcarmos uma variável com o modificador final, estamos na verdade criando uma constante, ou seja, uma variável cujo conteúdo não pode ser alterado durante a execução do programa. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{ 
  static final int VALOR = 45;  

  public static void main(String args[]){ 
    // vamos tentar alterar o valor da
    // constante
    VALOR = 10;
  } 
}

Ao tentarmos compilar este programa teremos a seguinte mensagem de erro:

Estudos.java:7: cannot assign a value to 
final variable VALOR
    VALOR = 10;
    ^
1 error


Tenha em mente, porém, que quando uma variável marcada como final é uma referência a um objeto, é a referência que não poderá ser alterada. As propriedades do objeto para a qual ela aponta poderão sofrer alterações, exceto se estes também estiverem marcados como final.

Quando aplicado a classes, o modificador final garante que a classe não poderá ser extendida, ou seja, não é possível criar uma classe derivada a partir de uma classe marcada como final. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// superclasse
final class Pessoa{
  public String nome;
}

// subclasse
class Aluno extends Pessoa{
  public String matricula;
}

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria um objeto da classe Aluno
    Aluno a = new Aluno();
  } 
}

Ao tentarmos compilar este código teremos a seguinte mensagem de erro:

Estudos.java:7: cannot inherit from 
final Pessoa
class Aluno extends Pessoa{
                    ^
1 error


Um método marcado como final não pode ser sobrescrito. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// superclasse
class Pessoa{
  protected String nome;

  public final String getNome(){
    return this.nome;
  }
}

// subclasse
class Aluno extends Pessoa{
  // estamos sobrescrevendo o método
  // herdado da superclasse
  public final String getNome(){
    return "Aluno: " + this.nome;
  }
}

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria um objeto da classe Aluno
    Aluno a = new Aluno();
  } 
}

Ao tentarmos compilar este código teremos a seguinte mensagem de erro:

Estudos.java:14: getNome() in Aluno cannot 
override getNome() in Pessoa; overriden method is final
  public final String getNome(){
                      ^
1 error


Resumindo: variáveis marcadas com final não poder sofrer alterações. Classes marcadas como final não podem ter classes derivadas. Métodos marcados como final não podem ser sobrescritos.


JavaScript ::: Dicas & Truques ::: Data e Hora

Como retornar o dia da semana em JavaScript no formato Domingo, Segunda-feira, Terça-feira, etc

Quantidade de visualizações: 11436 vezes
Nesta dica veremos como retornar o dia da semana de uma data no formato Domingo, Segunda-feira, Terça-feira, etc, em JavaScript. Esta técnica é muito útil quando queremos escrever aplicações envolvendo calendários.

Veja a página HTML completa para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<!doctype html>
<html>
<head>
  <title>Data e hora em JavaScript</title>
</head>
<body>

<script type="text/javascript">
  // vamos criar um array com os dias da semana
  var dias_semana = new Array("Domingo", "Segunda-feira",
    "Terça-feira", "Quarta-feira", "Quinta-feira",
    "Sexta-feira", "Sábado");
  
  // agora vamos obter a data de hoje
  var data = new Date();
  
  // agora vamos obter o número do dia da semana
  // começando em 0 para o domingo
  var dia_semana = data.getDay();
  
  // e finalmente mostramos o resultado
  document.write("Dia da semana: " + dias_semana[dia_semana]);
</script>
  
</body>
</html>

Ao executar este código JavaScript nós teremos o seguinte resultado:

Dia da semana: Segunda-feira


Java ::: Pacote java.net ::: HttpURLConnection

Como usar o método GET da classe HttpURLConnection do Java para enviar dados a uma página PHP, JSP, ASP.NET, etc

Quantidade de visualizações: 6281 vezes
Em algumas situações gostaríamos de enviar uma solicitação HTTP do tipo GET a uma página PHP, JSP, ASP.NET, etc, a partir de nossos programas Java. Para isso podemos usar um objeto da classe HttpURLConnection. Para este exemplo eu mostrarei como enviar uma requisição GET para uma página PHP e retornar o resultado da soma de dois números.

Comece analisando o código para o documento somar.php:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<?php
  // obtém o primeiro valor
  $a = (int)$_GET["a"];
  // obtém o primeiro valor
  $b = (int)$_GET["b"];
  
  // vamos somar e mostrar o resultado
  $soma = $a + $b;
  echo "A soma dos dois números é: " . $soma;
?>

Este código PHP não apresenta muitos segredos: obtemos dois números passados via GET, efetuamos a soma dos dois e escrevemos o resultado na página. Veja agora o código completo para a aplicação Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Principal {
  public static void main(String[] args) {
    int n1 = 10, n2 = 25;
    URL url;
    HttpURLConnection connection = null;
    BufferedReader in = null;
    try {
      url = new URL("http://www.arquivodecodigos.com.br/somar.php?a=" + n1 
        + "&b=" + n2);
      // vamos efetuar a conexão à URL especificada
      connection = (HttpURLConnection)url.openConnection();
      // em alguns servidores nós precisamos adicionar o User-Agent para evitar
      // o erro 403 Forbidden
      // HttpURLConnection : Server return HTTP 403 Forbidden
      connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; "
        + "WOW64; rv:221.0) Gecko/20100101 Firefox/31.0");
      
      // vamos obter o retorno da conexão
      String linha;
      in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
      while((linha = in.readLine()) != null) {
        System.out.println(linha);
      }
    } 
    catch (MalformedURLException ex) {
      System.out.println("A URL está mal formada: " + ex.getMessage());
    }
    catch (IOException ex) {
      System.out.println("Não foi possível efetuar a conexão: " + 
        ex.getMessage());
    }
    finally {
      if(in != null) {
        try {
          in.close();
        } 
        catch (IOException ex) {
          System.out.println("Não consegui fechar o stream de saída: " + 
            ex.getMessage());
        }
      }
      connection.disconnect();
    }
  }
}

Ao executar o programa, teremos uma mensagem no console parecida com:

A soma dos dois números é: 35


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 85 usuários muito felizes estudando em nosso site.