Ir ao conteúdo
  • Cadastre-se

Como exibir a tabela do banco de dados ?


Ir à solução Resolvido por FabianoS,

Posts recomendados

  • Moderador

@FabianoS

 

Bom a base de conhecimento você tem. mas tá errado isso. não precisa fazer um laço de do while, além de alguns detalhes no código.

 

Basicamente, você  usar duas funções do php.. uma para contar as linhas do registro e outro para exibição dos registros.

 

a função que conta é mysql_num_rows e a função que exibe é a mysql_fetch_[tipo] (onde o [tipo] você troca pelo tipo que está fazendo.. exemplo array, object.. e etc)

 

Recomendo usar o mysqli  que é nova extensão usada. então as funções eriam mysqli_num_rows() e mysqli_fetch_[tipo]

 

exemplo:

<div class="resultados">     <?php        include 'conexao.php';       $consulta = mysqli_query($conexao,"SELECT * FROM users");       $total_registros = mysqli_num_rows($consulta);          echo "<p>Total de registros: $total_registros </p>";            echo "<table>                 <tr>                    <th>ID</th>                    <th>Nome</th>                    <th>idade</th>                    <th>E-mail</th>                    </tr>";        while($resultado = mysqli_fetch_object($consulta)):            echo "                 <tr>                    <td>$resultado->ID</td>                    <td>$resultado->nome</td>                    <td>$resultado->idade</td>                       <td>$resultado->email</td>                  </tr>";       endwhile;       ?></div>

Explicação:

Linhas 1 e 28, tag html
Linhas 3 e 27, abertura e fechamento da tag php
Linha 4, inclui a conexão com o banco de dados
LInha 6, atribui em uma variável a consulta.
Linha 7, armazena em uma variável o total de registros
Linha 10, mostra em um elemento de parágrafo o total de registros
Linhas 11 a 17 cria a estrutura inicial da tabela dentro do echo
Linha 18 e 26, laço while que leva como parâmetro uma variável que recebe a função mysqli_fetch.. nesse caso eu utilizei o object.. porque é mais fácil tratar os dados como objeto ao invés de array.
Linhas 19 a 25, exibição dos valores dos campos dentro do elemento <td>.  Como utilizei o object,  a variável que recebe o mysqli_fetch_object deve ser usado o "->" seguido do nome do campo.
 então $resultado->ID é o mesmo que  $resultado["ID"] do mysqli_fetch_array 
 
Basicamente isto.
 
Para integrar a consulta digitada,
 
Antes você cria um formulário com o campo input text e um botão de submit.
então usar na consulta com a clasula WHERE, o valor que foi digitado.
 
Podes usar o LIKE se quiser, para colocar os "coringas"(%), o coringa na frente significa que considerará todos os registros que terem algo antes...
 
exemplo
 
SELECT * FROM user WHERE nome like '%pedro' 
 
isto retorna todos os registros que tem alguma coisa seguido de pedro..
por exemplo: João pedro,  josé pedro..
 
SELECT * FROM user WHERE nome like '%pedro%'
 
Retorna todos que tenham pedro entre algo.
 
SELECT * FROM user WHERE nome like 'pedro%'
 
No final de algo.
 
É por aí.
Se quiser um melhor aproveitamento, pesquise sobre utilizar a tecnica ajax no jquery e fazer isso utilizando requisiçõs assíncronas. Vale ressaltar também que se fizer tudo na mesma página, precisa testar antes.. se tem registro para não dar erro.
 
Enfim... para aprender.. recomendo primeiro criar, só a consulta retornando os dados na tabela, sem pesquisar nada.. depois aí sim você tenta implementar uma busca com o campo input 
Link para o comentário
Compartilhar em outros sites

 

@FabianoS

 

Bom a base de conhecimento você tem. mas tá errado isso. não precisa fazer um laço de do while, além de alguns detalhes no código.

 

Basicamente, você  usar duas funções do php.. uma para contar as linhas do registro e outro para exibição dos registros.

 

a função que conta é mysql_num_rows e a função que exibe é a mysql_fetch_[tipo] (onde o [tipo] você troca pelo tipo que está fazendo.. exemplo array, object.. e etc)

 

