Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Estou com um problema em ir buscar os dados de uma combobox para uma variavel em php e consequentemente gravar na bd..um exemplo..
<p align="left"><font color="#ccccc"><font face="Century Gothic" size="2"> <strong> 3. Qual a sua faixa etaria</strong>
</font> </font>
</p>
<p align="left"> <font face="Times New Roman" color="#ccccc"> <select size="1" id="faixa_etaria" name="faixa_etaria"><option
value=Seleccionar selected>Seleccionar</option> <option
value="op1">menos de 16 anos</option> <option
value="op2">17 aos 21 anos</option> <option
value="op3">22 aos 36 anos</option> <option
value="op4">37 aos 50 anos</option> <option
value="op5">mais que 50 anos</option>
</select> </font>
</p>
<?PHP
require_once('config.php');
mysql_select_db($database, $link);
$nome=$_POST['nome'];
${"title_default_" . $sexo} = "selected";
$sexo["1"]= Masculino;
$sexo["2"]= Feminimo;
$faixa_etaria["op1"]= "menos de 16 anos";
$faixa_etaria["op2"]= "17 aos 21 anos";
$faixa_etaria["op3"]= "22 aos 36 anos";
$faixa_etaria["op4"]= "37 aos 50 anos";
$faixa_etaria["op5"]= "mais que 50 anos";
/* Fazendo a query SQL*/
$query = "Insert into form (nome,sexo,faixa_etaria)
VALUES ('$nome','$sexo','$faixa_etaria')";
$result = mysql_query($query)or die("Query falhou..$query");
header("location:formulario1.php");
/ Fechando a conexão /
mysql_close($link);
?>
Como é possível ver tenho um campo de nome faixa_etaria e depois varias opções com diferentes values mas quando gravo na bd, apenas me grava a palavra "array" em vez de gravar "menos de 16 anos", "17 aos 21 anos" ou seja a opção que eu seleccionar;
Como posso resolver o problema??Já não sei o que tentar..ainda sou novo nisto, já pesquisei mas não estou a conseguir resolver o problema..
Tentei substituir o
$faixa_etaria["op1"]= "menos de 16 anos";
$faixa_etaria["op2"]= "17 aos 21 anos";
$faixa_etaria["op3"]= "22 aos 36 anos";
$faixa_etaria["op4"]= "37 aos 50 anos";
$faixa_etaria["op5"]= "mais que 50 anos";
por
echo $_POST['faixa_etaria'];
mas na Base de dados não grava nada..depois na $query existe mudanças??
foi só um exemplo pra você testar
mas olha se isso te ajuda e modele a seu gosto
teste.php
<?php
$nome = 'victor';
$sexo = 'masculino';
//verifica se existe e se foi escolhida opção
if( isset($_POST['faixa_etaria']) && $_POST['faixa_etaria'] != 'selecione' ){
//coloca as opções no array
$faixa = array( 'op1'=> 'menos de 16 anos',
'op2' => '17 aos 21 anos',
'op3' => '22 aos 36 anos',
'op4' => '37 aos 50 anos',
'op5' => 'mais que 50 anos');
//atribui a string de acordo com a opção escolhida
$faixa_etaria = $faixa[$_POST['faixa_etaria']];
//monta a query
$query = "Insert into form (nome,sexo,faixa_etaria) VALUES ('{$nome}','{$sexo}','{$faixa_etaria}')";
echo $query;//imprime a query
}
?>O código funcionou mas não gravou na BD e retirei o echo $query; e coloquei $result = mysql_query($query)or die("Query falhou..$query"); para entender qual seria o problema e a query está a falhar e a mostrar isto:
Query falhou..Insert into form (faixa_etaria) VALUES ('17 aos 21 anos')
Estou só a testar com a faixa_etaria..
<?PHP
require_once('config.php');
mysql_select_db($database, $link);
//verifica se existe e se foi escolhida opção
if( isset($_POST['faixa_etaria']) && $_POST['faixa_etaria'] != 'Seleccionar' ){
//coloca as opções no array
$faixa = array( 'op1'=> 'menos de 16 anos',
'op2' => '17 aos 21 anos',
'op3' => '22 aos 36 anos',
'op4' => '37 aos 50 anos',
'op5' => 'mais que 50 anos');
//atribui a string de acordo com a opção escolhida
$faixa_etaria = $faixa[$_POST['faixa_etaria']];
//monta a query
$query = "Insert into form (faixa_etaria) VALUES ('{$faixa_etaria}')";
$result = mysql_query($query)or die("Query falhou..$query");
}
header("location:formulario1.php");
/ Fechando a conexão /
mysql_close($link);
?>
Qual achas que pode ser o problema??Desde já agradeço a ajuda..e desculpa incomodar com duvidas provavelmente básicas..
muda ae
$query = "Insert into form (faixa_etaria) VALUES ('{$faixa_etaria}')";
$result = mysql_query($query)or die("Query falhou..$query");
para
$query = "Insert into `form` (`faixa_etaria`) VALUES ('{$faixa_etaria}')";
$result = mysql_query($query)or die(mysql_error());>
O código funcionou mas não gravou na BD e retirei o echo $query; e coloquei $result = mysql_query($query)or die("Query falhou..$query"); para entender qual seria o problema e a query está a falhar e a mostrar isto:
Query falhou..Insert into form (faixa_etaria) VALUES ('17 aos 21 anos')
Qual achas que pode ser o problema??Desde já agradeço a ajuda..e desculpa incomodar com duvidas provavelmente básicas..
Este erro pode ser provocado porque você PODERIA estar atribuindo dados trocados ao seu comboBox. Seguindo o seu exemplo postado, deveria ficar assim:
Formulário:
<p align="left">
<font color="#ccccc">
<font face="Century Gothic" size="2">
<strong> 3. Qual a sua faixa etaria</strong>
</font>
</font>
</p>
<p align="left">
<font face="Times New Roman" color="#ccccc">
<select size="1" id="faixa_etaria" name="faixa_etaria">
<option value=Seleccionar selected>Seleccionar</option>
<option value="op1">menos de 16 anos</option>
<option value="op2">17 aos 21 anos</option>
<option value="op3">22 aos 36 anos</option>
<option value="op4">37 aos 50 anos</option>
<option value="op5">mais que 50 anos</option>
</select>
</font>
</p>
Código que gravará os dados na Base
<?php
require_once('config.php');
mysql_select_db($database, $link);
if( isset($_POST['faixa_etaria']) )
{
$OPT = $_POST['faixa_etaria'];
// atribui a string de acordo com a opção escolhida
// $faixa_etaria = $faixa[$_POST['faixa_etaria']];
// Seu erro está em usar a string referente ao ítem do combobox em sua query
// O ideal seria que você atribuisse o value do ítem selecionado no comboBox
// monta a query
$query = "Insert into form (faixa_etaria) VALUES ('$OPT')";
$result = mysql_query($query)or die("Query falhou..$query");
}
// Este redirecionamento vai lhe atrapalhar a controlar qualquer erro que venha a ocorrer na execução da query
header("location:formulario1.php");
/* Fechando a conexão */
mysql_close($link);
?>
Seu código pode passar por diversas melhorias, como o uso do CSS para formatar o texto e ajustar o layout de diversos ítens do mesmo. A forma como foi usada a tag FONT do html no codigo do formulario está de uma forma desnecessária, uma vez que você pode aplicar todos os atributos descritos em uma tag só, ex.:
<font color="#ccccc" face="Century Gothic" size="2">Seu Texto</font>Mas isto é assunto para outro tópico...
exemplo simples aki
teste.htm
teste.php