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 Alvaro Pacífico Serpa
      Olá pessoal, eu estava copiando um trecho de um código fonte usando o file_gets_contents
      $log=file_get_contents($url); $trechoInicial = "VideoUrl('"; $trechoFinal = "')"; $posicao1 = strpos($log, $trechoInicial); $posicao2 = strpos( $log, $trechoFinal, $posicao1 ); $trechoCopiado = substr( $log, $posicao1 + strlen( $trechoInicial ), $posicao2 - $posicao1 - strlen( $trechoInicial ) ); echo $trechoCopiado; Estava funcionando perfeitamente e do nada parou de funcionar, tem alguma outra forma de fazer isto que estou fazendo?
    • By WitchMad
      Ooi gente!
      Seguinte, estou desenvolvendo uma plataforma para advogados. Nela será consultado processos a partir do web service do PJE.
      No site do PJE me recomendou utilizar o NuSoap para consultar o web service e foi o que eu fiz.
      Segue o código da consulta
      <?php require_once 'nusoap/lib/nusoap.php'; /* Parâmetros Requisitados */ // idConsultante // senhaConsultante // numeroProcesso /* Objetos de Resposta sucesso bollean Indica se houve sucesso na consulta do processo. mensagem string Mensagem informando que o processo foi consultado com sucesso. recibo xs:base64Binary Comprovante do protocolo do processo, que contém os dados básicos do processo. */ $wsdl = "https://www.tjpe.jus.br/pje/intercomunicacao?wsdl"; $client = new nusoap_client($wsdl, 'wsdl'); if($client->getError()){ echo "Erro no construtor" . $client->getError(); exit(); } $result = $client->call('consultarProcesso', array('idConsultante'=>'CPF do Consultante', 'senhaConsultante'=>'Senha do Consultante', 'numeroProcesso'=>'Número do Processo')); echo $result['sucesso']; ?> Acontece que a página fica em branco, sem nenhum tipo de mensagem.
      Se possível gostaria de dicas se há algum erro no código, ou alguma outra ferramenta para consultar web service
    • By Leonardo Ortega
      Prezados, bom dia.
      sou novo por aqui, e me deparei com esta situação:
      estou desenvolvendo um projeto e tudo começou quando apenas mudei o banco de dados que estava conectado. Ou seja, se eu me conecto ao baco de dados anterior, volta todo código html, porém, se conecto ao banco de dados atual as divs desaparecem. 
       
      obs: Isso tb acontece quando eu desativo o php tudo volta como a imagem 1 e se eu ativo fica como a imagem2.
       
      quem pode me ajudar.. desde já muito obrigado.  


    • By Richard.Ribeiro
      Fala Pessoal.. Bom dia.. uma ajuda por favor.
      não sei se e a melhor opção mais, gostaria de criar um id sequencial id="material"
      para resolver seguinte problema.. com javascript eu crio select com dados selecionados anteriormente, e crio mais opção no caso de haver mais pedido, porém toda vez que preciso troca a categoria o PRIMEIRO selecte que já possui um item e resetado. como posso resolver isso O PRIMIEIRO SELECT NÃO MUDAR. uma vez que á possui value selected
       
      segue todo código:

        <div id="box" >
        <form id="cadastro"  method="post">
          <?php
            if(isset($_POST['acao'])){
              $ide = $_POST['ide'];
              $data = $_POST['data_pedido'];
              $username=$_SESSION['username'];
              $justificativa = $_POST['justificativa'];
              $id_tipo_material = $_POST['material'];
              $qnt_solicitada = $_POST['qnt_solicitada'];

              //cadastrar no banco de dados!
                  $gravar = new Painel();
                  $id_gsm = $gravar->cadastrarGsm($data,$username,$justificativa,$ide);
                  $gravar->cadastrarItem($id_gsm,$id_tipo_material,$qnt_solicitada);
                  Painel::alert('sucesso','Pedido realizado com sucesso!');
                  }
                  $ConsultaIde = ConexaoBD::conectar()->prepare("SELECT  vsat_gilat, 'IDE: '||vsat_gilat|| ', Situação:'|| situacao|| ', Localidade:'||localidade|| ', Logradouro: '||logradouro as local
        FROM vsat WHERE vsat_gilat != '' AND situacao = 'Ativo'");
                  $ConsultaIde->execute();
                  $ConsultaIde = $ConsultaIde->fetchAll();
        ?>
        <div >
        <div class="form-group">
              <label>Selecione uma IDE</label>
              <select class="ide" name="ide" id="ide" required>
                <option disabled selected>-- Selecione IDE --  </option>
                  <?php
                  foreach ($ConsultaIde as $key => $value) {
                    ?>
                    <option value="<?php echo $value['vsat_gilat'];?>">
                      <?php echo $value['local'];?>

                </option>
              <?php }?>
              </select>

              <label>Data da Solicitação do Material :</label>
              <input type="text"value="<?php   echo date('d/m/Y');    ?>"  name="data_pedido" readonly >
        </div><!--form-group-->
            <div class="form-group">
              <label>Justificativa do pedido:</label>
              <textarea  rows="8" cols="80" name="justificativa" required></textarea>
        </div><!--form-group-->

        <div class="form-group">
              <label>Selecione Sistema:</label>
              <select name="id_categoria" id="id_categoria">
              <option selected disabled> --- Selecione o Sistema ---</option>
            <?php
        $consulta= ConexaoBD::conectar()->prepare("SELECT id_sistema, descricaos FROM public.cadastrar_sistema");
        $consulta->execute();
        while($row_cat_post = $consulta->fetch(PDO::FETCH_ASSOC) ) {
        echo '<option value="'.$row_cat_post['id_sistema'].'">'.$row_cat_post['descricaos'].'</option>';
              }
        ?>
          </select>
        </div><!--form-group-->
        <div class="form-group">
          <label>Selecione Padrão:</label>
          <span class="carregando">Aguarde, carregando...</span>
          <select name="id_sub_categoria" id="id_sub_categoria" >
            <option value="">--- Selecione o Padrão ---</option>
          </select>
        </div><!--form-group-select-->

        </div>
        <div class="pedido">
          <div class="remover">
          <label>Selecione Material:</label>
          <span class="carregando">Aguarde, carregando...</span>
          <select name="material[]" id="material">
            <option value="">--- Selecionte o Material ---</option>
          </select>
          <input type="text" id="quantidade" name="qnt_solicitada[]" placeholder="Digite a Quantidade" >
      <button type="button" name="button" class="removedor">Remover Item</button>
      </div>
      </div>
      </div>
        <button type="button" name="button" class="clonador">Novo Item</button>
        <input type="submit" name="acao" value="Cadastrar!">
        </form>
       
       
       
       
       
       
       
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
                <script type="text/javascript">
                  google.load("jquery", "1.4.2");
                </script>
      <script  src="<?php echo INCLUDE_PATH_PAINEL ?>js/jquery-3.4.1.min.js"></script>
      <script type="text/javascript">
        $(function(){
          $('#id_categoria').change(function(){
            if( $(this).val() ) {
              $('#id_sub_categoria').hide();
              $('.carregando').show();
              $.get('sub_categorias_post?search=',{id_categoria: $(this).val(), ajax: 'true'}, function(j){
                html = $.parseHTML(j);
                j=JSON.parse(html[16].textContent.trim());
                var options = '<option value="">Escolha Subcategoria</option>';
                for (var i = 0; i < j.length; i++) {
                  options += '<option value="' + j.id + '">' + j.nome_sub_categoria + '</option>';
                }
                $('#id_sub_categoria').html(options).show();
                $('.carregando').hide();
              });
            } else {
              $('#id_sub_categoria').html('<option value="">– Escolha Subcategoria –</option>');
            }
          });
        });
        $(function(){
          $('#id_sub_categoria').change(function(){
            if( $(this).val() ) {
              $('#material').hide();
              $('.carregando').show();
              $.get('sub_categorias_post2?search=',{id_sub_categoria: $(this).val(), ajax: 'true'}, function(j){
                html = $.parseHTML(j);
                console.log(html);
                j=JSON.parse(html[16].textContent.trim());
                var options = '<option value="">Escolha Subcategoria</option>';
                for (var i = 0; i < j.length; i++) {
                  options += '<option value="' + j.id + '">' + j.nome_sub_categoria + '</option>';
                }
                $('#material').html(options).show();
                $('.carregando').hide();
              });
            } else {
              $('#id_sub_categoria2').html('<option value="">– Escolha Subcategoria –</option>');
            }
          });
        });
        </script>
        <script>
        $(document).ready(function(){
       
              $(document).on('click', '.clonador', function(e){
                var elm_html = $('.pedido').html();
                var counter = 0;  //faz uma cópia dos elementos a serem clonados.
                  e.preventDefault();
                  var elementos = elm_html.replace(/\[[0\]]\]/g, '['+ counter +']');  //substitui o valor dos index e incrementa++
                  counter++;
                  $('#cadastro').append(elementos);  //exibe o clone.
              });
          });

          $(document).on('click', '.removedor', function (event) {
            event.preventDefault();
            $(this).parents('.remover').remove(); // navega até o pai com a classe pedido e remove ele inteiro
          });
        </script>
       
        <?php
        die();
        ?>
      </div><!--box-content-->
    • By djwagnersp
      Bom dia amigos, tudo bem? estou com uma duvida se alguém puder me ajudar agradeço desde já.
       
      tenha a seguinte condição:
      //array dos produtos $prod = 'agua'; $prod = 'refri'; $prod = 'cerveja'; //array das quantidades $qtd = '3'; $qtd = '2'; $qtd = '6'; Gostaria de fazer um loop o for ou foreach que imprimisse o $prod a quantidade de vezes do $qtd
      como seria possível realizar isso?
×

Important Information

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