Jump to content
Sign in to follow this  
asacap1000

adicionar campos no formulario

Recommended Posts

Galera, encontrei um post antigo aqui no forum que já foi encerrado, porém preciso de uma ajuda para uma situação que acredito que seja simples mas a cabeça ainda não se ligou.

Vou postar o script que peguei aqui e fiz uma alteração.

<html>
<head>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 10;

//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 0;
var linhaAtual;


function AddCampos() {
var hidden1 = document.getElementById("hidden1");
var hidden2 = document.getElementById("hidden2");

//Executar apenas se houver possibilidade de inserção de novos campos:
if (iCount < totalCampos) {

//Limpar hidden1, para atualizar a lista dos campos que ainda estão vazios:
hidden2.value = "";

//Atualizando a lista dos campos que estão ocultos.
//Essa lista ficará armazenada temporiariamente em hidden2;
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
        if (document.getElementById("linha"+iLoop).style.display == "none") {
                if (hidden2.value == "") {
                        hidden2.value = "linha"+iLoop;
                }else{
                        hidden2.value += ",linha"+iLoop;
                }
        }
}
//Quebrando a lista que foi armazenada em hidden2 em array:

linhasOcultas = hidden2.value.split(",");


        if (linhasOcultas.length > 0) {
                //Tornar visível o primeiro elemento de linhasOcultas:
                document.getElementById(linhasOcultas[0]).style.display = "block"; iCount++;
                
                //Acrescentando o índice zero a hidden1:
                if (hidden1.value == "") {
                        hidden1.value = linhasOcultas[0];
                }else{
                        hidden1.value += ","+linhasOcultas[0];
                }
                
                /*Retirar a opção acima da lista de itens ocultos: <-------- OPCIONAL!!!
                if (hidden2.value.indexOf(","+linhasOcultas[0]) != -1) {
                        hidden2.value = hidden2.value.replace(linhasOcultas[0]+",","");
                }else if (hidden2.indexOf(linhasOcultas[0]+",") == 0) {
                        hidden2.value = hidden2.value.replace(linhasOcultas[0]+",","");
                }else{
                        hidden2.value = "";
                }
                */
        }
}
}

function RemoverCampos(id) {
//Criando ponteiro para hidden1:        
var hidden1 = document.getElementById("hidden1");

//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("arq"+id).value;
        //Se o campo não tiver nenhum valor, atribuir a string: vazio:
        if (campoValor == "") {
                campoValor = "vazio";
        }

    	if(confirm("O campo que contém o valor:\n» "+campoValor+"\nserá excluído!\n\nDeseja prosseguir?")){
                document.getElementById("linha"+id).style.display = "none"; iCount--;
                
                //Removendo o valor de hidden1:
                if (hidden1.value.indexOf(",linha"+id) != -1) {
                        hidden1.value = hidden1.value.replace(",linha"+id,"");
                }else if (hidden1.value.indexOf("linha"+id+",") == 0) {
                        hidden1.value = hidden1.value.replace("linha"+id+",","");
                }else{
                        hidden1.value = "";
                }
        }
}
</script>
</head>
<body>
<form name="form1" action="teste.php" method="post">
<input type="button" value="Adicionar Cliente" id="btnAdd" onclick="AddCampos()">
<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
        document.write("<tr><span id='linha"+iLoop+"' style='display:none'>CLIENTE "+iLoop+": <td bgcolor='#FFFFFF'><label><input type='text' id='arq"+iLoop+"' name='arq"+iLoop+"'></label></td><td bgcolor='#FFFFFF'><label><input type='file' id='arq"+iLoop+"' name='arq"+iLoop+"'></label></td> <td bgcolor='#FFFFFF'><label><input type='button' value='Remover' onclick='RemoverCampos(\""+iLoop+"\")'></label></td></span></tr>");}
</script>

<input type="hidden" name="hidden1" id="hidden1">
<input type="hidden" name="hidden2" id="hidden2">
<input type="submit" value="Enviar">
</form>

</body>
</html>

 

na tela aparece um input text e um input file. A idéia é adicionar o nome do cliente e anexar um arquivo referente ao cliente. caso sejam vários clientes através do javascript ele vai adicionando os campos com limite de 10.

porém quando mando para outra tela que seria para cadastrar ele apenas me traz o que foi anexo.

Segue como ele carrega:

array
'arq1' => string '[TOTVS] - Guia_instalacao_Protheus11.pdf' (length=40)
'arq2' => string '[totvs] - instalando com (sql).pdf' (length=34)
'arq3' => string '' (length=0)
'arq4' => string '' (length=0)
'arq5' => string '' (length=0)
'arq6' => string '' (length=0)
'arq7' => string '' (length=0)
'arq8' => string '' (length=0)
'arq9' => string '' (length=0)
'arq10' => string '' (length=0)
'hidden1' => string 'linha1,linha1,linha1,linha2' (length=27)
'hidden2' => string 'linha2,linha3,linha4,linha5,linha6,linha7,linha8,linha9,linha10' (length=63)

