Jump to content

Recommended Posts

Bom dia pessoal, tenho um formulário que contém 5 exames a serem cadastrados em bancos de dados diferentes. Porém na aba "outros" fiz um campo dinâmico caso a pessoa realize outros exames que não são mostrados no formulário. Segue a parte do código:

exames.php

 A parte à baixo está dentro do formulário <form id="FormExamesAnimal" method="POST">
<div id="form_outros">
				<script type="text/javascript">
					var qtdeCampos = 0;

					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 = "<div id='form_outro'><fieldset class='scheduler-border'><legend class='scheduler-border'>Exame outro:</legend><div class='col-md-6'><label>Data de Envio do Material:</label><input type='text' class='form-control campos' id='data_mat_outro"+qtdeCampos+"' name='data_mat_outro[]'></div><div class='col-md-6'><label>Data do Resultado:</label><input type='text' class='form-control campos' id='data_result_outro"+qtdeCampos+"' name='data_result_outro[]'></div><div class='col-md-6'><label>Resultado:</label><input type='text' class='form-control campos' id='result_outro"+qtdeCampos+"' name='result_outro[]'></div><div class='col-md-6'> <label>Destino Animal:</label><input type='text' class='form-control campos' id='dest_outro"+qtdeCampos+"' name='dest_outro[]'></div><div class='col-md-12'><label>Observação:</label><textarea class='form-control' rows='4' id='obs_outro"+qtdeCampos+"' name='obs_outro[]' placeholder='Insira um Comentário se necessário'></textarea></div></fieldset></div><input type='button' onClick='removerCampo("+qtdeCampos+")' value='Apagar campo'>";
						qtdeCampos++;	
					}

					function removerCampo(id) {
						var objPai = document.getElementById("campoPai");
						var objFilho = document.getElementById("filho"+id);

						//Removendo o DIV com id específico do nó-pai:
						var removido = objPai.removeChild(objFilho);
					}
				</script>

				<fieldset class="scheduler-border">

					<legend class="scheduler-border">Exame outro:</legend>

					<div class="col-md-6">
						<label>Data de Envio do Material:</label>
						<input type="text" class="form-control campos" id="data_mat_outro" name="data_mat_outro">
					</div>

					<div class="col-md-6">
						<label>Data do Resultado:</label>
						<input type="text" class="form-control campos" id="data_result_outro" name="data_result_outro">
					</div>

					<div class="col-md-6">        
						<label>Resultado:</label>
						<input type="text" class="form-control campos" id="result_outro" name="result_outro">
					</div>

					<div class="col-md-6">        
						<label>Destino Animal:</label>
						<input type="text" class="form-control campos" id="dest_outro" name="dest_outro">
					</div>

					<div class="col-md-12">        
						<label>Observação:</label>
						<textarea class="form-control" rows="4" id="obs_outro" name="obs_outro" placeholder="Insira um Comentário se necessário"></textarea>
					</div>

				</fieldset>
				
				<div id="campoPai"></div>
				<input type="button" value="Adicionar campos" onclick="addCampos()">

				</div>

			<!--FIM OUTROS EXAMES-->
		
		</div>

