Radio button method post

Enviada por Kelsen 
Kelsen
Radio button method post
15 de March de 2018 às 07:50AM
Olá pessoal,

Sou iniciante em PHP e estou com algumas dúvidas, quem puder me auxiliar agradeço.

Tenho o seguinte form abaixo.

<input type="radio" name="empresa" value="empresa 1">empresa 1<br>
<input type="radio" name="empresa" value="empresa 2">empresa 2<br>
<input type="radio" name="empresa" value="empresa 3">empresa 3<br>
<input type="radio" name="empresa" value="empresa 4">empresa 4<br>
<input type="radio" name="empresa" value="outra">Outra:
    <input type="text" name="empresa_outra" size="14">

Quando eu faço o envio através do post eu consigo pegar os valores as empresas 1 - 4, contudo quando é setado a opção 'outra' e é liberado um campo text para digitação este campo eu não consigo pegar dentro, como eu conseguiria fazer isto? Já tentei algum em if, else porém não consigo pegar o valor digitado.
Jayme A. C. Gimenez
Re: Radio button method post
15 de March de 2018 às 01:27PM
O input para digitação é independente do radio. Você tem que fazer um post pra ele também, separado do post do radio: tipo $texto_digitado = $_POST['empresa_outra']; . Seria isso?
Gabriel
Re: Radio button method post
15 de March de 2018 às 04:25PM
Jayame,

O valor dos campos radio eu consigo armazenar no banco sem problemas ' $empresa = $_POST['empresa']; ' o meu problema é quando selecionado a opção ' outra ' que abre um campo txt para informar outra empresa ' empresa 10 ' por exemplo.
'
O que preciso é capturar o valor quando é optado a opção outra tipo '$empresa_outra = $_POST['empresa'] '

empresa_outra / empresa precisão ir para mesma tabela no banco ' empresa ' .
Gabriel
Re: Radio button method post
16 de March de 2018 às 06:41AM
Opa perdão # JAYME
Jayme A. C. Gimenez
Re: Radio button method post
16 de March de 2018 às 12:58PM
Então... É o que eu já disse ali em cima...

Você tem que pegar em dois $_POSTs diferentes (o campo de texto não faz parte do radio):
$empresa = $_POST['empresa'];//porque o name do radio é empresa.
$empresa_outra = $_POST['empresa_outra'];//porque o name do input de texto é empresa_outra.

Uma vez feito isso, você vai usar if para que o script saiba qual variável será usada para inserir o valor na tabela (do banco de dados) 'empresa'.
Gabriel
Re: Radio button method post
17 de March de 2018 às 08:38AM
Jaime,

Utilizei esse if contudo quando selecionado o txt o valor armazenado no banco é outra e não o resultado digitado.

if(isset($_POST['empresa']))
echo $_POST['empresa'];
else
echo $_POST['empresa_outra'];
Jayme A. C. Gimenez
Re: Radio button method post
19 de March de 2018 às 02:34PM
Vamos tentar entender o que esse seu script faz:

if(isset($_POST['empresa']))
echo $_POST['empresa'];
else
echo $_POST['empresa_outra'];

1) A função isset checa se a variável $_POST['empresa'] está setada; simplesmente isso; ou seja, não faz ideia do valor que a variável carrega.
2) Então, seu if faz o seguinte: se $_POST['empresa'] estiver setada, mostre o valor que $_POST['empresa'] carrega.
3) Enquanto o else diz: do contrário (ou seja, se $_POST['empresa'] não estiver setada), mostre o valor de $_POST['empresa_outra'].

Pois bem. Ocorre que a variável $_POST['empresa'] sempre estará setada, mesmo quando, no radio, o usuário marcar a opção "Outra". Portanto, esse seu script sempre mostrará o valor de $_POST['empresa']. Concorda?

Para funcionar do jeito que você quer, seu if tem que ser capaz de decidir com base no valor de $_POST['empresa']: se o valor for "outra", mostre o valor de $_POST['empresa_outra']; do contrário, mostre o valor de $_POST['empresa'].
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.