Jump to content
Sign in to follow this  
eliezerborges

Inserir muitas informações no banco de dados com PHP

Recommended Posts

Boa Tarde Pessoal,

 

Estou começando a criar sistemas em PHP e kme surgiu uma dúvida em relação a inserção de dados no banco.

 

Em um formulário com poucos campos estou inserindo os dados no banco da seguinte forma:

INSERT INTO usuarios(nome, sobrenome, pais, estado, cidade, email, senha) VALUES('$nome', '$sobrenome', '$pais', '$estado', '$cidade', '$email', '$senha' )

 

Numa situação de um formulário que tenha muitas informações para serem enviadas ao banco, há alguma forma que agilize o processo, ao invés de ter que digitar cada variável dentro do INSERT INTO, ou é desta forma mesmo?

 

Obrigado,

 

E um abraço!

 

 

Share this post


Link to post
Share on other sites

É desse jeito, mesmo.

Se você estudar sobre ORM, verá que existem formas mais simples. Na verdade, interfaces que mapeiam os valores. Mas a implementação segue esse padrão que você postou.

 

O que dá pra fazer é inserir várias linhas com um único INSERT, se for aplicável no seu caso. Veja este tutorial

Share this post


Link to post
Share on other sites

Faça uma classe banco.class.php que tenha esse código:

abstract class banco{
		//propriedades
		public $servidor = localhost;
		public $usuario =  root;
		public $senha = '';
		public $nomebanco = NOME DO BANCO;
		public $conexao = null;		
		public $dataset =null;
		public $linhasafetadas = -1;
	
		//metodos	
		public function __construct(){
			$this->conecta();
		}//construtor
		 
		public function __destruct(){
			if($this->conexao != null):
				mysql_close($this->conexao);
			endif;
		}//destrutor
		public function conecta(){
			$this->conexao = mysql_connect($this->servidor,$this->usuario,$this->senha,true) 
			or die($this->trataErro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true));
			mysql_select_db($this->nomebanco) or die($this->trataErro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true));
			mysql_query("SET NAMES 'utf8'");
			mysql_query("SET character_set_connection=utf8");
			mysql_query("SET character_set_client=utf8");
			mysql_query("SET character_set_results=utf8");
			//echo "metedo conecta foi chamado";
		}//fecha conecta
		public function inserir($objeto){
			//insert into "nome da tabela" (campo1, campo2) values (valor1, valor2);
			$sql = "INSERT INTO ".$objeto->tabela." (";
			for($i=0;$i<count($objeto->camposValores); $i ++):
				$sql .= key($objeto->camposValores);
				if($i<(count($objeto->camposValores)-1)):
					$sql .= ", ";
				else:
					$sql .= ") ";
				endif;	
				next($objeto->camposValores);
			endfor;
			reset($objeto->camposValores);
			$sql .= "values (";
			for($i=0; $i<count($objeto->camposValores); $i++):
				$sql .= is_numeric($objeto->camposValores[key($objeto->camposValores)]) ? 
				$objeto->camposValores[key($objeto->camposValores)] :
				"'".$objeto->camposValores[key($objeto->camposValores)]."'";
				if($i < (count($objeto->camposValores)-1)):
					$sql .= ", ";
				else:
					$sql .= ") ";
				endif;	
				next($objeto->camposValores);
			endfor;		
			return $this->executaSQL($sql);
		}//inserir

mais um arquivo chamado base.class.php com o seguinte código:

abstract class Base extends  banco{
		//propriedades ou atributos
		public $tabela = "";
		public $camposValores = array();
		public $campoPk = null;
		public $valorPk = null;
		public $extrasSelect = "";
		//funções ou métodos
		public function addCampo($campo=null,$valor=null){
			if($campo!=null): $this->camposValores[$campo] = $valor;
			endif;			
		}//addCampo
		public function delCampo($campo =null){
			if(array_key_exists($campo, $this->camposValores)):
			unset($this->camposValores[$campo]);
			endif;
		}//delCampo
		public function setValor($campo=null, $valor=null){
			if($campo!=null && $valor != null): 
			$this->camposValores[$campo] = $valor;
			endif;
		}//setValor
		public function getValor($campo =null){
			if($campo != null && array_key_exists($campo, $this->camposValores)):
			return $this->camposValores[$campo]; 
			else:
				return false;
			endif;
		}//getValor
	}//fim da classe Base