<script>
  /*Filtro com o formato de data*/
  $('#data_mat_outro, #data_result_outro').datepicker({
			format: "dd/mm/yyyy",
			language: "pt-BR",
			autoclose: true

		});
  /*Valida e cadastra os exames*/
  $("#FormExamesAnimal").validate({


			rules: 
			{
				data_mat_outro: {
					required: true
				},
              data_mat_outro: {
					required: true
				},
              result_outro: {
					required: true
				}
				
			},

			messages: 
			{
				data_mat_outro: "Informe a data de envio do material",
                data_result_outro: "Informe a data do resultado",
                result_outro: "Informe o resultado"
			},

			tooltip_options: 
			{
				data_mat_outro: {
					placement:'bottom',
					trigger:'focus'
				},
              data_result_outro: {
					placement:'bottom',
					trigger:'focus'
				},
              result_outro: {
					placement:'bottom',
					trigger:'focus'
				}
			},

			/*Grava os itens no banco*/
			submitHandler: function () {
				
				$.ajax({

					url:"exames/cadastrar_exames.php",
					type:"POST",
					data:$("#FormExamesAnimal").serialize(),
					dataType:'json',

					beforeSend: function() {
						$('#gravar').prop("disabled" , true);

					},
					complete: function() {
						$(':input','#FormExamesAnimal')
						.not(':button, :submit, :reset, :hidden')
						.val('')
						.removeAttr('checked')
						.removeAttr('selected');
						mudar_pagina('animais/relatorio.php','#relatorio_paginacao');
						CriarToast('Exames cadastrados com sucesso.');
						$('#gravar').prop("disabled" , false);

					},

					success:function(resposta) {                  

					}

				});/*ajax*/

				return false;

			}/*submitHandler*/


		}); /*validate*/               

	});/*document redy function*/

</script>

Minha dúvida é como eu faço para inserir essa parte no banco de dados, tentei colocar um "for" mas estava salvando somente a última opção cadastrada e as outras maneiras que encontrei pela internet nem funcionaram :/

cadastrar_exames.php

include "../../banco_animais/conecta.php";
/*Outros*/

$data_mat_outro = strip_tags($_POST['data_mat_outro']);
$data_result_outro = strip_tags($_POST['data_result_outro']);
$result_outro = strip_tags($_POST['result_outro']);
$dest_outro = strip_tags($_POST['dest_outro']);
$obs_outro = strip_tags($_POST['obs_outro']);

//caso não tenha sido inserido nenhum valor, salva como não cadastrado.
if($data_mat_outro==null && $data_result_outro==null &&  $result_outro==null && $dest_outro==null && $obs_outro==null){

$data_mat_outro = 'nao cadastrado';
$data_result_outro = 'nao cadastrado';
$result_outro = 'nao cadastrado';
$dest_outro = 'nao cadastrado';
$obs_outro = 'nao cadastrado';
$realiza_outro = 'nao';
} 

/*Salva no banco*/
$sql_outros="INSERT INTO exame_outros (realiza_outro, data_mat_outro, data_result_outro, result_outro, dest_outro, obs_outro, outro_cod,  data_proc) VALUES ('$realiza_outro', '$data_mat_outro', '$data_result_outro', '$result_outro', '$dest_outro', '$obs_outro', '$outro_cod', CURDATE())";

/*realiza_outro salva se o exame foi realizado ou não e é exibido em uma tabela depois, outro_cod serve para fazer referência ao animal escolhido para realizar os exames e data_proc salva a data atual que foi feito o cadastro do exame*/

 

Share this post


Link to post
Share on other sites

Olá!
Segue sugestão:

 

<?php
  // se algo foi postado
  if (sizeof($_POST)) {
    // percorre os dados postados
    foreach ($_POST as $field => $values) {
      // para cada valor
      foreach ($values as $index => $val) {
        // começa a montar os dados para queries de inserção/update
        // se não tiver valor em $val, será considerado: Não cadastrado
        $dataQueries[$index][] = '`' . $field . '`' . '="' . ($val ? $val : 'Não cadastrado') . '"';
      }
    }

    // para cada dado pré-montado($dataQuery)
    $queries = array_map(function ($dataQuery) {
      // monta uma query
      // implode cada field=value, usando vírgula como glue
      return 'insert into sua-tabela-sql set ' . implode(', ', $dataQuery);
    }, $dataQueries);

    // mostra as queries montadas na tela:
    echo '<pre>';
    print_r($queries);
    echo '</pre>';
  }
?>
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>FORMS</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>


