Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

shfp

select form + php + postgresql

Recommended Posts

Boa noite pessoal, sou nova aqui no grupo e gostaria de uma ajuda se for possível.

 

O que quero fazer é o seguinte, tenho um select form criado dinamicamente com dados de um banco de dados.

Quando faço testes imprimindo as variáveis do bd dá certo.

 

Aí eu quero pegar a opção selecionada pelo usuário e quero gravar seu id em um outro banco de dados.

 

o esquema do banco de dados é id_concurso | nome_concurso | ano .

 

o código é o seguinte.

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Selecionar Edital</title>
<meta name="description" content="Source code generated using layoutit.com">
<meta name="author" content="LayoutIt!">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<style>
.centered {
margin: 0 auto !important;
float: none !important;
}
</style>
</head>
<body>
<form action="teste2.php" method="get">
<label class="control-label">Selecione o edital:</label><br>
<select class="form_control" id="edital" name="edital">
<option value="">Selecione o edital:</option>
<?php
$servidor = "localhost";
$dbnome = "Editais";
$usuario = "postgres";
$porta = '5432';
$senha ="1234";
$conexao = pg_connect("host=$servidor port=$porta dbname=$dbnome user=$usuario password=$senha") or die ("Não foi possivel conectar ao servidor PostGreSQL");
//echo "Conexão efetuada com sucesso!!";
$sql = "Select \"Id_Concurso\", nome_concurso From edital";
$resultado = pg_query($sql); //aqui é o retorno da consulta
if(pg_num_rows($resultado)>0){
while($row = pg_fetch_array($resultado)){
?>
<option value="<?php $row['Id_Concurso'];?>"> <?php echo $row['nome_concurso'];?> </option>";
<?php }
}else{ echo "não existe nada no banco de dados!";}
pg_close($conexao);
?>
</select>
<input type="submit" value="teste">
</form>
</body>
</html>
o código do teste2.php é:
<?php
$servidor = "localhost";
$dbnome = "Editais";
$usuario = "postgres";
$porta = '5432';
$senha ="1234";
$conexao = pg_connect("host=$servidor port=$porta dbname=$dbnome user=$usuario password=$senha") or die ("Não foi possivel conectar ao servidor PostGreSQL");
//echo "Conexão efetuada com sucesso!!";
if(!empty($_POST["edital"])){
//Pega campos input
$edital = $_POST["edital"];
//insere no banco
$sql = "INSERT INTO teste(id) VALUES ($edital)";
pg_query($sql);
} else{ echo "campo vazio!";}
//fecha conexão
pg_close($conexao);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Selecionar Edital</title>
<meta name="description" content="Source code generated using layoutit.com">
<meta name="author" content="LayoutIt!">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<style>
.centered {
margin: 0 auto !important;
float: none !important;
}
</style>
</head>
<body>
</body>
</html>

 

 

O banco de dados que vou gravar o value do select tem apenas um campo chamado id. Porém quando clico no botão teste, a direcionar para outra página, não pega o valor do select e mostra que o campo está vazio.

 

O que devo fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que vi, vc apenas trocou as bolas.. está enviando o form pelo metodo GET e está tentando recuperar os dados no script pelo método POST. Então, basta trocar um dos lados. Ou muda o atributo method do form para POST ou muda:

 

$edital = $_POST["edital"];

para:

$edital = $_GET["edital"];

 

um breve conceito sobre POST e GET... http://www.devmedia.com.br/entendendo-os-metodos-get-e-post-no-php/10470

No google tem milhões rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

O method get e post estava o post aí mudei pra get pra fazer testes, esqueci de mudar pra colar o código aqui.

 

Fiz as mudanças sugeridas, mudei o method para post:

 

<form action="teste2.php" method="post">

 

e adicionei um echo:

 

<option value="<?php echo $row['Id_Concurso'];?>"> <?php echo $row['nome_concurso'];?> </option>";

 

Deu certo aqui.

 

MUITO OBRIGADA A TODOS VOCÊS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.