Criando um formulário de busca complexo com PHP e MySQL
Bom, esse tutorial visa a explicação de um tutorial simples, que é de muito boa utilidade.
Fazendo o Formulário em HTML -- esse passo é simples para todos:
Ai está o formuláario, com um campo de texto onde o usuário vai digitar o nome da busca e 3 categorias, onde vai ficar especificado o produto que ele deseja.
Agora vamos para o PHP, você terá que criar uma tabela do banco de dados:
Ai está um exemplo simples, voçê poderá melhorá-lo depois. Vamos agora para o php.
Busca.php:
Pronto ai está, agora é so aperfeiçoar.
Testado, funciona.
Fazendo o Formulário em HTML -- esse passo é simples para todos:
<form action="Busca.php" method="post"> <input type="text" name="palavra" /> <select name="categoria"> <option value="cadeiras">Cadeiras</option> <option value="mesa">Mesas</option> <option value="bancos">Bancos</option> </select> <input type="submit" Value="Buscar" /> </form>
Ai está o formuláario, com um campo de texto onde o usuário vai digitar o nome da busca e 3 categorias, onde vai ficar especificado o produto que ele deseja.
Agora vamos para o PHP, você terá que criar uma tabela do banco de dados:
CREATE TABLE `moveis` ( `id` tinyint(4) NOT NULL auto_increment, `nome` varchar(30) NOT NULL default '', `categoria` varchar(20) NOT NULL default '', `preco` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `moveis` VALUES (1, 'madeira', 'mesa', 100); INSERT INTO `moveis` VALUES (2, 'metal', 'mesa', 127); INSERT INTO `moveis` VALUES (3, 'cimento', 'banco', 50); INSERT INTO `moveis` VALUES (4, 'madeira', 'cadeira', 127);
Ai está um exemplo simples, voçê poderá melhorá-lo depois. Vamos agora para o php.
Busca.php:
<?php
$hostdb = "localhost";// Geralmente Localhost
$userdb = "USUARIO";//usuário do seu banco de dados
$passdb = "SENHA";// senha do banco de dados
$tabledb = "TABELA_DO_BANCO";// tabela do banco de dados
$conecta = mysql_connect($hostdb, $userdb, $passdb) or die (mysql_error());
@mysql_select_db($tabledb, $conecta) or die ("Erro ao conectar com o banco de dados");
$busca = $_POST['palavra'];// palavra que o usuario digitou
$categoria = $_POST['categoria']; //categoria que o usuario deseja
$busca_query = mysql_query("SELECT * FROM moveis WHERE nome LIKE '%$busca%' AND categoria = '$categoria'")or die(mysql_error());//faz a busca com as palavras enviadas
if (empty($busca_query)) { //Se nao achar nada, lança essa mensagem
echo "Nenhum registro encontrado.";
}
// quando existir algo em '$busca_query' ele realizará o script abaixo.
while ($dados = mysql_fetch_array($busca_query)) {
echo "Id do Produto: $dados[id]<br />";
echo "Nome do Produto: $dados[nome]<br />";
echo "Preço do Produto: $dados[preco] Reais<br />";
echo "Categoria do Produto: $dados[categoria]<br />";
echo "<hr>";
}
?>
Pronto ai está, agora é so aperfeiçoar.
Testado, funciona.
ola pessoal...
trabalho em uma empresa e preciso fazer uma formulario de contato e estou precisando fazer um formulario e naum tenho nenhuma noção de php
se alguem puder me ajudar eu agradeço
a minha dificuldade esta e validar o formulário eu sei fazer tudo o formulario elaborar os campo mas a hora que eu clicar em(submit) que é enviar naum esta enviando
se alguem puder me ajudar eu ja agradeço
trabalho em uma empresa e preciso fazer uma formulario de contato e estou precisando fazer um formulario e naum tenho nenhuma noção de php
se alguem puder me ajudar eu agradeço
a minha dificuldade esta e validar o formulário eu sei fazer tudo o formulario elaborar os campo mas a hora que eu clicar em(submit) que é enviar naum esta enviando
se alguem puder me ajudar eu ja agradeço
01/09/2009 1:26pm
(~2 anos atrás)
ismael disse:
qero que apareça uma mensagem tipo "escolha uma categoria " qndo o select não for modificado como faço ?
Ismael, respondendo sua pergunta:
[code]if(empty($categoria)){
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=javascript: history.go(-1);'>"; // retorna para a pagina anterior
echo "<script type='text/javascript'>alert('Escolha uma categoria')</script>"; // escreve o alerta.
[/code]
qero que apareça uma mensagem tipo "escolha uma categoria " qndo o select não for modificado como faço ?
Ismael, respondendo sua pergunta:
[code]if(empty($categoria)){
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=javascript: history.go(-1);'>"; // retorna para a pagina anterior
echo "<script type='text/javascript'>alert('Escolha uma categoria')</script>"; // escreve o alerta.
[/code]
15/07/2009 3:24pm
(~2 anos atrás)
Antes de fazer o query da busca voce pode botar um
if(empty($categoria)){
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=javascript: history.go(-1);'>"; // retorna para a pagina anterior
echo "<script type='text/javascript'>alert('Selecione uma categoria')</script>"; // escreve o alerta.
}else{
resto do codigo...
}
Mais ou menos isso.
if(empty($categoria)){
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=javascript: history.go(-1);'>"; // retorna para a pagina anterior
echo "<script type='text/javascript'>alert('Selecione uma categoria')</script>"; // escreve o alerta.
}else{
resto do codigo...
}
Mais ou menos isso.
12/06/2009 6:33pm
(~2 anos atrás)
qero que apareça uma mensagem tipo "escolha uma categoria " qndo o select não for modificado como faço ?
12/06/2009 4:28pm
(~2 anos atrás)
Foi mal pelo segundo comentario seguido ,so agora vo a parte do categoria.
--Cézar Ayran--
Não sei oq ue aconteceu mais nao foi feita a quebra de linha na parte da query de busca, se voce selecionar e arrastar o mouse por cima da query vera o resto do script.
--Cézar Ayran--
Não sei oq ue aconteceu mais nao foi feita a quebra de linha na parte da query de busca, se voce selecionar e arrastar o mouse por cima da query vera o resto do script.
10/06/2009 8:41am
(~2 anos atrás)
--Cézar Ayran--
Na verdade eu nao disse que o script era complexo.
Eu disse que a busca era complexa, geralmente se usar somente um campo ara fazer buscar dentro do site, porém ai ficou uma busca com um campo e um select para categorias.
--Romário Machado--
É, acabei me confundindo, tenho a mania de chamar o banco de tabela, Confusao aprendida com localhost ¬¬.
--Diego--
Sim deixei o mais simpels possivel, poderia ter colocado htmlspecialchars , addslashes e (string)/(int), so que quis deixar um pouco mais leve. Era para ser um tutorial iniciante.
Na verdade eu nao disse que o script era complexo.
Eu disse que a busca era complexa, geralmente se usar somente um campo ara fazer buscar dentro do site, porém ai ficou uma busca com um campo e um select para categorias.
--Romário Machado--
É, acabei me confundindo, tenho a mania de chamar o banco de tabela, Confusao aprendida com localhost ¬¬.
--Diego--
Sim deixei o mais simpels possivel, poderia ter colocado htmlspecialchars , addslashes e (string)/(int), so que quis deixar um pouco mais leve. Era para ser um tutorial iniciante.
10/06/2009 8:37am
(~2 anos atrás)
Busca complexa? I'm sorry mas... seu script não tem nada de complexo, um simples select com um nome passado pelo usuário e mais... a variável categoria está no script para enfeite? Pois o usuário seleciona vc até atribui a outra variável e pronto não faz mais nada isso não irá afetar no resultado da busca!
http://www.plugmania.com.br
http://www.plugmania.com.br
09/06/2009 8:14pm
(~2 anos atrás)
Mto bom...só uma dica, coloca um strtolower ai nas variáveis que você recebe via $_POST ou utiliza o upper() no SQL (só que vai aumentar um pouco o custo do SQL no casso do upper()).
[]s.
[]s.
05/06/2009 2:53pm
(~2 anos atrás)
Muito bom, apenas com um detalhe, onde tem
$tabledb = "TABELA_DO_BANCO";// tabela do banco de dados
na verdade é o banco de dados, você pode deixar da maneira que está que não afetar o resultado final.
(:
$tabledb = "TABELA_DO_BANCO";// tabela do banco de dados
na verdade é o banco de dados, você pode deixar da maneira que está que não afetar o resultado final.
(:
04/06/2009 2:44pm
(~2 anos atrás)



disse:
Só não sei por onde começar, também não sei qual linguagem(s) seria apropriada para a empreitada.
PHP é a melhor linguagem para fazer isto?
Se não,qual linguagem é melhor, e qual banco usar.
Se puderem me indicar livros também será de grande ajuda.
Desde já muito obrigado.