<form id='FormExamesAnimal' method="post">
  <div id="form_outros">

    <fieldset class="scheduler-border fieldset-template">

      <legend class="scheduler-border">Exame outro:</legend>

      <div class="col-md-6">
        <label>Data de Envio do Material:</label>
        <input type="text" class="form-control campos" id="data_mat_outro" name="data_mat_outro[]">
      </div>

      <div class="col-md-6">
        <label>Data do Resultado:</label>
        <input type="text" class="form-control campos" id="data_result_outro" name="data_result_outro[]">
      </div>

      <div class="col-md-6">
        <label>Resultado:</label>
        <input type="text" class="form-control campos" id="result_outro" name="result_outro[]">
      </div>

      <div class="col-md-6">
        <label>Destino Animal:</label>
        <input type="text" class="form-control campos" id="dest_outro" name="dest_outro[]">
      </div>

      <div class="col-md-12">
        <label>Observação:</label>
        <textarea class="form-control" rows="4" id="obs_outro" name="obs_outro[]" placeholder="Insira um Comentário se necessário"></textarea>
      </div>

    </fieldset>

    <div id="campoPai"></div>
    <input type="button" value="Adicionar campos" id="addFieldset" class="btn btn-light">

  </div>
  <div class="col-12">
    <input type="submit" value="salvar" class="btn btn-primary">
  </div>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script type="text/javascript">

    // assim que o documento estiver carregado
    $(document).ready(function () {

        // define o fieldset.fieldset-template como template
        var template = $('fieldset.fieldset-template');

        //
        // quando clicar no botão para adicionar campos
        //
        $('input#addFieldset').on('click', function () {
            // clona o template
            var cloned = template.clone();

            // adiciona o botão para remover o template clonado
            cloned.append($("<div class='col-12 text-right'><input type='button' value='Apagar campo' class='btn btn-danger remove-fieldset'></div>"))

            // adiciona o template clonado dentro da div#campoPai
            $('div#campoPai').append(cloned);
        });

        //
        // quando clicar no botão de remover template
        //
        $('form#FormExamesAnimal').on('click', 'input.remove-fieldset', function () {
            // remove o fieldset mais próximo
            $(this).closest('fieldset').remove();
        })


    });
