Ir ao conteúdo
  • Cadastre-se

PHP Fazer select com PHP


Posts recomendados

Queria fazer um select com PHP porém não está funcionando

<?php

    //Conexao
    include("conexao.php");

    //SQL
    $sql = "SELECT * FROM cursos";

    //Executar o comando
    $executar = mysqli_query($conexao, $sql);

    //Exibir dados
    while($indice = mysqli_fetch_assoc($executar)){
        echo $indice["curso"]."<hr>";
    }
?>

Aqui meu script

function selecionar(){

            //Ajax
            let ajax = new XMLHttpRequest();

            //Connection validate
            ajax.onreadystatechange = function(){
                
                if((this.readyState == 4) && (this.status == 200)){
                    document.getElementById("tabela").innerHTML = this.responseText;
            } else{
                    document.getElementById("tabela").innerHTML = "Falha ao carregar lista";
            }

            //Obter dados
            ajax.open("GET", "php/selecionar.php", true);
            ajax.send();

        }

        //Ao carregar o arquivo
        window.onload = function(){
            selecionar();
        }
    }

 

Link para o comentário
Compartilhar em outros sites

Olá!

você precisa de um script mais robusto.
Que seja capaz de te informar quando e onde há alguma falha.
Segue sugestão (Oops! Tipei um arquivo em php8):

index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    input {
      display: block
    }

    .response-table {
      font-family: monospace;
      white-space: pre;
    }
  </style>
</head>

<body>

  <main>
    <form>
      <div>
        <label>Curso</label>
        <input type="text" name="curso" value="Matemática" required autofocus>
      </div>
      <div>
        <label>Valor</label>
        <input type="number" name="valor" value="158.90" required step=".1">
      </div>
      <div>
        <br>
        <button>Salvar</button>
      </div>
    </form>
    <div class="response-body"></div>
    <h2>Get Cursos</h2>
    <div class="response-table"></div>
  </main>
  <script src="assets/app.js"></script>
</body>

</html>

 

assets/app.js

/**
 * TREAT RESPONSE
 * @param {*} response
 */
const treatResponse = async (response) => {
  let body
  // se no cabeçalho da response tiver json
  if (response.headers.get('content-type').includes('json')) {
    // trata a response como json
    body = await response.json()
  } else {
    // trata a response como texto
    body = await response.text()
  }

  return body
}
/**
 * CADASTRAR
 * @param {*} e
 */
const cadastrar = async (e) => {
  // evita que o submit do form atualize a página
  e.preventDefault()

  // define o formData
  const fData = new FormData(e.target)

  // submete os dados do form e espera pela resposta
  const response = await fetch(`api/`, {
    method: 'post',
    body: fData
  })

  const body = await treatResponse(response)

  // mostra a resposta na tela
  document.querySelector('.response-body').innerHTML = body

  // atualiza os dados da tabela
  getTableData()
}

// escuta o submit do form
document.querySelector('form').addEventListener('submit', cadastrar)

/**
 * GET TABLE DATA
 */
const getTableData = async () => {
  // submete a requisição e espera pela resposta
  const response = await fetch(`api/cursos`, {
    method: 'get'
  })

  const body = await treatResponse(response)

  console.log('response :>> ', body)

  // mostra a resposta na tela
  document.querySelector('.response-table').innerHTML = JSON.stringify(body, null, 2)
}

getTableData()

 

api/index.php

<?php

// se algo foi postado
if (sizeof($_POST)) {
  // conecta ao database
  require 'connection.php';
  // extrai as variáveis em $_POST
  extract($_POST);
  // escapa os valores das variáveis
  $curso = $sqli->real_escape_string($curso);
  $valor = $sqli->real_escape_string($valor);

  // monta a query de inserção
  $query  = "insert into cursos set curso='$curso', valor='$valor'";

  // executa a query
  $sqli->query($query);

  // verifica se houve alguma falha na execução da query
  if ($sqli->error) {
    // devolve json com a mensagem de erro
    jsonResponse('<p class="text-danger"><b>ERROR</b>: ' . $sqli->error . '</p><small class="text-secondary">' . __FILE__ . ' at line: ' . __LINE__ . '<small>', 500);

    // se não houve falha
  } elseif ($sqli->affected_rows) {
    // devolve mensagem de sucesso
    jsonResponse('Registro inserido com sucesso, chefe!');
  } else {
    // devolve json com a mensagem de erro
    jsonResponse('Nada foi alterado, chefe!', 400);
  }
}


