Ir ao conteúdo

Como usar o valor de dentro de uma tabela html em uma consulta no banco de dados?


Joel.f

Posts recomendados

Postado

Ola, pessoal. Eu estou com o seguinte problema eu preciso fazer uma consulta em um banco sql filtrando a resposta pelo valor presente dentro de uma tabela html. Exemplo ta la em


<bory>
<tr>
<td name="busca" id="busca">2</td>
</tr>
</bory>

a formula padrão do filtro sql recordset ta $_get[' '] . Eu ja tentei coloca o nome

$_get['busca']

mas ele não reconhece o valor 2.

O que eu quero é o seguinte: tem uma tabela em que vai ter código, nome e descrição eu quero que, quando eu digite o código ainda no html não o usuário, os outros dados quando o site estiver on sejam preenchidos automaticamente. Enfim o problema ta em pegar o valor que coloquei na tabela e por dentro de uma variável php. Obs. eu consigo fazer a pesquisa com o formulário, mas ai o usuário tem que digitar o código e eu preciso que seja feito com o código que já ta la. Se precisar de mais detalhes é só mencionar.

  • Moderador
Postado

Seu problema está um pouco confuso.. como você quer fazer uma consulta sem enviar o dado a ser consultado?

Em nenhum momento você está passando o valor para o script php..

De fato, você precisa enviar um dado para o php.. para isso a pessoa precisa digitar algo para enviar por uma requisição ajax...e retornar os dados.... ou teria que de alguma forma capturar o valor.. quando clicar em alguma coisa.. um botão.. imagem.. ou o proprio número do ID.. enfim..

de alguma forma você precisa enviar esse valor ao php.

eu acho mais viável, utilizar o método do google.. a cada caractere digitado ele faz uma requisição.

Postado
Seu problema está um pouco confuso.. como você quer fazer uma consulta sem enviar o dado a ser consultado?

Em nenhum momento você está passando o valor para o script php..

De fato, você precisa enviar um dado para o php.. para isso a pessoa precisa digitar algo para enviar por uma requisição ajax...e retornar os dados.... ou teria que de alguma forma capturar o valor.. quando clicar em alguma coisa.. um botão.. imagem.. ou o proprio número do ID.. enfim..

de alguma forma você precisa enviar esse valor ao php.

eu acho mais viável, utilizar o método do google.. a cada caractere digitado ele faz uma requisição.

Entendi, bem vou tentar explicar o que preciso que aconteça talvez eu esteja fazendo a pergunta errada para chegar a responta. vou apenas simplificar o exemplo.



//tabela que é exibida mostrando o produto 1 e sua descrição
<table width="400" align="center">
<tr>
<td>Código: </td>
<td><?php echo $row_Recordset1['id']; ?></td>//nessa célula quero quero colocar o código do produto que quero ao invés desse recordset.
</tr>
<tr>
<td>Nome: </td>
<td><?php echo $row_Recordset1['nome']; ?></td>
</tr>
<tr>
<td>Descrição: </td>
<td><?php echo $row_Recordset1['descricao']; ?></td>
</tr>
</table>

Como se pode ver, assim quando a pagina é carregada ela exibe o primeiro dado que esta no banco de dados seu id, nome e descrição. Só que haverão muitos itens e eu queria controla-los apenas pelo código. Na pagina vão ser exibidos 16 tabelas cada um com um item por exemplo, só que existem 100 itens no banco de dados eu queria especificar quais seriam exibidos apenas colocando o código assim por exemplo no campo código eu coloco 32 e os outros campos da tabela se auto preenchem com os dados do item de id = 32 quando a pagina é atualizada. Obs uso o dw. espero ter esclarecido melhor. Eu quero que os outros dados exibidos na tabela seja o que o código especifica.

  • Moderador
Postado

Então, o que você quer basicamente se resume a uma requisição ajax para uma consulta no banco de acordo com o ID do produto certo?