</script>
</body>
</html>

 

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 _danf
      Senhores, boa noite!
      Possuo um cadastro em php é SQL Server.
      queria adicionar uma função, que ao selecionar um item do select fizesse um insert numa tabela especifica do DB
      Exemplo:
      <select id="select-faction"> <option value="opt">Escolha sua facção</option> <option value="1">Aliança da Luz (Light)</option> <option value="0">União da Fúria (Dark)</option> </select> Database GameData > Table UserMaxGrow > 
      Campos:
      RowID, ServerID, UserUID, Conntry (0 Luz, 1 Furia), MaxGrow (3), Del (false)
      Ao criar a conta, ele teria que inserir Por padrão:
       
       
      Exemplo:
      na imagem abaixo desde ja agradeço.

       
      Cadastro.php
      <?php require_once('db.config.php'); $user_ip = $_SERVER['REMOTE_ADDR']; $username = isset($_POST['username']) ? trim($_POST['username']) : ''; $password = isset($_POST['password']) ? trim($_POST['password']) : ''; $password2 = isset($_POST['password2']) ? trim($_POST['password2']) : ''; $email = isset($_POST['email']) ? trim($_POST['email']) : ''; $errors = array(); $success = false; // Processar os dados POST. if(isset($_POST) && !empty($_POST)){ // VALIDAR LOGIN if(empty($username)){ $errors[] = '<center><font color="#970808">E necessário um login*</font>'; }else if(strlen($username) < 3 || strlen($username) > 16){ $errors[] = '<center><font color="#970808">Seu login deve ter entre 3 e 16 caracteres.</font>'; }else if(ctype_alnum($username) === false){ $errors[] = '<center><font color="#970808">Seu login deve consistir de números e letras apenas.</font>'; }else{ // VERIFICA SE O LOGIN JÁ EXISTE. $sql = "SELECT UserID FROM PS_UserData.dbo.Users_Master WHERE UserID = ?"; $stmt = odbc_prepare($GLOBALS['dbConn'],$sql); $args = array($username); if(!odbc_execute($stmt,$args)){ $errors[] = '<center><font color="#970808">Não foi possível determinar se esse usuário já existe no banco de dados.</font>'; }elseif($row = odbc_fetch_array($stmt)){ $errors[] = '<center><font color="#970808">Login já existente, utilize outro.</font>'; } } // VALIDAR SENHA if(empty($password)){ $errors[] = '<center><font color="#A52A2A">Informe uma senha.</font>'; }else if(strlen($password) < 3 || strlen($password) > 16){ $errors[] = '<center><font color="#970808">A senha deve ter entre 3 e 16 caracteres.</font>'; }else if($password != $password2){ $errors[] = '<center><font color="#970808">As senhas não coincidem.</font>'; } // E-MAIL COM VALIDAÇÃO "O USUÁRIO NÃO PODE CRIAR UMA CONTA COM O MESMO E-MAIL". if(isset($_POST) && !empty($_POST)){ if(empty($email)){ $errors[] = '<center><font color="#970808">Informe um e-mail.</font>'; }else if(strlen($email) < 5 || strlen($email) > 30){ $errors[] = '<center><font color="#970808">O E-mail deve ter entre 5 e 30 caracteres de comprimento.</font>'; }else{ // VERIFICA SE O E-MAIL JÁ EXITE. $sql = "SELECT email FROM PS_UserData.dbo.Users_Master WHERE email = ?"; $stmt = odbc_prepare($GLOBALS['dbConn'],$sql); $args = array($email); if(!odbc_execute($stmt,$args)){ $errors[] = '<center><font color="#970808">Falha ao determinar se esse E-amil já existe no banco de dados.</font>'; }elseif($row = odbc_fetch_array($stmt)){ $errors[] = '<center><font color="#970808">O E-mail já foi usado. Escolha outro E-mail.</font>'; } } } // Persiste a nova conta no banco de dados se não ocorrerem erros anteriores. if(count($errors) == 0){ $sql = "INSERT INTO PS_UserData.dbo.Users_Master (UserID,Pw,JoinDate,Admin,AdminLevel,UseQueue,Status,Leave,LeaveDate,UserType,Point,EnPassword,UserIp,email) VALUES (?,?,GETDATE(),0,0,0,0,0,GETDATE(),'N',0,'',?,?)"; $stmt = odbc_prepare($GLOBALS['dbConn'],$sql); $args = array($username,$password,$user_ip,$email); if(odbc_execute($stmt,$args)){ $success = htmlentities("{$username}, seu cadastro foi finalizado com sucesso!"); }else{ // Isso significa que a instrução inserir provavelmente não é válida para seu banco de dados. Corrija a consulta ou corrija seu banco de dados, sua escolha;) $errors[] = '<center><font color="#970808">Problema ao tentar criar sua conta, tente novamente.</font>'; } } } // Determine which view to show. if($success === false){ require_once('cadastro.view.php'); }else{ require_once('success.view.php'); } ?>  
      cadastro.view.php
      <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="login.css"> <link rel="icon" href="https://img.icons8.com/officel/16/000000/code.png"> <link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Josefin+Sans&display=swap" rel="stylesheet"> <title>Vamos lá? </title> </head> <body><br> <?php if(count($errors)){ ?> <ul id="error"> <?php foreach($errors as $error){ ?> <li><?php echo $error; ?></li> <?php } ?> </ul> <?php } ?> <div class="form-register"> <form action="cadastro.php" method="POST"> <h1>Criar uma nova conta</h1> <br><br> <input value="<?php if(isset($_POST['username'])){ echo $_POST['username']; } ?>" type="text" title="Login" placeholder="Login*" name="username"> <br><br><br> <input value="<?php if(isset($_POST['password'])){ echo $_POST['password']; } ?>" type="password" title="Senha" placeholder="Senha" name="password"> <br><br><br> <input value="<?php if(isset($_POST['password2'])){ echo $_POST['password2']; } ?>" type="password" title="Confirmar senha" placeholder="Confirmar senha" name="password2"> <br><br><br> <input value="<?php if(isset($_POST['email'])){ echo $_POST['email']; } ?>" type="mail" title="E-mail" placeholder="Endereço de e-mail" name="email"> <label>Utilize um e-mail válido para confirmação</label> <br><br> <select id="select-faction"> <option value="opt">Escolha sua facção</option> <option value="0">Aliança da Luz (Light)</option> <option value="1">União da Fúria (Dark)</option> </select> <br><br> <button type="submit">Cadastrar</button> <br><br> <h2><a href="index.html"> Já possui um acesso?</a></h2> </form> </div> </body> </html>  
    • By fideles
      Pessoal, tudo bem?
       
      Tenho uma pagina onde as pessoas me enviam NF para faturamento.
       
      Me perguntaram, é possível que essa pagina funcione por exemplo, somente os 15 primeiros dias do mês e os últimos 15 dias, elas permaneça fechada ou direcione para outra pagina mostrando "Período de envio fechado" (exibir a mensagem é tranquilo).
       
      Alguém imagina algo? Não consegui, sendo sincero mesmo.
       
    • By asacap1000
      Salve Galera!!! estou com um projeto onde preciso disponibilizar na intranet documentos que estão em um servidor.
      Estes documentos estão salvos em diversas pastas dividido por dias meses e anos etc etc.
      Não quero que list todos os documentos porém ele seria pesquisado.
      Exemplo: NF 123456
      No arquivo salvaram assim "cliente NF 123456.pdf", tentei utilzar o glob porém ele não retorna nada nem deu erro.
      Por ser em outro servidor não seu se ele consegue ler já pesquisei mas não encontrei nada sobre isso.
       
      Saberiam me ajudar com este caso:
       
      Na intranet ele terá uma busca normal de relatórios ao listar essas informações ele diponibiliza um link com o numero da NF a qual eu chamaria essa página para realizar a busca no servidor e assim abrir o arquivo no navegador..
    • By k9studio
      Olá Pessoal,
       
      Tenho um campo em uma tabela que grava os dados neste formato a baixo:
      {""user_id":"1","user_token":"5181e24c8a7e60304156e08595f48ad6"}
       
      como faço para chamar esses dados no php separados...
       
      fico grato se alguém puder ajudar..
    • By Claudio Neto
      Boa noite
       
      Fiz meu primeiro projeto .Net Core, e está tudo funcionando que é uma belezinha.
       
      Porém, ao publicar a aplicação no IIS, não estou conseguindo conectar no banco de dados. As páginas que não possuem conexão funcionam.
       
      Quando publiquei, ele gerou três arquivos json de configuração: appsettings.json, appsettings.Development.json e appsettings.production.json, e dentro de cada um dele, tem a conexão que eu criei e ele inseriu mais uma:
       
      "ConnectionStrings": { "HoleriteContext": "Server=DESKTOP-DGCC9GF\\SQLEXPRESS;Database=HOLERITES;Trusted_Connection=True;MultipleActiveResultSets=true;user id=sa;pwd=123;", "prjHoleriteContextConnection": "Server=(localdb)\\mssqllocaldb;Database=prjHolerite;Trusted_Connection=True;MultipleActiveResultSets=true" } Eu tentei copiar a string de conexão de HoleritesContext para prjHoleriteContextConnection, mas não deu em nada.
       
      Meu banco já está configurado para aceitar conexões TCP. E o erro está dando tanto na minha máquina local quanto no servidor do cliente.
       
      Não consegui encontrar algum tutorial que fale sobre essa parte, então alguém pode me auxiliar onde estou errando?
       
      Obrigado.
       
×

Important Information

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