Ir para conteúdo

POWERED BY:

Arquivado

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

shfp

Formulário Dinâmico(array) com PHP e Postgres

Recommended Posts

Boa noite pessoal, preciso de mais uma ajuda.

Tenho um formulário dinâmico e quero gravar os campos dele em um banco de dados.

 

Segue os códigos:

 

<!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>Cadastrar Cargos</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>
<script type="text/javascript">
var qtdeCampos = 1;
function addCampos() {
var objPai = document.getElementById("campoPai");
//Criando o elemento DIV;
var objFilho = document.createElement("div");
//Definindo atributos ao objFilho:
objFilho.setAttribute("id","filho"+qtdeCampos);
//Inserindo o elemento no pai:
objPai.appendChild(objFilho);
//Escrevendo algo no filho recém-criado:
document.getElementById("filho"+qtdeCampos).innerHTML = "<input type='text' class='form-control' id='campo"+qtdeCampos+"' name='campo[]'><br>";
qtdeCampos++;
}
</script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-4">
<form role="form" action="cadatrocargo.php" method="post">
<div class="form-group">
<label class="control-label">Selecione o edital:</label><br>
<select class="form_control" 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 echo $row['Id_Concurso'];?>"> <?php echo $row['nome_concurso'];?> </option>";
<?php }
}else{ echo "não existe nada no banco de dados!";}
pg_close($conexao);
?>
</select>
</div>
<div class="form-group">
<label>Cidade:</label>
<input type="text" class="form-control" id="Nome do concurso" name="cidade"/>
</div>
<div class="form-group">
<label class="control-label">Estado:</label>
<select class="form-control" name="estado">
<option value="">Selecione</option>
<option value="AC">Acre</option>
<option value="AL">Alagoas</option>
<option value="AP">Amapá</option>
<option value="AM">Amazonas</option>
<option value="BA">Bahia</option>
<option value="CE">Ceará</option>
<option value="DF">Distrito Federal</option>
<option value="ES">Espirito Santo</option>
<option value="GO">Goiás</option>
<option value="MA">Maranhão</option>
<option value="MS">Mato Grosso do Sul</option>
<option value="MT">Mato Grosso</option>
<option value="MG">Minas Gerais</option>
<option value="PA">Pará</option>
<option value="PB">Paraíba</option>
<option value="PR">Paraná</option>
<option value="PE">Pernambuco</option>
<option value="PI">Piauí</option>
<option value="RJ">Rio de Janeiro</option>
<option value="RN">Rio Grande do Norte</option>
<option value="RS">Rio Grande do Sul</option>
<option value="RO">Rondônia</option>
<option value="RR">Roraima</option>
<option value="SC">Santa Catarina</option>
<option value="SP">São Paulo</option>
<option value="SE">Sergipe</option>
<option value="TO">Tocantins</option>
</select>
</div>
<div class="form-group">
<label>Nível:</label>
<input type="text" class="form-control" id="Nome do concurso" name="nivel" />
</div>
<div class="form-group" id="campoPai">
<label>Cargo:</label>
<input type="text" class="form-control" id="Nome do concurso" name="campo[0]" /> <br>
</div>
<div class="form-group pull-right">
<button type="button" value="Adicionar Cargo" class="btn btn-default" onclick="addCampos()">
Adicionar Cargo
</button>
</div>
<br><br><br>
<div class="form-group">
<button type="submit" class="btn btn-default">
Cadastrar
</button>
</form>
</div>
</div>
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
Esse cadatrocargos.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
foreach($_POST['campo'] as $campo) {
$campo = $_POST['campo'];
$edital = $_POST['edital'];
$cidade = $_POST['cidade'];
$estado = $_POST['estado'];
$nivel = $_POST['nivel'];
//insere no banco
$sql = "INSERT INTO Cargos(id_concurso,cidade, estado, nivel,cargo) VALUES ($edital, $cidade, $estado, $nivel, $campo)";
pg_query($sql);
}
} else{ echo "campos vazios !";}
//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>
Erro dado:
Notice: Array to string conversion in C:\xampp\htdocs\tcc\cadatrocargo.php on line 29

Warning: pg_query(): Query failed: ERROR: syntax error at or near ")" LINE 1: ...stado, nivel,cargo) VALUES (1, Goiânia, GO, Superior, Array) ^ in C:\xampp\htdocs\tcc\cadatrocargo.php on line 30

Notice: Array to string conversion in C:\xampp\htdocs\tcc\cadatrocargo.php on line 29

Warning: pg_query(): Query failed: ERROR: syntax error at or near ")" LINE 1: ...stado, nivel,cargo) VALUES (1, Goiânia, GO, Superior, Array) ^ in C:\xampp\htdocs\tcc\cadatrocargo.php on line 30

 

 

Pelo que percebi o foreach está percorrendo direitinho o array de campo, porém acho que não está tratando como variável para inserir no banco de dados. Alguém pode me ajudar? Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está passando um array para uma string :D

 

não sou muito bom no uso de vetores, mas acredito que deveria ser assim:

foreach($_POST['campo'] as $key) {
    $campo = $key;
...
}

Assim, a cada iteração, a variável ($key) representa um elemento do teu vetor. Do modo que fez, você rodou o laço certo, mas ao invés de puxar o elemento atual puxou o vetor inteiro (por meio do $_POST) ;)

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.