Pegar os dados do input radio

11 respostas
C

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;”);

}

11 Respostas

G

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

var_dump(php://input)

Fico no aguardo! :smiley:

R

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!
G

Realmente! Faltou o value :clap: :clap:

C

o var_dump so me retorna null

G

Mesmo alterando o value, como sugerido pelo @rodevops?

C

sim, fiz todas as alteracoes

G

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

C

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");

}

G

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

C

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

R

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);
Criado 12 de setembro de 2017
Ultima resposta 12 de set. de 2017
Respostas 11
Participantes 3