buenas otra vez
 
Mirate este ejemplo 
index.php   
Código php:
Ver original<style>
   TH {font-size: 10pt; color: white; font-weight: bold; background: #4682B4; text-align: left; padding-right: 1em; font-family: Consolas, “Nimbus Mono L”, “Andale Mono”, “Courier New”, Courier;}
   TH.simple {font-size: 10pt; color: white; font-weight: bold; background: none; text-align: left; font-family: Consolas, “Nimbus Mono L”, “Andale Mono”, “Courier New”, Courier;}
   TD {font-family: arial,verdana,arial;font-size: 10pt;}
   TR.claro {/*heght:12x;*/ font-size: 8pt; background: #ECECEC; cursor:default;}
   TR.oscuro {/*heght:12x;*/ font-size: 8pt; background: #CCCCCC; cursor:default;}
</style>
<script>
var proceso_ajax= null;
 
//Funcion que crea el objeto ajax
function objetoAjax(){
    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 buscaMail(obj,evt,page) {
  keycode = (evt.keyCode==0) ? evt.which : evt.keyCode;
  if (keycode!=8 && keycode!=13) {
    document.getElementById('rowAyuda').style.display='table-row';
      cadena=obj.value  + String.fromCharCode(keycode);
      divcontenido = document.getElementById('panelAyuda');
      if( proceso_ajax == null ) {
            proceso_ajax = new objetoAjax();
      }
 
      if( proceso_ajax.readyState != 4 || proceso_ajax.readyState != 0) {
              proceso_ajax.abort();
      }
      proceso_ajax.open("POST", page+'?cadena='+cadena, true);
      proceso_ajax.onreadystatechange=function() {
        if (proceso_ajax.readyState==4) {
            divcontenido.innerHTML = proceso_ajax.responseText;
        }
      }
      proceso_ajax.send(null);
  }else if (keycode==8){
      obj.value="";
 
      if( proceso_ajax.readyState != 4 || proceso_ajax.readyState != 0) {
              proceso_ajax.abort();
      }
      document.getElementById('email').value='';
      document.getElementById('firstname').value='';
      document.getElementById('lastname').value='';
      document.getElementById('phone').value='';
 
      document.getElementById('panelAyuda').innetHTML='';
      document.getElementById('rowAyuda').style.display='none';
 
  }
}
 
function mandaDatos(email,firstname,lastname,phone) {
  document.getElementById('email').value=email
  document.getElementById('firstname').value=firstname;
  document.getElementById('lastname').value=lastname;
  document.getElementById('phone').value=phone;
  document.getElementById('panelAyuda').innetHTML='';
  document.getElementById('rowAyuda').style.display='none';
}
 
 
</script>
 
<TABLE>
  <TR>
    <TD width="100%" colspan="3">
      <b
>E
-mail:</b
> 
; 
;<i
>(Introduce caracteres a buscar
, busca si esta contenido
)</i
>     </TD>
  </TR>
  <TR>
    <TD width="100%" colspan="3">
      <input type="text" id="email" name="email" SIZE="20" MAXLENGTH="128" onkeypress="buscaMail(this, event, 'buscaMail.php');" autocomplete="off"/>
    </TD>
  </TR>
  <TR id="rowAyuda" style="display:none;">
    <TD width="100%" colspan="3" id="panelAyuda">
    </TD>
  </TR>
  <TR>
    <TD>
      <b>firstname</b>
    </TD>
    <TD>
      <b>lastname</b>
    </TD>
    <TD>
      <b>phone</b>
    </TD>
  </TR>
  <TR>
    <TD>
      <input type="text" id="firstname" name="firstname" SIZE="20" MAXLENGTH="32" READONLY autocomplete="off"/>
    </TD>
    <TD>
      <input type="text" id="lastname" name="lastname" SIZE="20" MAXLENGTH="32" READONLY autocomplete="off"/>
    </TD>
    <TD>
      <input type="text" id="phone" name="phone" SIZE="20" MAXLENGTH="24" READONLY autocomplete="off"/>
    </TD>
  </TR>
</TABLE>
  
  
buscaMail.php   
Código php:
Ver original<?PHP
header('Content-Type: text/xml; charset=ISO-8859-1');  
$conexion = mysql_connect($tuHost,$tuUser,$tuPas) or 
die ("No se puede conectar con el servidor");  
 
$sql="SELECT * FROM ost_clients WHERE email like '%".$_REQUEST['cadena']."%'";
 
 
 
if ($nfilas>0){
 
print ("\t\t<TABLE style=\"width:100%\" cellspacing=\"1px\" cellpadding=\"0px\">\n");
?>
 
<TH width="10%">
<?PHP print(str_replace(" "," ",'email')) ;?></TH>
<TH width="40%">
<?PHP print(str_replace(" "," ",'firstname')) ;?></TH>
<TH width="25%">
<?PHP print(str_replace(" "," ",'lastaname')) ;?></TH>
<TH width="25%">
<?PHP print(str_replace(" "," ",'phone')) ;?></TH>
 
<?PHP
$i=0;
  if($i%2 == 0) {
    $tono = " CLASS = \"oscuro\"";
    $tonoOut = "'#CCCCCC'";
  }
  else {
    $tono = " CLASS = \"claro\"";
    $tonoOut = "'#ECECEC'";
  }
 
  print ("\t\t\t<TR" . $tono ." onMouseOver = \" javascript: this.style.backgroundColor='#c6d6fd';\" onMouseOut = \" javascript:this.style.backgroundColor=" . $tonoOut . ";\" ondblclick=\" javascript:mandaDatos('".$resultado['email']."','".str_replace("'","\'",$resultado['firstname'])."','".str_replace("'","\'",$resultado['lastname'])."','".$resultado['phone']."') ;\">\n");  
  print ("\t\t\t\t<TD align=\"left\">" . $email . "</TD>\n");
  print ("\t\t\t\t<TD align=\"left\">".$resultado['firstname']."</TD>\n");
  print ("\t\t\t\t<TD align=\"left\">".$resultado['lastname']."</TD>\n");
  print ("\t\t\t\t<TD align=\"left\">".$resultado['phone']."</TD>\n");
 
  print ("\t\t\t</TR>\n");
  $i++;
}
print ("\t\t</TABLE>\n");
}else{
echo "No hay resultados";
}
?>
  
Prueba y a ver si te puede servir. 
Piensa que deberías paginar los resultados, es decir, p.e. sacar las 10 primeras coincidencias y crearte un paginador con el que fueras actualizado la tabla de resultados segun vas avanzando páginas... 
Ya dirás algo