Jorge Vallejo Blog

Blog del creativo, ilustrador y profesor de videojuegos Jorge Vallejo


Voy a comentaros las multiples ventajas que posee la unión de php y javacript y como utilizarlo en un ejemplo practico.Queremos crear una validación de email , en un formulario de registro donde ademas, resulta que el campo email , es el nombre de usuario, por lo tanto tendremos que comprobar que :
a) No existe ningun usuario con dicho email.Estan comprobaciones podrian hacerse enviando dicha informacion a una pagina php para que nos haga la consulta a base de datos y nos devuelva si ese email existe o no, pero como php funciona del lado del servidor al enviarle la variable y volver al formulario perderemos los datos, lo que da como resultado el molesto formulario vacio, y la mala cara del usurio que tiene que volver a rellenarlo todo.Es por este motivo que yo me he decantado por una segunda solucion:
Al principio de la pagina en el creamos nuestro script de javascript

<?php
$emails=mysql_query(“SELECT email FROM usuarios”, $link);
?>
var totalemails =
var arrayemails = new Array(totalemails);

<?php
if($row_email=mysql_fetch_array($emails)){
$j=0;
do{

echo “arrayemails[".$j."]= ‘”.$row_email["email"].”‘\n”;

$j++;
}while($row_email=mysql_fetch_array($emails));
}
?>

Como se puede observar hay una mezcla de los dos lengujes javascript y php.Lo primero que hacemos es una consulta a nuestra base de datos, y extraemos todos los emails, estos los metemos en un array de javascript mucho ojo , por que hay poner el \n , para que nos tome bien los elementos.Despues cuando queramos verificar en el evento onclick de nuestro boton de formulario llamamos a la funcion javascript que comprobora que todo es correcto, y alli meteremos el siguiente codigo:
for(i=0; i<totalemails; i++){

if(arrayemails[i]==formulario.email.value){
ok=false;
alert(“Ese email ya existe como usuario registrado”);
break;

}

Como tenemos la lista con todos los emails , se puede comprobar varias veces sin necesidad de reenviar.

Leave a Reply

Your email address will not be published. Required fields are marked *