Recomendo usar o mysqli  que é nova extensão usada. então as funções eriam mysqli_num_rows() e mysqli_fetch_[tipo]

 

exemplo:

<div class="resultados">     <?php        include 'conexao.php';       $consulta = mysqli_query($conexao,"SELECT * FROM users");       $total_registros = mysqli_num_rows($consulta);          echo "<p>Total de registros: $total_registros </p>";            echo "<table>                 <tr>                    <th>ID</th>                    <th>Nome</th>                    <th>idade</th>                    <th>E-mail</th>                    </tr>";        while($resultado = mysqli_fetch_object($consulta)):            echo "                 <tr>                    <td>$resultado->ID</td>                    <td>$resultado->nome</td>                    <td>$resultado->idade</td>                       <td>$resultado->email</td>                  </tr>";       endwhile;       ?></div>

Explicação:

Linhas 1 e 28, tag html
Linhas 3 e 27, abertura e fechamento da tag php
Linha 4, inclui a conexão com o banco de dados
LInha 6, atribui em uma variável a consulta.
Linha 7, armazena em uma variável o total de registros
Linha 10, mostra em um elemento de parágrafo o total de registros
Linhas 11 a 17 cria a estrutura inicial da tabela dentro do echo
Linha 18 e 26, laço while que leva como parâmetro uma variável que recebe a função mysqli_fetch.. nesse caso eu utilizei o object.. porque é mais fácil tratar os dados como objeto ao invés de array.
Linhas 19 a 25, exibição dos valores dos campos dentro do elemento <td>.  Como utilizei o object,  a variável que recebe o mysqli_fetch_object deve ser usado o "->" seguido do nome do campo.
 então $resultado->ID é o mesmo que  $resultado["ID"] do mysqli_fetch_array 
 
Basicamente isto.
 
Para integrar a consulta digitada,
 
Antes você cria um formulário com o campo input text e um botão de submit.
então usar na consulta com a clasula WHERE, o valor que foi digitado.
 
Podes usar o LIKE se quiser, para colocar os "coringas"(%), o coringa na frente significa que considerará todos os registros que terem algo antes...
 
exemplo
 
SELECT * FROM user WHERE nome like '%pedro' 
 
isto retorna todos os registros que tem alguma coisa seguido de pedro..
por exemplo: João pedro,  josé pedro..
 
SELECT * FROM user WHERE nome like '%pedro%'
 
Retorna todos que tenham pedro entre algo.
 
SELECT * FROM user WHERE nome like 'pedro%'
 
No final de algo.
 
É por aí.
Se quiser um melhor aproveitamento, pesquise sobre utilizar a tecnica ajax no jquery e fazer isso utilizando requisiçõs assíncronas. Vale ressaltar também que se fizer tudo na mesma página, precisa testar antes.. se tem registro para não dar erro.
 
Enfim... para aprender.. recomendo primeiro criar, só a consulta retornando os dados na tabela, sem pesquisar nada.. depois aí sim você tenta implementar uma busca com o campo input 

 

 

Sim , quando começei com banco de dados e usei o mysql_ dava um erro que estava obsoleta, depois eu vi que ou usaria PDO ou MYSQLI..

 

 

 

esse daqui eu posso usar uma variavel ? por exemplo SELECT * FROM user WHERE nome like '%pedro%'.    

 

 

em vez de predro usaria um '%$busca%' tipo esse busca seria o valor recuperado do input ?

 

 

e mais uma coisa nao entendi a parto do laço. por exemplo você criou a tabela com os tr e td. e criou a variavel $resultado. e adicionou em todos os td - o banco de dados reconhece e organiza automaticamente . tipo nome e sobrenome?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@FabianoS

 

Vamos por partes, que nem nosso amigo jack, o estripador! brincadeiras à parte.. vamos lá!

 

 

 

SELECT * FROM user WHERE nome like '%pedro%'.  

Sim. e até deve. como você quer pesquisar algo digitado, deve-se usar uma variável para resgatar o valor do input enviado pelo formulário.

 

 

 