Ele não carrega o nome do cliente como eu preciso o que preciso alterar para corrigir isso?

Att

Share this post


Link to post
Share on other sites

Depois de quebrar a cabeça fiz da seguinte forma. Falta testar agora para gravar no BD

O resultado é este:

array
'cliente' =>
array
0 => string 'cliente1' (length=8)
1 => string 'cliente2' (length=8)
2 => string 'cliente3' (length=8)
'procuracao' =>
array
0 => string '[TOTVS] - Guia_instalacao_Protheus11.pdf' (length=40)
1 => string '[totvs] - instalando com (sql).pdf' (length=34)
2 => string 'ADVPL - O Manual.pdf' (length=20)

<html>  
<head>  
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>  
<script type="text/javascript">  
$(document).ready(function(){ 
    var input ='<div class="col-xs-10"><tr><td><label>CNPJ:<input type="text" name="cliente[]" /></label></td><td><label>PROCURAÇÃO:<input type="file" name="procuracao[]"/></label></td><td><label><a href="#" class="remove"><img src="imagens/flagvermelho.png" width="23" height="23" border="0"></a></label> </td></tr></div>';  
    $("input[name='add']").click(function( e ){  
        $('#inputs_adicionais').append( input );  
    });  
 
    $('#inputs_adicionais').delegate('a','click',function( e ){  
        e.preventDefault();  
        $(this).closest("div.col-xs-10").remove();  
    });  
 
});  
</script>  
</head>  
<body>  
    <form name="form1" action="teste.php" method="post">
        <label style="display: block">
          <input type="button" value="Adicionar Cliente" name="add" onclick="AddCampos()">
           </label>  
           <label style="display: block">
        <fieldset id="inputs_adicionais" style="border: #FF0004">  
        </fieldset> </label>  
        <input type="submit" value="ENVIAR">
    </form> 
</body>  
</html>
 

Share this post


Link to post
Share on other sites

Galera como eu salvo arquivos que vem de um array no banco e salvo os arquivos em uma pasta específica.

Eu costumo utilizar este método porém não está salvando.


<?php 
    $nome     = $_POST['cliente'];
    $procuracao = $_POST['procuracao'];
    $total    = count($nome);

    for($i = 0; $i < $total; $i++){
 
       
$pasta_cliente = trim($nome[$i]);
$pasta_cliente = preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT',$pasta_cliente));
$pasta_cliente = preg_replace("/'\s/" , " " , $pasta_cliente); 
mkdir('../../../desp_proc/'.$pasta_cliente.'/');
$diretorio = "../../../desp_proc/$pasta_cliente/";

if (!empty($_FILES)) {
	
	
	$tempFile = $_FILES['procuracao']['tmp_name'];
//Pega as Variaveis	
    $nome_arquivo = $_FILES['procuracao']['name'];
	
//Junta todas as variaveis	
    $completo = $nome_arquivo;

//Pega a Extensão Original	
    $path_parts = pathinfo($nome_arquivo);

//Converte para MD5
	$nome_arquivo_md5 = $nome_arquivo;
	$nome_arquivo_md5 = preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT',$nome_arquivo_md5));
//Agora vai juntar nome em md5 com a extensão
	$ext = pathinfo($nome_arquivo, PATHINFO_EXTENSION);
	if($ext!=TRUE){
		
		}
		else {
    $nome_final =$nome_arquivo_md5.".".$ext;
	$targetFile1 =  str_replace('//','/',$diretorio) . $nome_final;
		
 //move_uploaded_file($tempFile,$pasta_dir);
move_uploaded_file($tempFile,$targetFile1);

}		
		
	echo 	$targetFile1;


    }
	printf("cliente : %s <br />", $nome[$i]);
        printf("procuracao : %s <br />", $procuracao[$i]);
         
	header("Content-Type: text/html; charset=ISO-8859-1");
$servidor = 'localhost';
$banco	  = 'test';
$usuario  = 'root';
$senha    = '';
$link     = mysql_connect($servidor, $usuario, $senha);
$db		  = mysql_select_db($banco,$link);
if(!$link)
{
	echo "erro ao conectar ao banco de dados!";exit();
}

mysql_query("INSERT INTO teste(nome_eleitor, login) VALUES ('$nome[$i]','$procuracao[$i]')");
		
	}
?>

