Pegar os dados do input radio

Bom dia pessoal, criei um formulario onde o usuario preenche os dados comuns de 2 classes que seria codigo e preço, dependendo oque ele colocasse ele seria enviado para outra pagina para poder preencher o resto do form de acordo com o produto que ele escolhesse, porem não to sabendo como pegar o “tipo” de produto que o usuario escolhe. Segue meu codigo HTML e PHP que eu fiz até agora se alguém puder me ajudar ficaria muito grato :slight_smile:

Formulario de Produto

Codigo
    <label for="preco">Preço</label>
    <input type="number" step="any" name="preco"><br>

    <input name="tipo" type="radio" id="dvd"checked>DVD <br>
    <input name="tipo" type="radio" id="leite">Leite<br>

    <input type="submit" value="Cadastrar">
</form>

$tipo = $_POST[“tipo”];

if(insereProduto($conexao,$codigo,$preco)){
if($tipo == ‘dvd’)
header(“Location: Form_DVD.php”);
else
header(“Location: Form_Leite;”);
}

Você pode postar o resultado do var_dump() na suas entradas?

var_dump(php://input)

Fico no aguardo! :smiley:

1 curtida

O php (e qualquer outra linguagem de servidor/backend) sempre pega o value do html pelo name (mesmo que você não defina como no caso do number preco, mas ele será definido quando o usuário informar), sempre, isso é regra!

Ou seja, seu input precisa ter isso…

<input name="tipo" type="radio" id="dvd" value="dvd" checked>DVD <br>
<input name="tipo" type="radio" id="leite" value="leite">Leite<br>

Faça o teste!

O atributo id serve apenas no frontend (js, html, css) ele nunca irá para o servidor/php no seu caso…

Obs: input’s to tipo radio, checkbox e select são considerados estáticos e precisam ter seus values definidos sempre (mesmo que através de js o que não vem ao caso pra você aqui)…

Outros inputs de texto como text, number, date, email, textarea etc são considerados dinâmicos, por isso o php não reclama porque o valor sempre será passado (mesmo que string em branco).

Aproveito também para indicar melhores práticas no php, por exemplo evite usar POST/GET diretamente, prefira filtrar…

//$tipo = $_POST["tipo"]; //menos seguro!
$tipo = filter_input(INPUT_POST, 'tipo'); //mais seguro!
2 curtidas

Realmente! Faltou o value :clap: :clap:

1 curtida

o var_dump so me retorna null

Mesmo alterando o value, como sugerido pelo @rodevops?

sim, fiz todas as alteracoes

Você certificou se o endereço do script para onde você esta enviando os dados está correto?

sim se eu tiro o 2 segundo if entra vai para o form do dvd normalmente

if(insereProduto($conexao,$codigo,$preco)){

     header("Location: Form_DVD.php");

}

Saquei. Mas e o <action> do <form>, como está?

manda pro adiciona_produto.php ta tudo ok nele adiciona essa 1 parte no banco de boas.

Nesse caso, use var_dump diretamente no post…

var_dump($_POST);

Só para testar, veja se o formulário está la dentro…

Pergunta inocente, para não dizer idiota, o method do form está como post?

Adicione isso no começo da página e veja se exibe alguma mensagem de erro…

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
1 curtida