Jump to content
danteblatt

Inserir Múltiplos Dados de um Form Dinâmico no SQL

Recommended Posts

Olá Srs,

Não tenho muito conhecimento em PHP e estou com um formulário onde o usuário tem alguns campos para preencher e gravar no banco de dados SQL, sendo que um campo deste form será dinâmico onde o usuário poderá adicionar quantos campos forem necessários a partir de um botão "+".

Nome do campo dinâmico: chavenf

Segue abaixo o código do formulário:

<form method="POST" action="../includes/mf-processa.php">
	<div class="form-group">
 		<div class="form-row">
			<div class="form-group col-md-4">
				<input type="hidden" name="usuario[]" value="<?php echo $_SESSION['usuarioNome']; ?>" />
				<select class="form-control" id="tipo" name="tipo[]">
					<option selected>Tipo</option>
					<option>1</option>
					<option>2</option>
				</select>
			</div>
			<div class="form-group col-md-4">
				<select class="form-control" id="prioridade" name="prioridade[]">
				<option selected>Prioridade</option>
				<option>Alta</option>
				<option>Padrão</option>
				</select>
			</div>
			<div class="form-group col-md-4">
				<input class="form-control" type="text" name="fornecedor[]" placeholder="Fornecedor" id="fornecedor">
			</div>
		</div>

		<div style="display:none;" class="form-row" id="chavecte">
			<div class="form-group col-md-12">
				<label>Chave </label>
				<input class="form-control" type="text" name="chavecte[]">
			</div>
		</div>

		<div class="form-row" id="row-nota">
			<div class="form-group col-md-12">
				<label>Chave da NF </label>
				<input class="form-control" type="text" name="chavenf[]" id="chavenf">
			</div>
		</div>
			
		<div style="display:none;" class="form-row" id="add-field-nf">
			<div class="form-group col-md-2">
				<button type="button" class="btn btn-primary" id="add"> + </button>
			</div>
		</div>
		
		<div class="form-row">
			<div class="form-group col-md-2">
				<input type="submit" class="btn btn-primary" value="Cadastrar">
			</div>
		</div>
	</div>
</form>

<script>
$( "#add" ).click(function() {
$( "#row-nota" ).append('<div class="form-group col-md-12"><input class="form-control" type="text" name="chavenf[]" id="chavenf"></div>');
});	
</script>

Abaixo o arquivo que conecta e insere no BD, "mf-processa.php"

<?php
session_start();
include_once("conexao.php");

$prioridade = filter_input(INPUT_POST, 'prioridade', FILTER_SANITIZE_STRING);
$usuarioentrada = filter_input(INPUT_POST, 'usuario', FILTER_SANITIZE_STRING);
$tipofrete = filter_input(INPUT_POST, 'tipofrete', FILTER_SANITIZE_STRING);
$fornecedor = filter_input(INPUT_POST, 'fornecedor', FILTER_SANITIZE_STRING);
$chavenf = preg_replace("/\s+/", "", filter_input(INPUT_POST, 'chavenf', FILTER_SANITIZE_STRING));
$chavecte = preg_replace("/\s+/", "", filter_input(INPUT_POST, 'chavecte', FILTER_SANITIZE_STRING));
$nNF = substr($chavenf, 25, 9);
$timenow = date('d-m-Y'); 
$timenow .= ' '.date('H:i:s');
$qtnotas = count($chavenf)-1;

for ($f = 0; $f <= $qtnotas; $f++)
{
$sql = "INSERT INTO base (data, usuarioentrada, prioridade, tipofrete, nf, fornecedor, chavenf, chavecte, acao, dataretorno, usuariofiscal) VALUES (
'.$timenow[$f].',
'.$usuarioentrada[$f].',
'.$prioridade[$f].',
'.$tipofrete[$f].',
'.$nNF[$f].',
'.$fornecedor[$f].',
'.$chavenf[$f].',
'.$chavecte[$f].',
'',
'',
''
)" or die ("<center>Erro: " . mysqli_error() . "</center>");

$insert = mysqli_query($conn, $sql);
  
if(mysqli_insert_id($conn)){
	$_SESSION['msgrec'] = "<p style='color:green;'>Nota cadastrada com sucesso!</p>";
	header("Location: ../recebimento/recebimento.php");
}else{
	$_SESSION['msgrec'] = "<p style='color:red;'>Nota não cadastrada com sucesso!</p>";
	header("Location: ../recebimento/recebimento.php");
  
}

 

 

