Ir para conteúdo
Fórum Script Brasil
  • 0

A busca por pessoas no PHP


Frank K Hosaka

Pergunta

Hoje descobri o comando GOTO no PHP, e isso me incentivou a escrever um código para buscar pessoas no banco de dados, usando outros critérios além do nome.

O código ficou assim:

<style>li {margin: 0; padding: 0; list-style-type: none; white-space: nowrap;}</style>
<form id=frmg method=post><input type=hidden id=inpg></form>
<?php
if (isset($_POST['criterio'])) {
	$criterio=$_POST['criterio'];
	if ($criterio=="campo") {goto campo;}
	if (strpos($criterio,",")) { 
		$posvirg=strpos($criterio,",");
		$tamcriterio=strlen($criterio);
		$campo=substr($criterio,0,$posvirg);
		$criterio=substr($criterio,$posvirg+1,$tamcriterio);
		$sql="select * from tbpessoa where $campo like '%$criterio%' order by pessoa limit 15";
		goto inicio;}
	$sql="select * from tbpessoa where pessoa like '%$criterio%' order by pessoa limit 15";} else {
	$sql="select * from tbpessoa order by pessoa limit 15";}

inicio:
$mysqli=new mysqli("localhost","root","","diario");
$query=$mysqli->query($sql);
$numrec=mysqli_num_rows($query);
if ($numrec==0) {echo "Não há registros para exibir";}
echo "<table><tr><th><th>";
echo "<tr><td><td><input onchange=inpg.value=value;inpg.name='criterio';frmg.submit()>";
while ($row=$query->fetch_assoc()){
	$codp = $row['codp'];
	$codp = "<li style=color:blue>$codp</li>";
	$pessoa = $row['pessoa'];
	echo "<tr><td align=right>$codp<td>$pessoa";}
echo "</table>"; exit;
campo:
echo "<table><tr><th><th>Procurar por outro campo";
echo "<tr><td>CPF CNPJ<td><input onchange=inpg.value=['cnpj',value];inpg.name='criterio';frmg.submit()>";
echo "<tr><td>Endereço<td><input onchange=inpg.value=['end',value];inpg.name='criterio';frmg.submit()>";
echo "<tr><td>Telefone<td><input onchange=inpg.value=['tel',value];inpg.name='criterio';frmg.submit()>";
echo "<tr><td>Nota<td><input onchange=inpg.value=['nota',value];inpg.name='criterio';frmg.submit()>";
echo "</table>";

A ideia é buscar a pessoa pelo nome, mas se você não se lembra, aí você escreve "campo" no campo de busca, que ele vai dar outros campos para pesquisar, como endereço, telefone, nota e cnpj.

Se você lembra que a pessoa mora na Mirandopolis, ele vai listar todas as pessoas que moram nesse endereço.

O grande problema que enfrento agora é que ele é sensitivo. Se você cadastrou todas as pessoas que moram na Mirandopolis com M maiúsculo, ele não vai achar ninguém se você buscar com m minúsculo.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Consegui resolver.

A tabela tbpessoa estava configurada para utf8 no MySQL, e eu tentei mudar para Default Charset, só que ele não quis fazer, alegando que eu não sei nada da sintaxe do MySQL.

Eu fiquei mordido. Fechei o MySQL. Quando voltei mais uma vez para ver como consertar a tabela, ele já estava configurado como Default Charset.

Em cada campo da tbpessoa, eu configurei o charset para o utf8. Agora sim. No código PHP você pode escrever no campo de busca do endereço mirandopolis, Mirandopolis, Mirandópolis, que ele vai achar todas as pessoas que moram nesse endereço que tem "semântica" semelhantes.

Outro erro chato que tive que enfrentar é que sempre esqueço de colocar a palavra "campo" na hora de procurar a pessoa por outros critérios. Mas isso vou consertar quando tiver tempo, agora preciso ver a novela das 4.

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...