Problems with PHP POST

Asked

Viewed 74 times

0

add-product.log.

<?php include("header.php");
      include("conexao.php"); 
      include("banco-produtos.php");?>
<?php


$nome = $_POST["nome"];
$preco = $_POST["preco"];
$descricao = $_POST["descricao"];
$categoria = $_POST["categoria"];

?>
<div class="alert-box">
    <?php 
        if(insereProduto($conexao, $nome, $preco, $descricao, $categoria)){
    ?>
        <p class="alert success">O produto <span><?= $nome; ?></span> foi adicionado com o valor: <span><?= $preco; ?></span> na categoria: <span><?= $categoria; ?></span></p>
    <?php
        }else{
            $msgErro = mysqli_error($conexao); 
    ?>
        <p class="alert error">Devido a um erro, o produto <span><?= $nome ?></span> não foi adicionado<br>Erro: <?= $msgErro; ?></p>
    <?php 
        }; 
    ?>
</div>

<div class="container">


</div>

<?php include("footer.php"); ?>

Stockpile

<?php
include("header.php");
include("conexao.php");
include("banco-produtos.php");
if(array_key_exists("removido", $_GET) && $_GET["removido"]=="true"):
    ?>
<p class="alert success">O produto foi removido com sucesso.</p>
<?php
endif
?>
<table>
    <?php
    $produtos = ListaItens($conexao);
    foreach ($produtos as $produto) :
        ?>
    <tr>
        <td><?= $produto["nome"] ;?></td>
        <td><?= $produto["preco"] ;?></td>
        <td><?= substr($produto["descricao"], 0, 30) . "..." ;?></td>
        <td><?= $produto["categoria"]; ?></td>
        <td>
            <form action="remove-produto.php" method="post">
                <input type="hidden" name="id" value="<?=$produto["id"]?>">
                <button>Remover Item</button>
            </form>
        </td>
    </tr>
    <?php
    endforeach;
    ?>
</table>

add-product

<?php 
include("header.php");
include("conexao.php");
include("banco-categorias.php");

$categorias = listaCategorias($conexao);
?>

<div class="container">
    <form action="adiciona-produto-log.php" method="post">
        <label for="nome-item">Nome:</label>
        <input type="text" name="nome" id="nome-item">
        <label for="preco-item">Preço:</label>
        <input type="number" name="preco" id="preco-item">
        <label for="descricao-item">Descrição:</label>
        <textarea type="number" name="descricao" id="descricao-item"></textarea>
        <label for="selecionar-categorias"></label>
        <select id="selecionar-categorias">
            <?php foreach($categorias as $categoria): ?>
                <option value="<?=$categoria['id']?>" name="categoria"><?=$categoria['nome']?></option>

            <?php endforeach ?>
        </select>
        <input type="submit" name="cadastra-produto" value="Cadastrar">
    </form>

</div>

<?php include("footer.php"); ?>

Insertion function

<?php

function insereProduto($conexao, $nome, $preco, $descricao, $categoria){
    $query = "insert into produtos (nome, preco, descricao, categoria) values ('{$nome}', {$preco}, '{$descricao}', '{$categoria}')";
    $retornoInserção = mysqli_query($conexao, $query);
    return $retornoInserção;
}

Well, I’m trying to get a product, when registered, send to the bank its own category, however, once the product is shipped, it does not receive a category, and is registered in the bank.

  • 2

    Your <select id="selecionar-categorias"> must have a name, without it the value is not sent or if you cannot capture/identify it. Further uses $categoria = $_POST["categoria"];

1 answer

3


The mistake is in yours adiciona-produto, the attribute name is in the option, when you really should be in select, see:

    <select id="selecionar-categorias" name="categoria">
        <?php foreach($categorias as $categoria): ?>
            <option value="<?=$categoria['id']?>"><?=$categoria['nome']?></option>
        <?php endforeach ?>
    </select>
  • I still can’t test to see if funf, I’ll only get my pc back on Monday, but thanks for the readiness :3

  • 1

    Tranquil xamps!! = D

  • worked, thank you very much

Browser other questions tagged

You are not signed in. Login or sign up in order to post.