Se puderem me ajudar

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
Sign in to follow this  

  • Similar Content

    • By duarte.php
      Boa noite, pessoal, estou fazendo meu tcc (nível técnico kkk) e preciso de ajuda com uma conexão com o banco.
       
      Fiz um formulário para consultar empréstimos em uma biblioteca através do rm (id) e exibir os dados que estão cadastrados neste rm. 
      Estou com dificuldades para que os dados sejam puxados e exibidos na página. 
       
      Esta é a parte que pede o RM no html
      <h4 class="title">Insira o seu RM: </h4> <input type="text" name="rm" class="form-control" required/>  
      Este é o código php
      <?php $rm = $_POST['rm']; include("conecta.php"); $busca = mysql_query("SELECT * FROM tb_locador WHERE rm='$rm'"); $dado = mysql_fetch_array($busca); $nome = $dado['nome']; $ano = $dado['ano']; $curso = $dado['curso']; $tel = $dado['tel']; echo "RM: " . $rm . "<br>"; echo "Nome do locador: ".$nome. "<br>"; echo "Curso do locador: ".$curso. "<br>"; echo "Ano de início do curso: ".$ano. "<br>"; echo "Telefone do locador: ".$tel. "<br>"; ?> Até então, o único dado exibido é o RM, como faço para exibir o nome, curso, ano e telefone? 
       
    • By ROGERIO AMERICA
      Boa tarde. Possuo 1 bd com tabela principal empresa=(não editável), atendente=(não editável), consultor=(não editável), operadoras=(não editável), e a "agenda" que é editável. Criei uma página www onde eu mostraria os dados empresa juntamente com campos "agenda" para trabalhar com as informações disponíveis e coletadas para gerar dados na agenda. Gostaria que pudessem me ajudar ou indicar uma forma onde eu possa unir todos dados envolvidos nessa agenda conforme figuras.
      O código abaixo mostra os dados do cliente:
      <form> <input type="text" size="5" name="id_empresa" value="<?php echo $empresa['id_empresa']; ?>"><br></br> <input type="text" size="12" name="cnpj" value="<?php echo $empresa['cnpj']; ?>"> <input type="text" size="53" name="empresa" value="<?php echo $empresa['empresa']; ?>"><br></br> <input type="text" size="33" name="endereço" value="<?php echo $empresa['endereço']; ?>"> <input type="text" size="3" name="nº" value="<?php echo $empresa['nº']; ?>"> <input type="text" size="24" name="complemento" value="<?php echo $empresa['complemento']; ?>"><br></br> <input type="text" size="23" name="bairro" value="<?php echo $empresa['bairro']; ?>"> <input type="text" size="22" name="cidade" value="<?php echo $empresa['cidade']; ?>"> <input type="text" size="3" name="uf" value="<?php echo $empresa['uf']; ?>"> <input type="text" size="7" name="cep" value="<?php echo $empresa['cep']; ?>"><br></br> <input type="text" size="35" name="admin" value="<?php echo $empresa['contato']; ?>"> <input type="text" size="11" name="fone1 " value="<?php echo $empresa['fone1']; ?>"> <input type="text" size="11" name="fone2" value="<?php echo $empresa['fone2']; ?>"><br></br> <input type="text" size="40" name="email" value="<?php echo $empresa['email']; ?>"> <input type="text" size="3" name="linhas ativas" value="<?php echo $empresa['linhas ativas']; ?>"> <input type="text" size="8" name="vencimento" value="<?php echo $empresa['vencimento']; ?>"> </form> O código abaixo mostra os campos editáveis:
      $tem plano = $_POST["tem plano"]; $qtde de linhas = $_POST["qtde de linhas"]; $fatura media = $_POST["fatura media"]; $visita = $_POST["visita"]; $data = $_POST["data"]; $hora = $_POST["hora"]; $tipo de visita = $_POST["tipo de visita"]; $resenha = $_POST["resenha"];
           
          $string_sql = "INSERT INTO agenda (plano,qtde de linhas,fatura media,visita,data, hora,tipo de visita, resenha ) VALUES (null,'$plano','$qtde de linhas','$fatura','$visita','$data','$hora','$tipo de visita','$resenha')"; //String com consulta SQL da inserção
           
          mysql_query($string_sql,$conexao); //Realiza a consulta
           
       
      if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha echo "<p>Cadastro feito com sucesso</p>"; echo '<a href="empresa.php">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro } else { echo "Erro, não possível inserir no banco de dados"; } mysql_close($conexao); //fecha conexão com banco de dados ?> abaixo temos a premissa de funcionamento: 
       

      e abaixo temos a suposta tela de trabalho:"ainda esta sem CSS" 

      Como fazer para o form alimentar a tabela agenda sendo que 1 parte dos dados é só para visualização e a outra é editável e ao salvar, ir para próxima empresa? Obs: Estou querendo implementar isso pois descobri que a empresa de CRM que eu pagava estava vendendo Mailing para concorrentes. (era pago)
       
    • By oomaikoo
      Boa noite pessoal, estou tentando fazer um código, para mostrar um banner em meu site, quando o usuário entrar, baseado na localização dele. É basicamente o seguinte: a API de geolocalização retorna o nome da cidade, e, se for a cidade, então mostre o banner. Se não for, mostre outro. O código JavaScript que estou usando é esse:
      <script type="application/javascript"> function geoip(json){ var city = document.getElementById("user_city"); city.textContent = json.city; } </script> <script async src="https://get.geojs.io/v1/ip/geo.js"></script> A cidade é: <span id="user_city"></span>

      Esse código retorna o nome da cidade no <span id>.

      Porém eu preciso fazer um IF, ELSE no próprio JavaScript, para mostrar o banner ou não. Seria basicamente assim:
      <script type="application/javascript"> function geoip(json){ var city = document.getElementById("user_city"); city.textContent = json.city; } if (city == "nomedacidade") { document.write ("<img src='banner1.jpg'></img>"); } else { document.write ("<img src='banner2.jpg'></img>"); } </script> <script async src="https://get.geojs.io/v1/ip/geo.js"></script>

      O problema é que a variável city não fica setada dentro do if, não retorna o nome da cidade, eu só queria comparar no if o nome da cidade com o que a API retorna.
      Alguém tem alguma ideia?
    • By Marxrj
      Galera, tenho um carrossel no meu arquivo, porém queria que elas mudassem aleatóriamente a cada refresh na página, pois ela s´fica pela ordem normal.
      <div> <div> <div class="loop owl-carousel owl-theme"> <div> <img src="imagens/jpeg.01"> </div> <div> <img src="imagens/jpeg.02"> </div> <div> <img src="imagens/jpeg.03"> </div> <div> <img src="imagens/jpeg.01"> </div> <div> <img src="imagens/jpeg.05"> </div> <div> <img src="imagens/jpeg.07"> </div> <div> <img src="imagens/jpeg.07"> </div> </div>  
    • By FabianoSouza
      Eu uso um form multipart para poder enviar dados e arquivo junto.
      Para manipular o arquivo (imagem) uso um script para fazer upload sem uso de componentes. Tudo funciona.
      Só ocorre erro quando tento recuperar valores de checkbox e radio se não estiverem marcados.
       
      Queria saber se alguém pode ter ideia  onde possa estar o problema.
       
       
      Para recuperar o valor dos campos uso dessa forma:
       
      Dim byteCount byteCount = Request.TotalBytes RequestBin = Request.BinaryRead(byteCount) Set UploadRequest = CreateObject("Scripting.Dictionary") BuildUploadRequest RequestBin 'Aqui recupero os valores do form nome = UploadRequest.Item("nome").Item("Value") dataNascimento = UploadRequest.Item("dataNascimento").Item("Value") 'Aqui ocorre erro se o checkbox do form não estiver marcado favorito = UploadRequest.Item("favorito").Item("Value")  
      A "biblioteca" que faz o upload é essa (eu uso como um include):
       
      <% ' Upload Sem componentes --------------------------------------- Sub BuildUploadRequest(RequestBin) on error resume next PosBeg = 1 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg) BoundaryPos = InStrB(1, RequestBin, boundary) Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--"))) Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") Pos = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition")) Pos = InStrB(Pos, RequestBin, getByteString("name=")) PosBeg = Pos + 6 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) Name = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) PosFile = InStrB(BoundaryPos, RequestBin, getByteString("filename=")) PosBound = InStrB(PosEnd, RequestBin, boundary) If PosFile <> 0 And (PosFile < PosBound) Then PosBeg = PosFile + 10 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "FileName", FileName Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:")) PosBeg = Pos + 14 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13))) ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) UploadControl.Add "ContentType", ContentType PosBeg = PosEnd + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg) Else Pos = InStrB(Pos, RequestBin, getByteString(Chr(13))) PosBeg = Pos + 4 PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2 Value = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) End If UploadControl.Add "Value", Value UploadRequest.Add Name, UploadControl BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary) Loop End Sub Function getByteString(StringStr) For i = 1 To Len(StringStr) Char = Mid(StringStr, i, 1) getByteString = getByteString & ChrB(AscB(Char)) Next End Function Function getString(StringBin) getString = "" For intCount = 1 To LenB(StringBin) getString = getString & Chr(AscB(MidB(StringBin, intCount, 1))) Next End Function Server.ScriptTimeout=900 ' Fim upload sem Componentes ----------------------------------------- %>  
       
×

Important Information

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