shfp 0 Denunciar post Postado Outubro 22, 2015 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 29Warning: 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 30Notice: Array to string conversion in C:\xampp\htdocs\tcc\cadatrocargo.php on line 29Warning: 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
(RNU) Ruan Silva 61 Denunciar post Postado Outubro 22, 2015 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