você criou a tabela com os tr e td. e criou a variavel $resultado. e adicionou em todos os td - o banco de dados reconhece e organiza automaticamente . tipo nome e sobrenome?

 

Veja que antes da estrutura do laço while, eu criei as tags iniciais da tabela. estas tags são aquele table header, onde fica o nome dos campos. esta parte acredito que tenhas entendido certo? vamos para a próxima.

A tabela renderiza da seguinte forma:

 

a cada TR,  possui um grupo de  TD.  ou seja, cada TR é uma linha de registro.

Então para que seja mostrado cada linha de registro é preciso que a estrutura da linha inteira esteja dentro do laço de while(daria para fazer com foreach ou for. mas neste caso o mais indicado é while mesmo.) 

O while, precisa receber como parâmetro uma variável que é atribuída a uma função de fetch relacionado a variável da consulta.

Então, esta variável sucedida pelo nome do campo no banco de dados(precisa ser exatamente igual como está lá..  se por exemplo o campo id.. seja maúsculo, deve ser escrito em maiúsculo)

Lembrando que se for usar o fetch_array,  deve-se escrever   $resultado["nome do campo"], se utilizar o fetch_object como meu exemplo, deve-se utilizar $resultado->nome do campo

 

Muita gente tem mania de criar novas variável para atribuir a estas variáveis como por exemplo:

 

$id  = $resultado["id"]  ou $id  = $resultado->id

 

e quando for exibir ..ele passa a usar só o $id.

 

Eu já não acho isso legal... adiciona mais linhas ao código... então por estas razões eu sempre utilizo o fetch_object  e uso  " $resultado->id "  direto no lugar onde quero mostrar(exemplo das linhas 21 a 24)

Link para o comentário
Compartilhar em outros sites

  • Moderador

@FabianoS

 

Ao meu ver, as únicas coisas erradas ali são:

 

$conexao = mysqli_connect($host, $user, $pass, $banco)

Faltou colocar a variável do banco de dados dentro da função mysqli_connect() e alterar  a função do erro para mysqli_error()

 

Um outro detalhe que vi.  você abriu o php na linha 5,  fechou na linha 17 e abriu de novo na linha 20... e tem mais ali.. por sugestão:

 

Retire a tag de fechamento da linha 17,  a tag de abertura na linha 20 e  a tag de fechamento na linha 36.
 
Deixando a tag de abertura na linha 5 e o fechamento na linha 38.

 

 

Link para o comentário
Compartilhar em outros sites

 

@FabianoS

 

Ao meu ver, as únicas coisas erradas ali são:

 

$conexao = mysqli_connect($host, $user, $pass, $banco)

Faltou colocar a variável do banco de dados dentro da função mysqli_connect() e alterar  a função do erro para mysqli_error()

 

Um outro detalhe que vi.  você abriu o php na linha 5,  fechou na linha 17 e abriu de novo na linha 20... e tem mais ali.. por sugestão:

 

Retire a tag de fechamento da linha 17,  a tag de abertura na linha 20 e  a tag de fechamento na linha 36.
 
Deixando a tag de abertura na linha 5 e o fechamento na linha 38.

 

 

 

 

Sim , ja arrumei e continuou o mesmo  erro.

 

 

deixei as tags so na 5 e na 38  e mesmo erro.

 

Y7dX6IY.png

Link para o comentário
Compartilhar em outros sites

Agora vi,  a função mysqli_num_rows() espera só um parâmetro.

Ou seja, tire a variável de conexão.  Se eu não me engano só o mysqli_query() precisa dos dois.

 

ja havia tirado, continua mesmo erro.

<html lang="pt-br"><head></head><body><?php$host = "localhost";$user ="root";$pass = "";$banco = "cadastro";$conexao = mysqli_connect($host, $user, $pass,$banco)  or die (mysqli_error());mysqli_select_db ($conexao,"usuario");$consulta = mysqli_query($conexao,"SELECT * FROM usuario WHERE nome '%fabiano%'");$total_registros = mysqli_num_rows($consulta);echo "<p>Total de registros: $total_registros </p>";            echo "<table>                 <tr>                    <th>ID</th>                    <th>Nome</th>                    <th>SobreNome</th>                 </tr>";        while($resultado = mysqli_fetch_object($consulta)):            echo "                 <tr>                    <td>$resultado->id</td>                    <td>$resultado->nome</td>                    <td>$resultado->sobrenome</td>                   </tr>";       endwhile;       ?>