Veja o erro retornado na página.. Já tentei alterar o código e mesmo assim não consegui efetuar a inserção dos dados no BD.

 

( ! ) Warning: count(): Parameter must be an array or an object that implements Countable in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 31
Call Stack
# Time Memory Function Location
1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0

 

( ! ) Notice: Uninitialized string offset: 0 in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 41
Call Stack
# Time Memory Function Location
1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0

 

( ! ) Notice: Uninitialized string offset: 0 in D:\Wamp\www\RecebimentoAdm\includes\mf-processarecebimento.php on line 42
Call Stack
# Time Memory Function Location
1 0.0001 411528 {main}( ) ...\mf-processarecebimento.php:0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Diego-SLP
      Bom dia,
       
      Estou passando uma variavel via GET para uma pagina PHP e a SQL não interpreta a mesma.
       
      Se eu printar o numero é exibido, se eu colocar o valor manualmente na SQL ela funciona, porém quando coloco a variavel não exibe nenhum registro, se alguem puder me ajudar.
       
      <?php $id = $_GET['id']; echo $id; $procura = mysqli_query($con,"SELECT p.DATA,p.cod_func,f.nome,f.funcao,p.cod_etapa,p.entrada_1,p.saida_1,p.entrada_2,p.saida_2,p.entrada_3,p.saida_3 FROM rh_pontoFuncionario p, rh_funcionario f WHERE p.cod_func = f.cod AND p.cod_obra = '".$id."' ORDER BY p.id desc") or die (mysqli_error($procura)); while($row = mysqli_fetch_array($procura)){ ?> <tr role="row" class="odd table-sm"> <td class="text-center"> <?php echo date('d/m/Y',strtotime($row['DATA'])); ?> </td> <td class="text-center"><?php echo $row['cod_func'];?></td> <td class="text-center"><?php echo $row['nome'];?></td> <td class="text-center"><?php echo $row['funcao'];?></td> <td class="text-center"><?php echo $row['cod_etapa'];?></td> <td class="text-center"><?php echo $row['entrada_1'];?></td> <td class="text-center"><?php echo $row['saida_1'];?></td> <td class="text-center"><?php echo $row['entrada_2'];?></td> <td class="text-center"><?php echo $row['saida_2'];?></td> <td class="text-center"><?php echo $row['entrada_3'];?></td> <td class="text-center"><?php echo $row['saida_3'];?></td> <td class="project-actions text-center"> <a class="btn btn-warning btn-sm" href="#.php?id=<?php echo $row['id']; ?>"> <i class="fas fa-pencil-alt"> </i> </a> <a class="btn btn-danger btn-sm" href="#.php?id=<?php echo $row['id']; ?>"> <i class="fas fa-trash-alt"> </i> </a> </td> </tr> <?php }//while ?>  
    • By rodrigofv1994
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "ajax";   $email = $_POST['email']; $senha = $_POST['senha'];   // Criando conexão $conn = new mysqli($servername, $username, $password, $dbname); // Checando conexão if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); }   $sql = "select mail , senha from usuarios where mail = '$email' and senha = '$senha'";   $registros=$conn->count() //$registros = mysqli_num_rows($conn);   if($registros>0){     echo "1"; }else{     echo"0"; }   $conn->close(); ?>
    • By rodrigofv1994
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "ajax";   $email = $_POST['email']; $senha = $_POST['senha'];   // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); }   $sql = 'INSERT INTO usuarios VALUES (default,'$email','$senha')';   if ($conn->query($sql) === TRUE) {   echo "New record created successfully"; } else {   echo "Error: " . $sql . "<br>" . $conn->error; }   $conn->close(); ?>
    • By Camilavip
      Boa noite, alguém por acaso sabe um modo simples de se desativar um cadastro automaticamente após um período?
      Deixa eu explicar. Eu cadastro um cliente, em que na tabela do banco de dados tem o campo "ativo" onde 1 é ativado e 0 é desativado. Então eu queria cadastrar esse cliente e o ativar, mas que no período de 30 dias por exemplo ele se desativasse sozinho.  Alguém sa8e algo simples nesse sentido?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.