Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Usando a tag de formulário ao uso da tag ancora

Para alterar o produto na aula é usado a tag <a> para linkar a pagina do formulário

Eu muito maroto, pensei : "Hmm... Não quero usar essa tag vou usar o codigo do remover"

 <form action="remove-produto.php" method="post">
                <input type="hidden" name="id "value ="<?=produtos['id']?>">
        <button class="btn btn-danger">remover</button>
        </form>

Ai alterei o código

 <form action="altera-produto.php" method="post">
        <input type="hidden" name="id "value ="<?=produtos['id']?>" >            
        <button class="btn btn-danger">Alterar</button>
        </form>

Para a minha surpresa o botão de remover começou a apontar para a pagina que altera o formulário.

Queria saber o por quê que isso acontece? Sendo que são coisas totalmente diferentes XD... Mas sei lá

PS: No atributo name NÃO ESCREVA NOME. Você vai ficar meio século tentando descobrir o maldito erro.

3 respostas

Isso deve estar ocorrendo porque você colocou um formulário dentro do outro.

Para fazer o que você quer (criar um botão de atualizar), você poderia ter deixando como link . Bastaria apenas aplicar o efeito de botão no link, inserido as classes do Bootstrap. Exemplo:

<a href="altera-produto.php?id=<?=produtos['id']?>" class="btn btn-danger">teste</a>

Não faz muito sentido, não acha?

Sendo que são blocos diferentes. Então como faço para usar 2 formulários, sem, que, um sobrescreva o outro?

Ou essa meneira é excruciamente exclusa das boas práticas do HTML?

solução!

Isso não é algo permitido. Você pode conferir na documentação do HTML

https://www.w3.org/TR/html5/forms.html#the-form-element

Isso aparece no item 4.10.3

4.10.3. The form element
(...)
Flow content, but with no form element descendants.

Uma forma de contornar isso é colocar os forms em separado e usar javascript para alterar o id e fazer a postagem. Exemplo:


<form name="form1" action="">
    <?
    while ($produtos=mysql_fetch_array($resultados)) {
    ?>
    <p><a href="#" onclick="EnviarFormulario(<?=produtos['id']?>)">Produto <?=produtos['id']?></a></p>
    <?
    }
    ?>
</form>


<form name="form2" action="altera-produto.php">
    <input type="hidden" name="id" value="">
</form>

<script type="text/javascript">
    function EnviarFormulario(produto){
        document.form2.id.value = produto;
        document.form2.submit();
    }
</script>