Vou mostrar um exemplo simples e sua explicação para você entender o que foi feito

html:


<fieldset>
Código:
<form action="#" method="post">
<input type="text" name="id" class="id" />
</form>
</fieldset>
<div id="container">

<table width="400" align="center">
<tr>
<td>Nome: </td>
<td class="nome"></td>
</tr>
<tr>
<td>Descrição: </td>
<td class="decricao"></td>
</tr>
</table>
</div>



requisição ajax:


$(document).ready(function(){
$(".id").keyup(function(e){
var id = $(this).val();
e.preventDefault();
$.ajax({
url: "processa.php",
dataType: "html",
type: "POST",
data: {id: id},
success: function(data){
$("#container").html(data);
}
});
});
});

processa.php


<?php
$id = $_POST["id"];

include 'conn.php';

$sql = mysql_query("select nome, descricao from produto where id = $id");

if($sql){
$produto = mysql_fetch_object($sql);

echo"
<table width='400' align='center'>
<tr>
<td>Nome: </td>
<td class='nome'>$produto->nome </td>
</tr>
<tr>
<td>Descrição: </td>
<td class='decricao'>$produto->descricao </td>
</tr>
</table>";

}else{
echo "Ops.. Houve um erro :( ";
}

Explicação:

No html, Retirei da tabela o campo id. criei um formulário com um campo de texto para digitar o ID do produto.

foi criada uma div chamada com id container, e coloquei a tabela dentro dela. obviamente ela estará vazia, caso queria que ela seja já pré definida, é só criar uma consulta no banco e popular a tabela!.

Na Requisição ajax em jQuery,

usei a função keyup() para requisitar a cada tecla digitada.

criei uma variável id que recebe o valor do próprio campo naqual foi digitado.

Antes de entrar na proxima explicação do código, vou explicar o parâmetro " e ".

Ele seria uma abreviação de "event". O jquery possui uma função chamada preventDefault(), que exerce a mesma função do "return false".

A função $.ajax() é a responsável pela requisição assíncrona.

Ela possui os seguintes parâmetros:

url: caminho do arquivo a ser requisitado

dataType: é usado para o tipo de retorno( se quiser saber mais pesquise na api do jquery)

type: define se é por post ou por get

data: é onde os valores são inseridos, este atributo tem uma peculiaridade que ela recebe outros atributos. se for enviar mais de um, deve separá-los por virgula.

success: é usado para quando a requisitão for efetuada com sucesso. nota-se que é inserido o conteudo da variável data( vindo do db) dentro da div container.

No php, recebo a ID enviada post armazenando na variável $id.

usei o include para incluir o arquivo de conexão com o banco de dados,

A variável $sql faz a consulta no banco de dados de acordo com o valor digitado no campo de texto.

O bloco de IF, testa se a consulta foi feita.

Se sim, ela atribui na variavel produto os objetos retornados da consulta.( observe que este jeito é como eu trabalho, pois acho melhor. mas voce pode usar o mysql_fetch_array e tratar como índice.

Basicamente é isso.. o exemplo é bem simples.. não fiz nenhum css para estilizar..

Uma ultima dica.. ao invés de fazer requisitão de tecla a tecla, considere fazer a requisição clicando em um botão. neste caso.. só precisas alterar algumas coisinhas como de keyup() para click()

Também não fiz o tratamento de erros, no exemplo por exemplo se você digitar algum id existente no banco ele mostra os registros, mas se apagar o numero ele mostra mensagem de erros de variável vazia.. mas isso são apenas detalhes!

abraço

Postado

Bem, gostaria de agradecer as respostas em primeiro lugar. Consegui resolver meu problema da seguinte forma na home page eu vou filtrar cada um dos resultados manualmente mesmo usando o filtro do dw. Já para que as outras paginas sejam carregados com os dados corretos eu vou transmitir o paramento de filtragem pela URL anexando ao link. O tópico já pode ser fechado. Obrigado.

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!