@dif

 

eu acrescentei o "  or die(mysqli_error()); " no $consulta = mysqli_query($conexao,"SELECT * FROM usuario WHERE nome '%fabiano%'"); e

 

retornou esse erro.

 

ylKVkjd.png

Link para o comentário
Compartilhar em outros sites

  • Moderador

@FabianoS

mysqli_select_db ($conexao,"usuario");

é desnecessário, por que você já seleciona o banco no mysqli_connect()

 

uma pergunta: usas o xampp ou outro?

Recomendo usar o easyPHP 14.1 Dev sever


@FabianoS

 

a consulta está errada:

SELECT * FROM usuario WHERE nome LIKE '%fabiano%'

Deve acrescentar o LIKE,  se não for utilizar o metodo convencional que é:

SELECT * FROM usuario WHERE nome = 'fabiano'
Link para o comentário
Compartilhar em outros sites

  • Solução

 

@FabianoS

mysqli_select_db ($conexao,"usuario");

é desnecessário, por que você já seleciona o banco no mysqli_connect()

 

uma pergunta: usas o xampp ou outro?

Recomendo usar o easyPHP 14.1 Dev sever

@FabianoS

 

a consulta está errada:

SELECT * FROM usuario WHERE nome LIKE '%fabiano%'

Deve acrescentar o LIKE,  se não for utilizar o metodo convencional que é:

SELECT * FROM usuario WHERE nome = 'fabiano'

 

 

Consegui , adicionei como falei o mysqli_error(); e mudei o

 

$consulta = mysqli_query($conexao,"SELECT * FROM usuario WHERE nome '%fabiano%'"); (estava retornando falso.)

 

por $consulta = mysqli_query($conexao,"SELECT * FROM usuario") or die (mysqli_error());

 

ai deu certo.

 

sMF8wPA.png?1

fora que ainda consegui fazer a busca pelo input.

 

OfFNJqu.png?1

Link para o comentário
Compartilhar em outros sites

  • Moderador

@FabianoS

 

Que bom que resolveu.

Só uma coisa.  Por gentileza,   Altere o print, que tem o quarto registro.

O Clube do Hardware é apartidário.. então é contra as regras postar opiniões políticas com esse ponto de vista denegrindo o nome de alguém(seja qualquer político ou pessoa normal)

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

@FabianoS

 

Que bom que resolveu.

Só uma coisa.  Por gentileza,   Altere o print, que tem o quarto registro.

O Clube do Hardware é apartidário.. então é contra as regras postar opiniões políticas com esse ponto de vista denegrindo o nome de alguém(seja qualquer político ou pessoa normal)

feito. obrigado pela ajuda, comecei ficar empolgado. valeu

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

  • Moderador

@FabianoS

 

Então, tente um novo passo!

Tente implementar o teste se caso não houver registro.

 

Por exemplo, entrou no index, se não tiver nenhum registro, exiba a mensagem " nenhum registro adicionado" e total de registros: 0

 

Se houver registro, mostra a tabela. e o total de registros.

Link para o comentário
Compartilhar em outros sites

@FabianoS

 

Então, tente um novo passo!

Tente implementar o teste se caso não houver registro.

 

Por exemplo, entrou no index, se não tiver nenhum registro, exiba a mensagem " nenhum registro adicionado" e total de registros: 0

 

Se houver registro, mostra a tabela. e o total de registros.

 

essa eu ja sabia. 

 

usaria o if.

 if($total_registros <= 0){echo "Nenhum Registro Encontrado";       };

@dif  brigado mesmo pela ajuda. espero precisar mais de você. vou dormir que amanha acorda cedo. valeu te mais.

 

 

s9jzxO8.png

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

Visitante
Este tópico está impedido de receber novas respostas.

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...