Ir para conteúdo

POWERED BY:

Arquivado

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

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

  • Conteúdo Similar

    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
×

Informação importante

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