ok. perdona. mira lo que voy a hacer es poner el ejemplo que me valió a mí para realizar mi buscador y sobre él os hago las consultas, ok? bueno. os cuento. Supongamos una base de datos llamada 'ejemplo' con una tabla llamada 'alumnos' donde existen tres campos: idalumno (autonumérico), nombre, direccion.
las funciones en javascript son las siguientes: página funciones.js
Código PHP:
function nuevoAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function buscarDato(){
resul = document.getElementById('resultado');
bus=document.frmbusqueda.dato.value;
ajax=nuevoAjax();
ajax.open("POST", "busqueda.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
resul.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("busqueda="+bus)
}
El formulario de consulta es el siguiente:
Código HTML:
<head>
<title>Buscador en Ajax</title>
<!-- referenciamos al archivo funciones.js donde se encuentra la funcion objetoAjax-->
<script language="JavaScript" type="text/javascript" src="funciones.js"></script>
</head>
<body>
<form name="frmbusqueda" action="" onsubmit="buscarDato(); return false">
<div align="center">Buscar Alumno:
<input type="text" name="dato" />
</div>
</form>
<fieldset><legend>Resultado</legend>
<div id="resultado"></div>
</fieldset>
</body>
Por último, la página que consulta los datos y los muestra es la siguiente: busqueda.php
Código PHP:
$busqueda=$_POST['busqueda'];
// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT * FROM alumnos WHERE nombre LIKE '%$busqueda%' OR direccion LIKE '%$busqueda%' LIMIT 10;";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT * , MATCH ( nombre, direccion) AGAINST ( '$busqueda' ) AS Score FROM alumnos WHERE MATCH ( nombre, direccion) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50;";
}
function limitarPalabras($cadena, $longitud, $elipsis = "..."){
$palabras = explode(' ', $cadena);
if (count($palabras) > $longitud)
return implode(' ', array_slice($palabras, 0, $longitud)) . $elipsis;
else
return $cadena;
}
?>
<table style="width:100%;" border="1px">
<tbody>
<tr>
<td class="nombre">Nombre</td>
<td class="direccion">Direccion</td>
</tr>
<?php
$result=mysql_query($cadbusca, $con);
$i=1;
while ($row = mysql_fetch_array($result)){
echo "
<tr>
<td class=\"nombre\">".$row[nombre]."</td>
<td class=\"direccion\">".limitarPalabras($row[direccion],20)."</td>
</tr>";
$i++;
}
}
?>
</tbody>
</table>
Bien. hasta aquí funciona todo más o menos. mis preguntas ahora serían:
1.- ¿cómo hago para que si no existen datos con los criterios de búsqueda aparezca que no existen datos?
2.- ¿cómo hago para meter un mensaje que diga se han encontrado "x" resultados con esos criterios de búsqueda?
a ver si me echáis un cable. gracias