Ir ao conteúdo
  • Cadastre-se
Michel Mello

Como pegar uma variável de php e colocar no html

Recommended Posts

Bom galera, estou criando um site simples que pode fazer o CRUD no banco de dados...

 

Na parte de select quando clica em "Alterar" vai para o update...

Gostaria de saber como pegar os dados que já estão inseridos e colocar como value nos campos de HTML, para depois mandar para o php e poder alterar no banco de dados

 

select.JPG

update.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Michel Mello Olá

 

Para fazer o que desejas, primeiro é preciso fazer a consulta na tabela. No seu caso, no exemplo da imagem você fez isso.

Nesta consulta, é necessário que seja retornado o valor do campo ID auto incrementado da sua tabela. Geralmente este campo é a chave primária do seu banco de dados.

 

Com o valor ID do registro, você vai usa-lo como parâmetro para poder resgatar os dados somente dele e inserir no campo certo no formulário.

O valor ID como disse anteriormente, vai ser passado por parâmetro do tipo GET.

Para inserir um dado no campo do formulário, usa-se o atributo "value" com a varável php destinada.

 

Por exemplo:

 

Consulta:

SELECT ID, name, 
       employee, 
       value 
FROM service

Iria retornar por exemplo:

ID   NAME   EMPLOYEE  VALUE
 1   TESTE  TESTE     123

Este é o resultado da sua primeira imagem, só que agora mostrando o valor ID.

Então agora como temos o valor do ID é preciso passa-lo para o arquivo editar.php.

 

Para isso, você cria um link com a variável. Exemplo:

<table>
  <tr>
    <th>NAME</th>
    <th>EMPLOYEE</th>
    <th>VALUE</th>
    <th>Actions </th>
  </tr>  
