Ir ao conteúdo

Posts recomendados

Postado

Boa noite!

Gente, estou tendo um problema:

Preciso fazer uma alteração no banco, usando o ID passado pelo formulário:

 

$consulta = $conexao->query("SELECT * FROM REAGENTES"); 
        
        while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)){
            
            ?> <br>
            <form action="edita_reagente.php" method="POST">
          
            <p><label for="">ID: </label><input type="text" name="" id=""
            value="<?php echo($linha['ID_REAGENTE'])?>"></p>
            <p><label for="">Nome oficial: </label><input type="text" name="" id=""
            value="<?php echo($linha['NOME_IUPAC'])?>"></p>
            <p><label for="">Nome usual: </label><input type="text" name="" id=""
            value="<?php echo($linha['NOME_USUAL'])?>"></p>
            <p><label for="">Quantidade em estoque: </label><input type="text" name="" id=""
            value="<?php echo($linha['QUANTIDADE'])?>"></p>
           

            <input type="submit" id='alterar' name="alterar" value="Alterar">

Mas, quando tento recuperar esse valor em "edita_reagente.php", aparece o erro de que ID_REAGENTE não foi definido.

<?php
include ('conexao.php'); 


if (isset($_POST['alterar'])){
    $id = $_POST['ID_REAGENTE']; 

    var_dump ($id); 

    /*Continar...*/ 
    
}





Alguém poderia me dar um help? Agradeço.

Como vocês podem notar eu sou muito iniciante ainda, portanto, peço sinceras desculpas por quaisquer erros grotescos 😁.

Postado

Estou meio enferrujado em programação, mas se me lembro bem tu deves criar um Var e recuperar os respectivos valores. 

Por exemplo, em nome ou id tu deves escrever uma VAR e recuperar. 

  • Moderador
Postado

@Julie Silveira Olá, seja bem vinda  no Clube do Hardware.

 

Bem, você está tendo este problema porque realmente não está passando os dados ao arquivo php.

Em nenhum dos inputs você colocou o valor do atributo name.

 

A única forma de passar valores sem usar o atributo name, é passar via parâmetro com GET pela URL.

O que não é o caso.  Como você quer passar por POST, você precisa adicionar o valor ao name.

 

NO arquivo edita_reagente.php  você tem esta linha:

$id = $_POST['ID_REAGENTE']; 

Então para resgatar esse valor.. o seu formulário deve ter o name.

 

 

<p><label for="">ID: </label><input type="text" name="ID_REAGENTE" id=""
            value="<?php echo($linha['ID_REAGENTE'])?>"></p>

 

Então deixe desta forma:

<form action="edita_reagente.php" method="POST">
    <p><label for="">ID: </label><input type="text" name="ID_REAGENTE" id=""
                  value="<?php echo($linha['ID_REAGENTE'])?>"></p>
    <p><label for="">Nome oficial: </label><input type="text" name="NOME_IUPAC" id=""
                  value="<?php echo($linha['NOME_IUPAC'])?>"></p>
    <p><label for="">Nome usual: </label><input type="text" name="NOME_USUAL" id=""
                  value="<?php echo($linha['NOME_USUAL'])?>"></p>
     <p><label for="">Quantidade em estoque: </label><input type="text" name="QUANTIDADE" id=""
                  value="<?php echo($linha['QUANTIDADE'])?>"></p>

E então no edita_reagente.php  resgata assim:

$id         = $_POST['ID_REAGENTE'];
$nome_iupac = $_POST['NOME_IUPAC'];
$nome_usual = $_POST['NOME_USUAL'];
$qtd        = $_POST['QUANTIDADE'];

 

Geralmente, em uma situação de edição ou exclusão, usa-se a passagem de parâmetro com GET, mas somente o valor ID da linha.

 

O que eu vejo ali no seu código, é que você faz a consulta na tabela... mas não especifica qual reagente. 

 

Dessa forma, ele não sabe qual você está editando.

 

vamos supor que você lista os reagentes assim:

 

<table> 
  <tr>
     <th>Nome IUPAC</th>
     <th>Nome USUAL</th>
     <th>QUANTIDADE</th>
    <th>Editar</th>
    <th>Excluir</th>
  </tr>
  <?php 
     include 'conexao.php';
  
     $consulta = $conexao->query("SELECT * FROM REAGENTES");
  
     while($reagente = $consulta->fetch(PDO::FETCH_OBJ)):
         echo "<tr>
                  <td>$reagente->NOME_IUPAC</td>
                  <td>$reagente->NOME_USUAL</td>
                  <td>$reagente->QUANTIDADE</td>
                  <td><a href='editar.php?id=$reagente->ID_REAGENTE'>Editar</a></td>
                  <td><a href='excluir.php?id=$reagente->ID_REAGENTE'>Excluir</a></td>
              </tr>";
  
    endwhile;
    ?>
</table>
      

Repare que na tabela há 5 campos. Onde 3 deles são os dados dos reagentes e os dois últimos são links que enviam um parâmetro por URL.

Note que nesse parâmetro é  " $reagente->ID_REAGENTE ", ou seja, o arquivo editar.php vai receber um:

 

$id = $_GET['ID_REAGENTE'];

Com esse ID, você faz a busca no banco dos dados somente daquele reagente.. e aplica o que eu informei mais acima... colocando os dados nos campos e passando com o atributo name...

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!