Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Integrando REACT JS, PHP e MYSQL

12/05/2018

Na aula de hoje vamos aprender a integrar o REACT JS com o PHP e com o banco de dados MYSQL. Utilizaremos a classe PDO para a integração.

Criando o Banco de Dados

Vamos criar nosso banco de dados no PHPMYADMIN:

CREATE TABLE 'carros' (
  'Id' int(11) NOT NULL,
  'Marca' varchar(30) NOT NULL,
  'Modelo' varchar(30) NOT NULL,
  'Ano' varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE 'carros' ADD PRIMARY KEY ('Id');
ALTER TABLE 'carros' MODIFY 'Id' int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
INSERT INTO 'carros' ('Id', 'Marca', 'Modelo', 'Ano') VALUES
(1, 'Fiat', 'Uno', '2002'),
(2, 'Chevrolet', 'Camaro', '2016'),
(3, 'Ford', 'Fiesta', '2014'),
(4, 'Ford', 'Ka', '2001'),
(5, 'Chevrolet', 'Monza', '2001');

Estrutura e arquivos

Para a estrutura de diretórios criaremos dentro da pasta SRC do nosso projeto as pastas api e components. A pasta API receberá os arquivos php e a pasta components receberá os componentes javascript.

Arquivos PHP

No PHP teremos 3 arquivos: index.php (responsável por instanciar a ClassCarros), ClassConexao (classe abstrata que realiza a conexão com o banco de dados) e a ClassCarros que remeterá um retorno json para nossa aplicação.

#index.php
include("ClassCarros.php");
$Carros=new ClassCarros();
$Carros->exibeCarros();
abstract class ClassConexao{

    #conexão com o banco de dados
    protected function conectaDB()
    {
         try{
             $Con=new PDO("mysql:host=localhost;dbname=react","root","");
             return $Con;
         }catch (PDOException $Erro){
             return $Erro->getMessage();
         }
    }
}
include("ClassConexao.php");

class ClassCarros extends ClassConexao{

    #Exibição dos carros em um json
    public function exibeCarros()
    {
        $BFetch=$this->conectaDB()->prepare("select * from carros");
        $BFetch->execute();

        $J=[];
        $I=0;

        while($Fetch=$BFetch->fetch(PDO::FETCH_ASSOC)){
            $J[$I]=[
                "Id"=>$Fetch['Id'],
                "Marca"=>$Fetch['Marca'],
                "Modelo"=>$Fetch['Modelo'],
                "Ano"=>$Fetch['Ano']
            ];
            $I++;
        }

        header("Access-Control-Allow-Origin:*");
        header("Content-type: application/json");
        echo json_encode($J);
    }
}

Repare que devemos estabelecer os cabeçalhos com o access control allow e content-type.

Componentes do REACT JS

No REACT JS teremos dois componentes principais: App e Tabela.

App.js:

import React from 'react';
import React from 'react';
import Tabela from './Tabela';

export default class App extends React.Component{

    constructor(){
        super();
        this.state=({
            db: []
        });
        this.exibirCarros();
    }

    exibirCarros(){
        fetch("http://localhost/libraries/src/api/")
        .then((response)=>response.json())
        .then((responseJson)=>
        {
            this.setState({
                db: responseJson
            });
        })
    }

    render(){
        return(
          <div>
              <tabela arraycarros="{this.state.db}"></tabela>
        </div>
        );
    }
}

Tabela.js:

import React from 'react';

export default class Tabela extends React.Component{
    render(){
        return(
          <div>
              {this.props.arrayCarros.map(
              row=>

              )}
              <table classname="TabelaCarros">
                  <thead>
                  <tr>
                      <td>Id</td>
                      <td>Marca</td>
                      <td>Modelo</td>
                      <td>Ano</td>
                  </tr>
                  </thead>

                  <tbody><tr key="{row.Id}">
                      <td>{row.Id}</td>
                      <td>{row.Marca}</td>
                      <td>{row.Modelo}</td>
                      <td>{row.Ano}</td>
                  </tr></tbody>
              </table>
          </div>
        );
    }
}

Estilizando componentes do React no CSS

Vamos por fim estilizar a tabela do nosso projeto:

*{margin:0; box-sizing: border-box;}

.TabelaCarros{float:left; width: 80%; margin: 30px 10%; text-align: center;}
    .TabelaCarros thead tr:first-child{background: black; color: white; font-weight: bold;}
    .TabelaCarros tbody tr:nth-child(2n){background: #CCC;}

Lembre-se que para que o sistema funcione corretamente é necessário que você tenha o Node.js instalado e um servidor PHP rodando (Wamp, Lamp, Xamp...)

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

React JS - Botao Show / Hidden (Toggle)
Nessa vídeo aula vamos aprender a criar um botão de show / hidden igual a função toggle do JQuery.
Saiba mais!
Busca sem refresh com REACT JS, PHP e MYSQL
Na vídeo-aula de hoje vamos trabalhar com busca sem refresh no REACT, utilizando PHP e MYSQL. Utilizaremos também o recurso debounce.
Saiba mais!
React JS
Nessa seção aprenderemos sobre essa importante biblioteca Javascript desenvolvida pelo Facebook para facilitar a construção backend dos nossos websites.
Saiba mais!