api/connection.php

<?php

require 'helpers/httpResponse.php';

// definição de variáveis para conexão
$host     = 'localhost';        // servidor
$user     = 'root';             // nome do utilizador
$pass     = 'my-secret-pw';     // senha ou password
$database = 'studies';          // nome da base de dados

// estabelecer conexão:
$sqli = new mysqli($host, $user, $pass);

// verificando se conectou de boas:
if ($sqli->connect_error) {
  // se houver alguma falha, exibe mensagem:
  jsonResponse('<p class="text-danger">Falha na conexão: ' . $sqli->connect_error . '</p>', 400);
}

// definir o padrão de caracteres
if (!$sqli->set_charset('utf8')) {
  // se não conseguir definir o padrão de caracteres, exibe o padrão disponível
  jsonResponse("<p class='text-danger'>Seu charset não é utf8, chefe!<br>$sqli->character_set_name()</p>", 400);
}

// selecionar/abrir o banco de dados para trabalhar
if (!$sqli->select_db($database)) {
  // se o banco de dados não for encontrado
  jsonResponse("<p class='text-danger'>Banco de dados não encontrado, chefe!</p>", 400);
}

 

database.sql

set names utf8mb4;

drop schema if exists studies;
create schema studies;
use studies;

create table cursos(
  id         int not null auto_increment primary key,
  curso varchar(191),
  valor decimal(10,2),
  created_at timestamp default current_timestamp
);

insert into cursos(curso, valor) values ('Português', 100.99);


api/helpers/httpResponse.php

<?php
  /**
   * @param string|array|null $data
   * @param int $code
   * @return void
   */
  function jsonResponse(string|array $data = null, int $code = 200): void
  {
    // clear the old headers
    header_remove();
    // set the actual code
    http_response_code($code);

    // treat this as json
    header('Content-Type: application/json');

    $status = [
      200 => '200 OK',
      400 => '400 Bad Request',
      404 => '400 Not Found',
      422 => 'Unprocessable Entity',
      500 => '500 Internal Server Error'
    ];

    // ok, validation error, or failure
    header('Status: ' . $status[$code]);

    if ($code !== 200) {
      // guarda os dados do backtrace
      $debug = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];

      if (is_array($data)) {
        $data['debug'] = $debug;
      } else {
        $data .= "<small class='text-secondary'><b>FILE</b>: $debug[file], <b>LINE</b>: $debug[line]<small>";
      }
    }
    // return the encoded json
    die(is_array($data) ? json_encode($data) : '"' . $data . '"');
  }

 

api/cursos/index.php

<?php
// conecta ao database
require '../connection.php';

// define a query de busca
$query = 'select * from cursos order by created_at desc';

// executa a query de busca e guarda o resultado em $result
$result = $sqli->query($query);

// verifica se houve alguma falha na execução da query
if ($sqli->error) {
  // se houve alguma falha, exibe mensagem:
  jsonResponse('<p class="text-danger"><b>Falha na conexão</b>: ' . $sqli->error . '</p>', 500);

  // se não houve falha e algum registro foi encontrado
} elseif ($result->num_rows) {
  // guarda os registros em $dada
  $data = $result->fetch_all(MYSQLI_ASSOC);

  // encerra o script devolvendo um json
  jsonResponse(['data' => $data]);

  // se não houve erro e nenhum registro foi encontrado
} else {
  // devolve json com mensagem
  jsonResponse('Nenhum registro foi encontrado.', 404);
}

 

screenshot
image.png.d83e290c34d72376e2efbba298f95bcf.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!