Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Quelipe

Consulta instantânea com PHP e Ajax

Recommended Posts

Aqui vai uma demonstração de uma consulta que a medida que você digita ela tras os resultados do banco de dados instantaneamente:

 

Para ver funcionando CLIQUE AQUI.

 

Segue o código:

 

Esse é o código onde você irá digitar o que quer buscar


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>

//função para pegar o objeto ajax do navegador
function xmlhttp()
{
	// XMLHttpRequest para firefox e outros navegadores
	if (window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}

	// ActiveXObject para navegadores microsoft
	var versao = ['Microsoft.XMLHttp', 'Msxml2.XMLHttp', 'Msxml2.XMLHttp.6.0', 'Msxml2.XMLHttp.5.0', 'Msxml2.XMLHttp.4.0', 'Msxml2.XMLHttp.3.0','Msxml2.DOMDocument.3.0'];
	for (var i = 0; i < versao.length; i++)
	{
		try
		{
			return new ActiveXObject(versao[i]);
		}
		catch(e)
		{
			alert("Seu navegador não possui recursos para o uso do AJAX!");
		}
	} // fecha for
	return null;
} // fecha função xmlhttp

//função para fazer a requisição da página que efetuará a consulta no DB
function carregar()
{
   a = document.getElementById('busca').value;
   ajax = xmlhttp();
   if (ajax)
   {
	   ajax.open('get','busca.php?busca='+a, true);
	   ajax.onreadystatechange = trazconteudo; 
	   ajax.send(null);
   }
}

//função para incluir o conteúdo na pagina
function trazconteudo()
{
	if (ajax.readyState==4)
	{
		if (ajax.status==200)
		{
			document.getElementById('resultados').innerHTML = ajax.responseText;
		}
	}
}

</script>
</head>

<body>
<form id="form1" action="" method="post">
	Busca: <input type="text" name="busca" id="busca" value="" onkeyUp="carregar()"/>
</form>
<p> </p>
Resultado da busca:
<div id="resultados" style="border:1px solid #CCCCCC; width:200px;">

</div>
</body>
</html>

Esse é o código que efetuará a consulta na base de dados:

Salve como busca.php

 

<?php
	mysql_connect("localhost","root","");
	mysql_select_db("pesquisa");
	
	$busca = $_GET['busca'];

	if($busca != "") {
		$sql = "SELECT * FROM cadastros WHERE cadastro LIKE '%$busca%' ORDER BY cadastro ASC ";
		$query = mysql_query($sql);
		
		//variavel para zebrar as linhas
		$cont = 0;
		while($row = mysql_fetch_object($query)) {
			//faz a diferenciação das cores para as linhas dos resultados
			if($cont %2 ==0) {
				$cor = "#EDEDED";
			} else {
				$cor = "#FFFFFF";
			}
			echo "<div style='background:$cor'>";
			echo $row->idcadastro. " - ";
			echo $row->cadastro."<br>";
			echo "</div>";
			$cont ++;
		}
	}
?>

Segue o código de uma base de dados para teste.

Crie um banco de dados com o nome de pesquisa;

 

