View Full Version : Pesquisar em Php


xpto1987
10-04-2008, 16:25
Boas,
estou a fazer um projecto com Php e MySql...preciso de fazer um formulario para pesquisar os dados de uma tabela...Por exemplo:

o utilizador pretende listar todas as viaturas de uma determinada marca...existe uma text box onde o utilizador introduz a marca e ao clicar no botao 'Ok' aparece a lista das viaturas dessa marca mas na mesma pagina...o codigo para listar ja esta feito...mas nao sei como fazer para aparecer tudo na mesma pagina...penso que com JavaScript dava mas eu nao tenho nenhuns conhecimentos....

Agradecia ajuda....

Cump's Xpto1987

fil79
10-04-2008, 16:31
Boas,
estou a fazer um projecto com Php e MySql...preciso de fazer um formulario para pesquisar os dados de uma tabela...Por exemplo:

o utilizador pretende listar todas as viaturas de uma determinada marca...existe uma text box onde o utilizador introduz a marca e ao clicar no botao 'Ok' aparece a lista das viaturas dessa marca mas na mesma pagina...o codigo para listar ja esta feito...mas nao sei como fazer para aparecer tudo na mesma pagina...penso que com JavaScript dava mas eu nao tenho nenhuns conhecimentos....

Agradecia ajuda....

Cump's Xpto1987

com javascript é impossivel...tens de usar uma linguagem de servidor, por exemplo php que por sua vez faz uma busca à base de dados usando sql...de qualquer modo penso que esse projecto ficaria melhor se em vez de usares uma textbox usasses antes uma combox que listasse todas as marcas de carros existentes na tabela marcas...

hostmake
10-04-2008, 16:47
Uma combobox?

Voçês já trabalharam com mais de 1500 resultados? Era giro era :P

xpto1987, se usas PHP e MYSQL não precisas de mais nada!

Exemplo de listagem


<?php
echo "<table>";
$sql = (teu codigo sql);
$result = mysql_query($sql);
while ($dados = mysql_fetch_assoc($result)) {
?>

<tr><td>Nome da viatura</td></tr>
<tr><td><?=$dados['nome_viatura'];?></td></tr>

<?php
}
echo "</table>";
?>

fil79
10-04-2008, 17:39
temos de aplicar cada solução a cada caso especifico.. estamos a falar de marcas de carros, onde não deverá haver mais do que algumas dezenas de resultados portanto parece-me a melhor solução além do mais o utilizador fica sempre a saber quais as marcas que existem..e com ajax pode-se pensar numa solução para se ir automaticamente preenchendo outras combo com o modelo , portas, etc...

xpto1987
10-04-2008, 18:45
hostmake (http://www.techzonept.com/member.php?u=5710) obrigado, mas eu isso ja sabia +-...mas o que eu queria mesmo era quando o utilizador inserir a marca pretendida e clicar no ok iria aparecer na mesma pagina a lista das viaturas da marca escolhida

hostmake
10-04-2008, 20:09
ok.. ex:

<select name="id_para_ir_buscar_novo_campo" onChange="this.form.submit();"><option...></select>
<?php
if (isset($_POST['id_para_ir_buscar_novo_campo'])) {
$id = $_POST['id_para_ir_buscar_novo_campo'];
?>
<select name="os_campos_do_id" onChange="this.form.submit();">
<option>Marca X</option>
<option>Marca Y</option>
</select>
<?php
}
?>

candycane
11-04-2008, 01:55
xpto1987 para que o resultado apareça na mesma página no action do teu form podes ter nada, ou seja action="" ou mais eficaz: action="<?php echo $_SERVER['PHP_SELF']; ?>" ->isto faz com que se involque a mesma página depois da pesquisa.

Agora...
digamos que o nome ou id da tua textfield seja marcas e que o method do teus action seja post(action="post"), vais buscar o conteúdo dessa textfield com a super global $_POST.
Vamos supor tb que tens um tabela na base de dados com o nome viaturas e que um dos atributos dessa tabela seja marcas

O codigo deve ficar +- assim:



$marcas = $_POST['marcas'];

$sql = mysql_query("SELECT * FROM viaturas WHERE marcas LIKE '%$marcas%' ", $tua_conexao_BD);

if((!empty($marcas)) && (mysql_num_rows($sql) > 0)) {

while($registos = mysql_fecth_assoc($sql)){
echo $registos['marcas'];

}
}else{
echo "Procura sem resultados.";
}




Basta formatares melhor a forma com vais mostra o resultado, numa tabela, com CSS ou... LOL agora vais a tua imaginação :)

Espero ter ajudado...

xpto1987
11-04-2008, 13:40
Obrigado candycane (http://www.techzonept.com/member.php?u=68225)... vou testar e depois digo alguma coisa

xpto1987
17-04-2008, 13:41
Boas ja consegui resolver o problema...Obrigado pela ajuda