Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/02/2007, 11:46
makeitslow
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: autocompletar....

Existe codigo en AJAX que ya lo postearon por ahi y yo lo utilice y esta barbaro. Son 2 Archivos unicamente que tienes que utilizarlos, un JS y un PHP los tienes que tener en el mismo lugar de donde tendras tu PHP con campos de texto que quieres autocompletar y solo llamas a sus funciones de dichos archivos.

Estos son 3:

(Tienes que grabarlos con sus mismos nombres)

El primero: INDEX_PROCESO.PHP

Código PHP:
<?php
function validaIngreso($parametro)
{
    
// Funcion utilizada para validar el dato a ingresar recibido por GET
    
$parametro=trim($parametro);
    
    if(
eregi("^[a-zA-Z0-9.@ ]{4,40}$"$parametro)) return TRUE;
    else return 
FALSE;
}

function 
validaBusqueda($parametro)
{
    
// Funcion para validar la cadena de busqueda de la lista desplegable
    
if(eregi("^[a-zA-Z0-9.@ ]{2,40}$"$parametro)) return TRUE;
    else return 
FALSE;
}

if(
$_POST["ingreso"])
{
    
$valor=$_POST["ingreso"];
    if(
validaIngreso($valor))
    {
        
$coneccion=mysql_connect("localhost""root""") or die(mysql_error());
        
mysql_select_db("ajax"$coneccion) or die(mysql_error());
        
        
$consulta=mysql_query("SELECT COUNT(*) FROM autocompletador") or die(mysql_error());
        
$registro=mysql_fetch_row($consulta);

        if(
$registro[0]>=600) { echo "Hay demasiados registros en la Base de Datos"; die(); }
        
        
$consulta=mysql_query("SELECT * FROM autocompletador WHERE nombre='$valor'") or die(mysql_error());
        
$registro=mysql_fetch_row($consulta);
        
        if(
$registro) { echo "Ya existe tu nombre en la Base de Datos"; }
        else
        {
            
mysql_query("INSERT into autocompletador (nombre) VALUES ('$valor')");
            echo 
"Tu nombre ha sido ingresado";
        }
        
mysql_close($coneccion);
    }
}
if(
$_POST["busqueda"])
{
    
$valor=$_POST["busqueda"];
    if(
validaBusqueda($valor))
    {
        
$coneccion=mysql_connect("localhost""root""") or die(mysql_error());
        
mysql_select_db("ajax"$coneccion) or die(mysql_error());
        
        
//$consulta=mysql_query("SELECT nombre FROM autocompletador WHERE MATCH(nombre) AGAINST('".$valor."*' IN BOOLEAN MODE) LIMIT 0, 22") or die(mysql_error());
        
$consulta=mysql_query("SELECT nombre FROM autocompletador WHERE nombre LIKE '".$valor."%' LIMIT 0, 22");
        
        
mysql_close($coneccion);
        
        
$cantidad=mysql_num_rows($consulta);
        if(
$cantidad==0)
        {
            
/* 0: no se vuelve por mas resultados
            vacio: cadena a mostrar, en este caso no se muestra nada */
            
echo "0&vacio";
        }
        else
        {
            if(
$cantidad>20) echo "1&"
            else echo 
"0&";
    
            
$cantidad=1;
            while((
$registro=mysql_fetch_row($consulta)) && $cantidad<=20)
            {
                echo 
"<div onClick=\"clickLista(this);\" onMouseOver=\"mouseDentro(this);\">".$registro[0]."</div>";
                
// Muestro solo 20 resultados de los 22 obtenidos
                
$cantidad++;
            }
        }
    }
}
?>


Para esto necesitas en tu base de datos una tabla AUTOCOMPLETADOR:


Código:
CREATE TABLE `autocompletador` (
  `id` int(5) NOT NULL auto_increment,
  `nombre` varchar(102) NOT NULL default '',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `nombre` (`nombre`)
) TYPE=MyISAM;
Este código fuente es de libre utilización y modificación bajo la siguiente licencia:
http://creativecommons.org/licenses/by-nc-sa/2.5/
Puedes distribuir estos scripts o colocarlos en tu Sitio siempre y cuando no elimines estos
comentarios y la licencia expuesta sea respetada.

Mas ejemplos y material sobre AJAX en: http://www.formatoweb.com.ar/ajax
Cualquier sugerencia, crítica o comentario son bienvenidos.
Contacto: [email protected]

Última edición por makeitslow; 03/03/2007 a las 21:37