Ir para conteúdo

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*/

 

Compartilhar este post


Link para o post
Compartilhar em outros 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>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.