en internet encontre los siguientes codigos:
comprobar_disponibilidad_de_apodo.php
Código PHP:
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>AJAX, Ejemplos: Comprobar la disponibilidad/existencia de un apodo - ejemplo</title>
<link rel="stylesheet" type="text/css" href="comprobar_disponibilidad_de_apodo.css">
<script type="text/javascript" src="comprobar_disponibilidad_de_apodo.js"></script>
</head>
<body>
<div id="demo" style="width:600px;">
<div id="demoDer">
<input type="text" id="verificacion">
<button type="button" id="botonVerificacion" onclick="nuevoEvento('verificacion')">Comprobar</button>
</div>
<div id="demoIzq">
<input type="text" id="ingreso">
<button type="button" id="botonIngreso" onclick="nuevoEvento('ingreso')">Ingresar</button>
</div>
<div class="mensaje" id="error"></div>
</div>
</body>
</html>
Código PHP:
function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function eliminaEspacios(cadena)
{
// Funcion equivalente a trim en PHP
var x=0, y=cadena.length-1;
while(cadena.charAt(x)==" ") x++;
while(cadena.charAt(y)==" ") y--;
return cadena.substr(x, y-x+1);
}
function validaIngreso(valor)
{
/* Funcion encargada de validar lo ingresado por el usuario. Se devuelve TRUE en caso de ser
valido, FALSE en caso contrario */
var reg=/(^[a-zA-Z0-9.@ ]{4,40}$)/;
if(reg.test(valor)) return true;
else return false;
}
function nuevoEvento(evento)
{
// Obtengo el div donde se mostraran las advertencias y errores
var divMensaje=document.getElementById("error");
/* Dependiendo de cual sea el evento que ejecuto esta funcion (ingreso o verificacion) se setean
distintas variables */
if(evento=="ingreso")
{
var input=document.getElementById("ingreso");
// Boton presionado
var boton=document.getElementById("botonIngreso");
// Valor ingresado por el usuario
var valor=input.value;
// Texto a colocar en el input mientras se esta cargando la respuesta del servidor
var textoAccion="Ingresando...";
}
else
{
var input=document.getElementById("verificacion");
// Boton presionado
var boton=document.getElementById("botonVerificacion");
// Valor ingresado por el usuario
var valor=input.value;
// Texto a colocar en el input mientras se esta cargando la respuesta del servidor
var textoAccion="Comprobando...";
}
// Elimino espacios por delante y detras de lo ingresado por el usuario
valor=eliminaEspacios(valor);
// Si el ingreso es invalido coloco un mensaje de error en la capa correspondiente
if(!validaIngreso(valor))
{
divMensaje.innerHTML="El texto ingresado contiene caracteres o longitud inválida";
}
else
{
// Deshabilito inputs y botones para evitar dobles ingresos
boton.disabled=true; input.disabled=true;
input.value=textoAccion;
// Creo la conexion con el servidor y le envio la variable evento (que le indica si debe ingresar o verificar) y el dato a utilizar
var ajax=nuevoAjax();
ajax.open("POST", "comprobar_disponibilidad_de_apodo_proceso.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(evento+"="+valor);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
// Habilito nuevamente botones e inputs
input.value="";
boton.disabled=false; input.disabled=false;
// Muestro el mensaje enviado desde el servidor
divMensaje.innerHTML=ajax.responseText;
}
}
}
}
comprobar_disponibilidad_de_apodo_proceso.php
Código PHP:
<?php
include 'conexion.php';
function validaIngreso($valor)
{
// Funcion utilizada para validar el dato a ingresar recibido por POST
if(eregi("^[a-zA-Z0-9.@ ]{4,40}$", $valor)) return TRUE;
else return FALSE;
}
function verificaExistencia($apodo)
{
/* Funcion encargada de verificar la existencia del apodo recibido en base de datos.
Devuelve TRUE si el apodo existe, FALSE de lo contrario */
$consulta=mysql_query("SELECT id FROM apodos WHERE apodo='$apodo'") or die(mysql_error());
$registro=mysql_fetch_row($consulta);
if(!empty($registro)) return TRUE;
else return FALSE;
}
if(isset($_POST["ingreso"]))
{
// Quito espacios en blanco al comienzo y fin de la cadena
$valor=trim($_POST["ingreso"]);
// Si el valor recibido es valido...
if(validaIngreso($valor))
{
conectar();
$consulta=mysql_query("SELECT COUNT(*) FROM apodos") or die(mysql_error());
$registro=mysql_fetch_row($consulta);
// Verifico que la base de datos no rebase los 600 registros (numero arbitrario)
if($registro[0]>=600) { echo "Hay demasiados registros en la Base de Datos"; die(); }
// Si el apodo ya existe en base de datos...
if(verificaExistencia($valor)) echo "Tu apodo ya existe en la base de datos";
else
{
// Ingreso el nuevo apodo
mysql_query("INSERT INTO apodos (apodo) VALUES ('$valor')") or die(mysql_error());
echo "Tu apodo ha sido ingresado";
}
desconectar();
}
}
elseif(isset($_POST["verificacion"]))
{
// Quito espacios en blanco al comienzo y fin de la cadena
$valor=trim($_POST["verificacion"]);
// Si el valor recibido es valido...
if(validaIngreso($valor))
{
conectar();
// Si el apodo ya existe en base de datos...
if(verificaExistencia($valor)) echo "Tu apodo ya existe en la base de datos";
else echo "Apodo disponible";
desconectar();
}
}
?>
desde ya muchas gracias