Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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.

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

  • Moderador
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.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...