Como cadastrar e consultar dados no banco do Wordpress? [Resolvido]


(gtw) #1

No meu site, há uma seção chamada "Minha Prancha Ideal".

É um formulário onde o usuário irá inserir seus dados e haverá uma mensagem de retorno com o tipo de prancha ideal para a pessoa.

Primeira etapa, fazer o formulário: Feito;

Agora eu preciso me conectar e cadastrar os dados no banco. Criei uma tabela no banco do Wordpress chamada "minhaprancha". Porém, não estou conseguindo cadastrar os dados nela :confused:

O código de conexão e cadastro está assim:
require_once('../../../wp-load.php');
require_once('../../../wp-config.php');
global $wpdb;

  $nome = "";
  $email = "";
  $estilo = "";
  $experiencia = "";
  $altura = "";
  $peso = "";

  //VÁRIÁVEIS 
  if(!empty($_POST)){     
     $nome = $_POST['nome'];
     $email = $_POST['email'];
     $estilo = $_POST['estilo'];
     $experiencia = $_POST['experiencia'];
     $altura = $_POST['altura'];
     $peso = $_POST['peso'];

     cadastrar($nome,$email,$estilo,$experiencia,$altura,$peso);
     calcularIMC($estilo,$experiencia,$altura,$peso);
  }


  function cadastrar($nome,$email,$estilo,$experiencia,$altura,$peso){          //INSERE OS DADOS NO BANCO
      try{         
         $wpdb->insert( "INSERT INTO aa_minhaprancha("."nome, email, estilo, experiencia, altura, peso) VALUES (". ":nome', ':email', ':estilo', ':experiencia', ':altura', ':peso')");

          if($wpdb->rowCount() > 0)
              return true;
          else
              return false;

      }catch(PDOException $e){
         echo "Erro ao incluir na tabela categoria ".$e->getMessage();
      }
  }

De início, como eu posso me conectar e cadastrar os dados no banco de dados?


(Luã Ciceri Schwertner) #2

Para consultar podes fazer assim:

$sql="SELECT * FROM my_table";
$posts = $wpdb->get_results($sql);

Para inserir no banco:

$rows = $wpdb->insert( 
	'tabela', 
	array( 
		'post_id' => $post_id, 
		'user_id' => $user,
                'data' => gmdate('Y-m-d H:i:s')
	), 
	array( 
		'%d', 
		'%d', 
                '%s'
	) 
);

Não esqueça de incluir na página o arquivo wp-load.php e de colocar o global $wpdb;


(gtw) #3

Para inserir os dados necessariamente eu preciso utilizar a $wpdb e o ->insert(funções próprias do Wordpress)?

Como o banco do WP é um banco como qualquer outro parti da lógica que também posso fazer a conexão de uma forma direta:

<?php
/*CONEXAO COM O BANCO DE DADOS*/
define('DB_NAME', 'meubanco');
define('DB_USER', 'meuusuario');
define('DB_PASSWORD', 'minhasenha');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');


function conectar(){

    $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME."";

    try{
        $conectar = new PDO($dsn, DB_USER, DB_PASSWORD);
        $conectar->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $e)
    {
       echo "Erro ao conectar ao banco". $e->getMessage();
    }
    return $conectar;
}

e no código de cadastro, eu troquei a $wpdb por uma variável qualquer. Nomeei-a de $insercao.

Está conectando e cadastrando perfeitamente. Agora, tem algum problema em fazer essa conexão direta ou eu preciso utilizar a $wpdb como um boa prática?


(Luã Ciceri Schwertner) #4

Não precisa necessariamente usar não. Mas não vejo por que de fazer uma nova conexão com o banco de dados sendo que ela já existe, apenas use ela.

Em relação as funções nativas do Wordpress eu sempre recomendo e utilizo elas, pela "boa prática" e também por facilitar o trabalho.


(gtw) #5

Bom, depois de ter feito de uma forma direta, analisado o código e botando a cabeça pra pensar heuheueh Pensei exatamente nisso.

Já que o WP já tem isso pronto, pra quê fazer novamente?

Obrigado pela ajuda, atualizei o código com a função nativa do WP. Viva as boas práticas hehehe:v::stuck_out_tongue_winking_eye:


(Luã Ciceri Schwertner) #6

@gtw7375 isso aí :smile:
Massa ter te ajudado, qualquer coisa estamos por aí :wink:


(Druid Ctba) #7

Pessoal sou noobie em PHP e WP, porém como achei legal a forma como os plugins do WP funcionam para desenhar páginas, em especial o Elementor, eu comecei a desenhar uma aplicação WEB bem simples, mas ai veio o problema: como eu faço para listar uma tabela já existente, inserir, alterar e excluir dados nesta tabela pelo WP numa página WEB?

Eu não consigo acreditar, posso até estar enganado, mas uma página bonita que não interage com um banco de dados, que o WP usa que é o mySQL, é apenas uma página bonita, qual o valor disso?

Existe algum plugin para manutenção de informações de uma base de dados com a beleza do plugin Elementor, para desenhá-la num site bonito?

Eu tenho um formulário e uma tabela no google docs que faz isso, e imaginei que isso seria básico no WP, mas parece que não é. Abaixo só para elucidar estão meu formulário e minha tabela, para vocês entenderem, e que seria melhor se fosse possível usar isso numa página lindona com acesso a um banco de dados e não uma planilha que é pesada demais, com login e tudo mais, com todas as firulas do Elementor, e podendo apresentar e manter as informações na própria página, isso é possível?

O formulário: https://docs.google.com/forms/d/1GoQEh_6Bo14ETENcgqoErWNYkrJZyERi6O8UNJ2Cix8/viewform?edit_requested=true

A Tabela: https://docs.google.com/spreadsheets/d/1H_DHFUTEuE1Ntc0bTjXM2v84cFmDy5CCHKxWReCb0z8/edit?ts=5e2f0164#gid=1228027766

Agradeço toda ajuda possível, pois usar o WordPress com seus plugins só será vantajoso se eu puder interagir com tabelas que já estão prontas no banco de dados do WP.

Att.

Druid®.