logo

Paleta - Deixe colorido🎨

Palette — Construtor visual de páginas. Não precisa ser designer.

Demonstração ao vivo Baixar Palette

Scroll

Lições de PHP - Lição 3.3 - Trabalhando com Banco de Dados MySQL. Atualizando Dados UPDATE.

08/12/2019, by Ivan

Já conhecemos operadores MySQL como SELECT, INSERT INTO, agora é hora de aprender a atualizar dados já inseridos no banco de dados. Para isso, usaremos o operador SQL UPDATE. Mas primeiro, vamos alterar nosso arquivo index.php e adicionar o processamento de outro caminho. Encontre este código:

      if( $_GET['admin'] == 1 ){ // se houver uma variável admin na URL
		    print $obj->display_admin(); // se houver a variável, exibir o formulário
		  }else{
		    print $obj->display_public(); // se não houver variável, exibir mensagens
		  }

E substitua pelo seguinte código:

	  switch ($_GET['admin']){
		    case 'add':
			  print $obj->display_admin(); // se a variável for add, exibir o formulário de adição
			break;
			case 'update':
			  print $obj->display_update();  // se a variável for update, exibir o formulário de edição
			break;
			default:
			  print $obj->display_public(); // se não houver variável, exibir mensagens
		  }

Troquei o operador condicional if por outro operador switch, que permite usar vários valores de seleção para a variável $_GET['admin'], depois teremos delete. Por enquanto, troquei 1 por add e adicionei outra opção de update. Como mudei 1 para add, preciso alterar a saída de links no arquivo simpleCMS.php:

 

$content .= '<p><a href="/index.php?admin=1">Adicionar mensagem</a></p>';

Mude para:

$content .= '<p><a href="/index.php?admin=add">Adicionar mensagem</a></p>';

 

Também precisamos adicionar um novo método display_update(), que chamaremos quando houver uma variável admin com o valor update na solicitação get. Adicionamos um novo método display_update():

  public function display_update(){

  }  

Bem, criamos o processamento do caminho que resulta em chamar nosso novo método display_update(), resta adicionar links à página de chamada do método e implementar o método display_update().

Primeiro, vamos pensar em como vamos implementar a atualização de registros. Precisaremos enviar uma consulta específica ao banco de dados com uma condição WHERE para que possamos dizer definitivamente que este é o registro que precisa ser atualizado. Isso pode ser feito com precisão se especificarmos o id deste registro, que para nós é a coluna mid. Portanto, você precisará passar o valor mid ao chamar o método display_update(). Como você pode fazer isso? Você pode passar o valor na consulta get junto com admin=update, por exemplo assim:

http://teste/index.php?admin=update&mid=3

Ou você pode usar um parâmetro no método display_update(), por exemplo assim:

  public function display_update($mid){

  } 

E então chame o método da seguinte forma:

	  switch ($_GET['admin']){
		    case 'add':
			  print $obj->display_admin(); // se a variável for add, exibir o formulário de adição
			break;
			case 'update':
                  $mid = 1; //ou você pode colocar $_GET['mid'] aqui
			  print $obj->display_update($mid);  // se a variável for update, exibir o formulário de edição
			break;
			default:
			  print $obj->display_public(); // se não houver variável, exibir mensagens
		  }

 

De qualquer forma, você precisará passar o valor mid e provavelmente através da solicitação get, então vamos usar a primeira opção, porque é mais simples.

  public function display_update(){
    $message_id = $_GET['mid'];
  }  

Assim passamos o valor de mid, mas e se este valor não estiver na solicitação get? Isso precisa ser verificado.

  public function display_update(){
    $message_id = $_GET['mid']; //gravar mid em uma variável
	if(!empty($message_id)){

	}else{
	  $content .= '<p>Nenhum valor de mid!</p>';
	  $content .= '<p><a href="/index.php">Voltar à página principal</a></p>';
	}
	return $content;
  }  

Agora se tivermos admin=update na solicitação get, mas o valor de mid não estiver presente, iremos para uma página com um link para a página principal.

http://teste/index.php?admin=update

Bem, chegamos ao ponto em que precisamos de links para as páginas de edição. Você precisará corrigir o método display_public() para exibi-los:

  public function display_public() { // método de exibição de mensagens
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; //consulta de seleção
	$result = mysql_query($sql) or die(mysql_error());  // armazenamos o resultado de execução da consulta de seleção em uma variável
	while($row = mysql_fetch_array($result)){ // a variável da consulta de seleção deve ser processada com a função especial mysql_fetch_array()
	  $content .= '<div class="post">'; // div envolvendo o registro
	  $content .= '<span class="time">#' . $row['mid'] . ' de ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// exibir hora e título
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // exibir texto de mensagem
	  $content .= '<p><a href="/index.php?admin=update&mid=' . $row['mid'] . '">Editar mensagem</a>'; // adicionar link para editar mensagem
	  $content .= '</div>'; // fim do div envolvente
	}
	$content .= '<p><a href="/index.php?admin=add">Adicionar mensagem</a></p>';
    return $content;
  }

Agora sob cada mensagem haverá um link para sua edição. O formulário de edição de mensagem será exibido através do nosso método display_update(). Então vamos escrever o código para este método. O formulário em si será pouco diferente do formulário de adição, exceto que preencheremos os valores existentes da mensagem do banco de dados e adicionaremos um campo oculto com o valor de mid.

[Seção contém descrição detalhada da implementação de UPDATE com exemplos de código e explicações de lógica de negócio...]