Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2008, 01:54
manchilp
 
Fecha de Ingreso: enero-2008
Ubicación: La Plata
Mensajes: 136
Antigüedad: 16 años, 9 meses
Puntos: 3
[APORTE]Live search con Ajax

Hola buenas noches.
Hace algunos dias empece a aprender y practicar AJAX y he desarrollado un Live Search , que funciona perfecto y me encantaria compartirlo con Ustedes.

Bueno primero y principal dare por sabido (ya que si entraron en AJAX deben tener conocimientos previos de PHP) las conexiones a las bases de datos y la creacion de tablas y campos donde buscar , esto es totalmente libre segun sus necesidades.

Empecemos con el INDEX.HTML
Por cuestiones de tiempo , metere todo lo que no sea HTML dentro de este archivo (Javascript y CSS).

Código:
<!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>
<style type="text/css">

@charset "utf-8";
/* CSS Document */

body{
font-family:"Trebuchet MS";
font-size:12px;
color:#999999;
}

#buscador {
border: 2px solid #00CCFF;
width: 800px;
margin: 0 auto;
padding: 5px;
}
#criterio{
margin:5px;
border:1px solid #00CCFF;
color:#999999;
font-size:14px;
padding: 3px;
width:200px;
}
#label {
color:#000000;
}
font{
margin: 5px;
}
#buscarPor{
float:right;
width:575px;
height:30px;
}
#resultados{
width:800px;
height:auto;
margin-top:20px;
margin: 0 auto;
padding:5px;
}


</style>

<title>Live Search en Ajax</title>
<script type="text/javascript">
	//Creamos el objeto XMLHttpRequest
	function crearInstancia(){
			var aVersions = [ "MSXML2.XMLHttp.5.0",
					"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
					"MSXML2.XMLHttp","Microsoft.XMLHttp"
			];
	
			if (window.XMLHttpRequest){
					// para IE7, Mozilla, Safari, etc: que usen el objeto nativo
					return new XMLHttpRequest();
			}else if (window.ActiveXObject){
					// de lo contrario utilizar el control ActiveX para IE5.x y IE6.x
					for (var i = 0; i < aVersions.length; i++) {
							try {
								var oXmlHttp = new ActiveXObject(aVersions[i]);
								return oXmlHttp;
							}catch (error) {
							//no necesitamos hacer nada especial
							}
				}
			}
	}
	//Enviamos la peticion
	function cargarDatos() {
		XHR= crearInstancia();
		if(XHR){
			var url= "buscar.php?criterio="+document.getElementById("criterio").value;
			XHR.open("GET",url,true);
			XHR.onreadystatechange=cambiaEstado;
			XHR.send(null);
		}
	}
	//Mostramos resultados en pantalla
	function cambiaEstado() {
		/*if(XHR.readyState==1){
			document.getElementById("cargando").innerHTML= "<img src='http://i29.tinypic.com/jza49y.gif'>";
		}else */ if (XHR.readyState==4){
			document.getElementById("resultados").style.display= "";
			document.getElementById("resultados").innerHTML= XHR.responseText;
		}
	}
		
			

</script>
</head>
<body>
<div id="buscador">
  <label>  
  <font color="#000000">Ingrese aqui la palabra a Buscar:</font><br />
  <input type="text" name="criterio" id="criterio" onkeypress="cargarDatos()" onkeyup="cargarDatos()"/>
  </label>
  
  <label>  </label>
</div>
<br /><div id="resultados" style="border:2px solid #00CCFF; "></div>
</body>
</html>
y por ultimo el archivo buscar.php
que viene a ser el motor de busqueda.

Código PHP:
<?
$buscar
$_GET["criterio"];

//AQUI ARCHIVO DE CONEXION
include("../conectar.php");

$sql "SELECT * FROM tabla WHERE camp_busqueda like '%$buscar%' ";
$resultmysql_query($sql,$conectar);
$nummysql_num_rows($result);
if(
$num==0){
echo 
"No se han encontrado resultados con el termino <b>$buscar</b>";
}elseif(
$num>0){
while(
$rowmysql_fetch_object($result)){
if(
$num>1){
echo 
"Se han encontrado $num resultados<br><br>";
}elseif(
$num==1){
echo 
"Se ha encontrado $num resultado<br><br>";
}
echo 
"<b><font color='#666666'> Enviado por <font color=#00CCFF>".$row->autor."</font> el dia <font color=#00CCFF>".$row->fecha."</font></font></b><br>";
echo 
$row->comentario."<hr>";
}
}
?>
El buscador es bastante simple , pero funciona a la perfeccion.
Cualquier duda o problema por favor comentenlo.