Ir para conteúdo

POWERED BY:

Arquivado

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

Guilherme Santana_173704

Cadastro no DB com campos dinamicos.

Recommended Posts

Olá pessoal!

 

Estou com uma enorme dúvida com o php.

 

Estou querendo cadastrar em uma tabela Informações de um formulário com campos inseridos dinamicamente pelo usuario.

 

Exemplo do codigo:

 

<?php

if(isset($_POST['enviaDados'])){

    $dados['empresa'] = $_POST['empresa'];
    $dados['funcao']  = $_POST['funcao'];
    $dados['entrada'] = $_POST['entrada'];
    $dados['saida']   = $_POST['saida'];

    if(empty($dados['empresa'])){
        $re['empresa'] = 'Por favor, informe o nome da empresa'
    }elseif(empty($dados['funcao'])){
        $re['funcao'] = 'Por favor, informe a sua função na empresa'
    }else{
        create('experiencia_obj',$dados)
        echo 'Dados inseridos com sucesso';
    }

}

?>

<form name="experiencias" method="post">

    <input type="text" name="empresa[]" class="inputDate" /><?php echo $re['empresa']; ?>
    <input type="text" name="funcao[]" class="inputDate" /><?php echo $re['funcao']; ?>

    <input type="text" name="entrada[]" class="inputDate" />
    <input type="text" name="saida[]" class="inputDate" />

    <input type="submit" name="enviaDados" value="Enviar" />

</form>

Ai cadastra sertinho, só que na tabela aparece só array!

 

Por favor me ajudem com este problema!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
 
if(isset($_POST['enviaDados'])){
 
    $dados['empresa'] = $_POST['empresa'];
    $dados['funcao']  = $_POST['funcao'];
    $dados['entrada'] = $_POST['entrada'];
    $dados['saida']   = $_POST['saida'];
 
    if(empty($dados['empresa'])){
        $re['empresa'] = 'Por favor, informe o nome da empresa';
    }elseif(empty($dados['funcao'])){
        $re['funcao'] = 'Por favor, informe a sua função na empresa';
    }else{
        create('experiencia_obj',$dados)
        echo 'Dados inseridos com sucesso';
    }
 
}
 
?>
 
<form name="experiencias" method="post">
 
    <input type="text" name="empresa[]" class="inputDate" /><?php echo $re['empresa']; ?>
    <input type="text" name="funcao[]" class="inputDate" /><?php echo $re['funcao']; ?>
 
    <input type="text" name="entrada[]" class="inputDate" />
    <input type="text" name="saida[]" class="inputDate" />
 
    <input type="submit" name="enviaDados" value="Enviar" />
 
</form>

 

 

Function Create:

 

<?php

	function create($tabela, array $datas){
	$fields = implode(", ",array_keys($datas));
	$values = "'".implode("', '",array_values($datas))."'";		
	$qrCreate = "INSERT INTO {$tabela} ($fields) VALUES ($values)";
	$stCreate = mysql_query($qrCreate) or die ('Erro ao cadastrar em '.$tabela.''.mysql_error());
	
	if($stCreate) {
		return true;
	}
	}

?>

Desde já, agradeço pelas respostas!

Compartilhar este post


Link para o post
Compartilhar em outros sites
create('experiencia_obj',$dados);

; no fim do create também.

 

Seguinte, o array já está sendo passado na função.

 

Se você está inserindo 1 cadastro por vez, retire os [ ] dos campos.

 

Senão, falta fazer um for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então falta fazer o for

if(isset($_POST['enviaDados'])){
    for( $i=0; $i<count($_POST['empresa'])    && 
               $i<count($_POST['funcao'])     &&
    $i++ ):
        $dados['empresa']         =  $_POST['empresa'][$i];  
        $dados['funcao']          =  $_POST['funcao'] [$i]; 
     endfor;
}

Aí você adapta a sua necessidade.

 

// Comente a função create

e dê um

echo'<pre>';
print_r($dados); 
echo'</pre>';

dentro do for.

 

Melhor do que toda hora ficar consultando banco para ver se o array teve sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério Santana, teria como você fazer, pois não sei (sou novo no php)

 

 

Rogério Santana, muito obrigado. Vou fazer isso sim!

 

 

 

So te peço um favor :yes:

 

Estou sem internet em casa (estou fazendo migração para a GVT)

 

Estão so vou postar a resposta de deu certo ou não amanhã ou hoje a noite! E peço pra que você não abandone este tópico :natallaugh:

 

Desde já, muito obrigado!

 

 

 

PS: Eu sabia o código de co

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério, deu erro de sintaxe nas linhas 4 e 7:

 

$i++ ):

 

endfor;

 

if(isset($_POST['enviaDados'])){
    for( $i=0; $i<count($_POST['empresa'])    && 
               $i<count($_POST['funcao'])     &&
    $i++ ):
        $dados['empresa']         =  $_POST['empresa'][$i];  
        $dados['funcao']          =  $_POST['funcao'] [$i]; 
     endfor;
}

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.