CREATE TABLE `cadastros` (
  `idcadastro` int(5) NOT NULL auto_increment,
  `cadastro` varchar(100) NOT NULL,
  PRIMARY KEY  (`idcadastro`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;

-- 
-- Extraindo dados da tabela `cadastros`
-- 

INSERT INTO `cadastros` (`idcadastro`, `cadastro`) VALUES 
(1, 'Vectra'),
(2, 'Fusca'),
(3, 'vectra cd'),
(4, 'astra'),
(5, 'ogi'),
(6, 'gol 1.8'),
(7, 'Fiat uno'),
(8, 'Fiat elba'),
(9, 'S10'),
(10, 'F250'),
(11, 'golf'),
(12, 'golf gti'),
(13, 'gol gti'),
(14, 'corsa'),
(15, 'Kombi'),
(16, 'Wariant'),
(17, 'Celta'),
(18, 'corsa sedan'),
(19, 'Monza'),
(20, 'Honda'),
(21, 'Honda civic'),
(22, 'Punto'),
(23, 'Fiat tipo'),
(24, 'Stilo'),
(25, 'Caravan'),
(26, 'Opala'),
(27, 'Omega CD'),
(28, 'Omega');

Atenciosamente,

 

Edimilson sousa Quelipe.

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

 

irmão sou novo na programação em PHP, achei esse código show mas não consegui fazer funcionar adpatei as minhas necessidades mas deu esse erro

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\PORTAL\busca.php on line 13

 

OU SEJA NESSA LINHA ESTÁ DANDO ERRO, e está do mesmo jeito da sua, pode me ajudar por favor ?

 

Obrigado!

 

Durvaldo Razoni.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte, troca:

$query = mysql_query($sql);
por

$query = mysql_query($sql) or die( mysql_error() );
e ai você vai ver o motivo do erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eai quelipe, tava tentando adapta teu codigo, mas apresentou um erro...

tem algum outro modo de eu deixar dessa forma aqui?

 

<?php
        mysql_connect("localhost","root","");
        mysql_select_db("admin");
        
        $busca = $_GET['busca'];

        if($busca != "") {
                $sql = "SELECT * FROM noticias WHERE titulo LIKE '%$busca%' ORDER BY titulo ASC ";
                $query = mysql_query($sql);
                
                //variavel para zebrar as linhas
                $cont = 0;
                while($row = mysql_fetch_object($query)) {
				$id= $dados["id"];
                $titulo= $dados["titulo"];
                $texto= $dados["texto"];
				$data= $dados["data"];
                        //faz a diferenciação das cores para as linhas dos resultados
                        echo "
<table width='878' border='0' cellspacing='3' cellpadding='0' align='center' class='noticia'>
  <tr>
    <td width='170' class='noticia'>$titulo</td>
    <td width='454' class='noticia'>$texto</td>
    <td width='140' class='noticia'>$data</td>
    <td width='60' class='noticia'><a href='?pag=editar-noticia&id=$id'><img src='images/edit.png' border='0' /></a></td>
    <td width='60' class='noticia'><a href='?pag=excluir-not&id=$id'><img src='images/remove.png' border='0' /></a></td>
  </tr>
</table>";
                }
        }
?>

erro

Fatal error: Cannot use object of type stdClass as array in C:\xampp\htdocs\admin\busca.php  on line 14

linha 14

$id= $dados["id"];

como posso resolver isso?

abraço

 

só pra avisar que ja consegui ;)

fiz assim

 

<?php
        mysql_connect("localhost","root","");
        mysql_select_db("admin");
        
        $busca = $_GET['busca'];

        if($busca != "") {
                $sql = "SELECT * FROM noticias WHERE titulo LIKE '%$busca%' ORDER BY titulo ASC ";
                $query = mysql_query($sql);
                
                //variavel para zebrar as linhas
                $cont = 0;
                while($row = mysql_fetch_object($query)) {
				?>
                <table width='878' border='0' cellspacing='3' cellpadding='0' align='center' class='noticia'>
                  <tr>
                    <td width='170' class='noticia'><?php echo $row->titulo ?></td>
                    <td width='454' class='noticia'><?php echo $row->texto ?></td>
                    <td width='140' class='noticia'><?php echo $row->data ?></td>
                    <td width='60' class='noticia'><a href='?pag=editar-noticia&id=<?php echo $row->id ?>'><img src='images/edit.png' border='0' /></a></td>
                    <td width='60' class='noticia'><a href='?pag=excluir-not&id=<?php echo $row->id ?>'><img src='images/remove.png' border='0' /></a></td>
                  </tr>
                </table>	
                <?php
     
                }
        }
?>

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando acessar um stdClass como se fosse um array.

Veja que o fetch utilizado no código foi o object, então ele deverá ser acessado como um objeto e não como um array.

 

$titulo = $dados->titulo;

 

Veja que é diferente de

 

$titulo = $dados['titulo'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.