<?php
	include 'conexao.php';

   $consulta = mysqli_query($conexao ,"SELECT ID, name, employee, value FROM Service");
   while($service = mysqli_fetch_object($consulta):
         echo "
         	<tr>
                    <td> $service->name </td>
                    <td> $service->employee </td>
                    <td  $service->value </td>
                    <td> <a href='editar.php?id=$service->ID'>Alterar </a></td>
                    <td> <a href='excluir.php?id=$service->ID'>Excluir </a></td>
   		</tr>	
         ";
   endwhile;  
  ?>       
 </table>        

Perceba as duas ultimas linhas de dentro do ECHO que contem o bloco tr e td que repete na tabela.

O editar é um link para um arquivo chamado editar.php que passa por parâmetro GET o ID do registro.

No excluir.php será a mesma coisa.

 

Para receber o parâmetro GET no arquivo editar.php , consultar os dados e inserir no formulário fazemos assim:

<?php
    //recebe o parâmetro GET
    $ID =  $_GET["id"]; 
  
	include 'conexao.php';

   $consulta = mysqli_query($conexao ,"SELECT name, employee, value FROM Service WHERE id = $ID");
   $service = mysqli_fetch_object($consulta);

?>
<form action="salvar.php" method="post">
    <input type="text" name="name" value="<?php echo $service->name; ?>" />
    <input type="text" name="employee" value="<?php echo $service->employee; ?>"/>
    <input type="text" name="value" value="<?php echo $service->value; ?>"/>
    <input type="submit" value="Salvar Alteração"/>
</form>         
         
  

Basicamente  você cria o arquivo editar.php com toda a estrutura html e do formulário que quer inserir os dados.

A parte do php linha a linha pode ser explicada da seguinte maneira:

Primeiro usamos uma variável $ID para receber o valor id pelo parâmetro GET.

Depois abrimos a conexão com o banco de dados.

Em seguida, uma variável que chamamos de $consulta recebe a função mysqli_query(). Esta função recebe dois parâmetros. O primeiro é a variável de conexão e a segunda entre aspas duplas a consulta SQL.

A variável $service, recebe uma função chamada mysqli_fetch_object(). Esta função é o mesmo que mysqli_fetch_array(), mas com a diferença que o fetch_object trata o dado como um objeto enquanto o fetch_array trata com vetor.

 

Usando o fetch_object como no exemplo deixa o código mais limpo e sem necessidade de atribuir a variável em outra.

 

Agora mais abaixo, veja o formulário. no action criamos uma página chamada salvar.php.

Cada input do tipo text, recebe o atributo value=""  onde dentro dele abrimos uma tag php, usamos a palavra reservada echo e em seguida a variável $service seguido  de " -> " e  o nome do campo da tabela.

 

Este simbolo  -> é característico de orientação a objetos. Então quando usar o fetch_object  toda variável que recebe retorno da tabela será:

 $variável->nome do campo

 

Para finalizar, no arquivo salvar.php é recebido os valores do formulário via POST.

E usar o Update set na tabela.

 

Se quiser aprimorar poderias utilizar a técnica ajax e fazer as requisições assíncronas. Isso permitiria que assim que clicar em editar, inserir os dados no formulário sem sair da página. Mas esta é uma técnica avançada que requer um pouco de conhecimento em jQuery e algumas funções específicas dele.

 

De qualquer forma,  desculpe pelo post quilométrico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif Obrigado, já ajudou bastante... Qual a diferença entre usar o $service->id ou colocar $service['id']?

Fiz como você mostrou mas adaptando ao meu código: 

$request_response = json_decode($response, true);

foreach($request_response as $p){

				echo "<center>";
				echo "<TABLE BORDER=2>";
				echo "<tr>";
				echo "<td ALIGN=MIDDLE WIDTH=200>" . $p['name'] . "</td>";
				echo "<td ALIGN=MIDDLE WIDTH=200>" . $p['employee'] . "</td>";
				echo "<td ALIGN=MIDDLE WIDTH=200>" . $p['value'] . "</td>";
				echo "<td><a href='updateservice.html?id=" . $p ['id']. "'>Alterar</a></td>";
				echo "<td><a href='deleteservice.php?id=" . $p ['id']. "'>Deletar</a></td>";
				echo "<tr>";
			}

A parte de passar o valor seria assim?

	<?php
		//recebe o parâmetro GET
		$id =  $p['id']; 
	?>
      <form class="form-signin" action="updateservice.php" method="post">
        <h2 class="form-signin-heading">Please update Service</h2>


        <input type="text" name="name" id="inputName" class="form-control" placeholder="Name" required autofocus>

        <input type="text" name="employee"id="inputEmployee" class="form-control" placeholder="Employee" required autofocus>
		
		<input type="number" name="value"id="inputValue" class="form-control" placeholder="Value" required autofocus>

		<input type='text' name='id' id='inputId' value="<?php echo $id; ?>"/>


		<button class="btn btn-lg btn-primary btn-block" type="submit">Update</button>
		
		 <a href="service.html" button type="button" class="btn btn-default">Back</button>
      </form>

Mas na hora de mostrar ele coloca a parte de "<?php echo $id; ?>" como uma string

Capturar.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Michel Mello disse:

Qual a diferença entre usar o $service->id ou colocar $service['id']?

A diferença é que um é orientada a objetos usando a função mysqli_fetch_object() e outro é procedural usando a função mysqli_fetch_array()

 

Eu expliquei isso no meu post anterior na parte final.

 

7 minutos atrás, Michel Mello disse:

Mas na hora de mostrar ele coloca a parte de "<?php echo $id; ?>" como uma string

Aconteceu porque o arquivo que você colocou isso não é php.  deve ter colocado em html.

 

Como eu mencionei anteriormente, você criar o arquivo em PHP, mas usa a estrutura html para mesclar entendeu?

Por exemplo:

editar.php

<html>
  <head></head>

 <body>
   <?php 
      // parte do php

    ?>
   
   <form>
       <input type="text" value="<?php echo $variavel; ?>"/>
   </form>
  </body>
 <html> 

É bem simples de entender que mesmo criando um arquivo com a terminação em .php   você pode colocar o html normalmente.

 

Vejo que seu código tem alguns erros também.

Como por exemplo na tabela.  você colocou toda a estrutura dentro de um foreach onde naverdade deveria ter utilizado while e colocado só a parte da repetição de TR e TD dentro dele.  Veja meu exemplo em outro post.

 

Erro dois,  você não recebe valor GET assim.

o correto é:

$id =  $_GET['id']; 

Outra coisa que vejo sem sentido ali é o campo do tipo number,  e campo ID que não é necessário no formulário.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×