Quando você quiser mandar dados para o banco, exemplo, voc tem uma class Funcionario

é chamar

class Funcionario extends base{ //Você deve sempre extender a base, nunca a Banco
		public function __construct($campos=array()){
			parent::__construct();
			$this->tabela = "NOME DA SUA TABLE NO BANCO" EX: "funcionario";
			if(sizeof($campos)<=0): //os campos do array abaixo deve ser o nome exato
				$this->camposValores = array( //dos campos da tabela
				"nome" => NULL,
				"email" => NULL,
				"login" => NULL,
				"senha" => NULL,
				"ativo" => NULL,
				"administrador" => NULL,
				"dataCad" => NULL,
				);
			else:
				$this->camposValores = $campos;
			endif;
			$this->campoPk = "id";	 //nome do campo primary key da sua tabela
		}//construct

Ai você está no seu arquivo que recebe os dados do formulário via post ou get

voc da um include_once 'funcionario.class.php';

#instancia um novo objeto dessa classe: $novoFuncionario = new Funcionario(array( //

'nome' => antiInject($_POST['nome']), //tira o antiInjet pq é uma função minha e não está neste código
'email' => ($_POST['email']), //esse $_post está pegando os dados que veio do seu formulário
'login' => ($_POST['login']), #todas as linhas do array terminam em vírgula
)); //você pode incluir todos os campos um a um dentro do array
$novoFuncionario ->inserir($novoFuncionario ); //Aqui voc está mandando o objeto para funcao inserir() e a magica acontece

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 britoriquee
      Olá pessoal!

      Tenho dois bancos: dt_dblogin e dt_dbdados, o primeiro salva os dados de login do usuário, como login, senha, id, etc... Já o segundo salva dados da empresa do usuário, como nome, endereço, cnpj, dentre varios outros. 
       
      A minha dúvida é: Como faço para verificar qual usuário está logado para liberar o conteúdo certo da empresa dele que está no outro banco? 
       
      Agradeço a atenção.
    • By leonardoc.g
      Quando eu tento fazer conexão no banco de dados pelo Dreamweaver me aparece essa mensagem:
       
      your php server doesn't have the MySQL module loaded or you cant't use the mysql_(p)connect functions
       
       
    • By Julie_santiago
      Olá!
      Pessoal, preciso muito de um help urgente. Estou tentando fazer uma simples query ao banco de dados, usando o Axios. Mas, não importa a forma de fazer a requisição, o Axios não funciona. O HTML está abaixo, onde chamo a função enviaDados() através do onsubmit.
      <div class="input-group md-form"> <form method="get" onsubmit="enviaDados()" name="buscar"> <input type="text" id="Form-search2" class="form-control" name="nomeReagente"> <label for="Form-search2">Search</label> <input type="submit" name="pesquisar" value="buscar"> </form> <span class="input-group-text dark lighten-2" id="basic-text1"> <i class="fas fa-search text-dark" aria-hidden="true"></i> </span> </div> Meu arquivo main.js que contém a função enviaDados().
      function enviaDados(){ let nome = buscar.nomeReagente.value recebeDados(nome); } Dentro dessa função, estou chamando outra: recebeDados() que executa a requisição Axios. Passo como parâmetro o valor lá do meu input. OBS.: Meu código está assim, aparentemente confuso, porque o objetivo é ter funções que enviam os dados dos meus formulários e outras funções (genéricas) para receber e tratar esses dados. Abaixo a função recebeDados():
      function recebeDados(nome_reagente){ axios.get('http://localhost/Quimica/php/recebe_json.php', { params: { nome } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log('Não foi possível realizar a requsição: '+error); }) .finally(function () { }); } Não importa o que eu faça, sempre cai no CATCH  - request aborted. Preciso muito resolver esse problema, mas não faço ideia do que pode ser. Relevem qualquer "noobice" porque estou aprendendo o básico ainda.
       
    • By JeanTDZ
      Olá pessoal!
       
      Estou com uma tremenda dificuldade.
      Tenho um formulário na qual está funcionando e cadastrando, porém preciso que o meu botão adicionar autorizado funcione e mostre o que foi digitado para o e-mail. As informações na vdd é enviada para o e-mail e o que será enviado é oque será digitado.
       
      Simplificando ->
      Tenho um botão que adiciona 2 inputs (NOME E SALDO) e conforme for clicando nesse botão, vai adicionando mais campos.
      Dúvida: Como posso fazer com que grave o que foi digitado nesses campos?
       
      Segue o que eu tentei fazer até agora:

      HTML
      <!DOCTYPE html> <html>     <head>         <title>Chame Taxi PrePago</title>                 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>         <link rel="icon" type="image/x-icon" href="https://www.flaticon.com/premium-icon/icons/svg/1361/1361253.svg" />         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>     </head>     <body>         <br />         <div class="container" style="width:100%; max-width:600px">             <h2 align="center">Pré-Pago</h2>             <br />             <div class="panel panel-default">                 <div class="panel-heading"><h4>Registrar</h4></div>                 <div class="panel-body">                     <form method="post" id="register_form">                         <?php echo $message; ?>                         <div class="form-group">                             <label>Nome Completo</label>                             <input type="text" name="user_name" style="text-transform:uppercase" class="form-control" pattern="[a-zA-Z ]+" required />                         </div>                         <div class="form-group">                             <label>E-mail</label>                             <input type="email" name="user_email"  style="text-transform:uppercase" class="form-control" required />                         </div>                         <div class="form-group">                             <label>CEP</label>                             <input type="text" name="campob" id="cep" value="" maxlength="9" onblur="pesquisacep(this.value);" class="form-control">                         </div>                         <div class="form-group"> <table id="myTable" class="table"> <a class="btn btn-primary" onclick="myFunction()" href="#" role="button">Adicionar Autorizado</a>             <thead>                 <tr>                     <th>NOME</th>                     <th>SALDO</th>                 </tr>             </thead>         </table>                         <div class="form-group">                             <input type="submit" name="register" id="register" value="Validar" class="btn btn-info" />                         </div>                     </form>                 </div>             </div>         </div>     </body> </html> JAVASCRIPT 
       
          <script>         var incremento = -1;         function myFunction() {             incremento++;             var table = document.getElementById("myTable");             var row = table.insertRow(0);             var cell1 = row.insertCell(0);             var cell2 = row.insertCell(1);             var cell3 = row.insertCell(2);             var cell4 = row.insertCell(3);             cell1.innerHTML = "NOME";             cell2.innerHTML = '<input type="text" name="name1[${incremento}]" >';             cell3.innerHTML = "SALDO";             cell4.innerHTML = '<input type="text" name="saldo[${incremento}]" size="15px" >';         }     </script>  
    • By gramosiri2
      Oi estou tentando passar um valor através de uma variável em uma query, porém não está mostrando o resultado que eu quero.
       
      Aqui eu pego o ultimo id do pedido
      <?php while($row = $consulta_pedido2->fetch_assoc()){ echo $row['id_pedido']; }?> E aqui eu faço a query e passo variável...
      $query ="SELECT itempedido.id_itempedido, itempedido.valor, ... FROM itempedido INNER JOIN produto ON ... WHERE itempedido.pedido_id = '$row'"; No caso onde está a variável $row, se eu colocar o numero do pedido manualmente, me retorno os itens daquele pedido, agora com a variável não está mostrando, alguma ideia?
×

Important Information

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